Денис Усманов

Денис Усманов

С нами с 23 августа 2019; Место в рейтинге пользователей: #41
Денис Усманов
13 октября 2023, 10:45
0
Скорее всего, проблема тут:
&tplParentRow=`<li class="top-level__item"><a href="[[+link]]" class="top-level__link" [[+attributes]]>[[+pagetitle]]</a></li>[[+wrapper]]`
&tplParentRowHere=`<li class="top-level__item active top-level__[[+classnames]] "><a href="[[+link]]" class="top-level__link" [[+attributes]]>[[+pagetitle]]</a></li>[[+wrapper]]`
&tplParentRowActive=`<li class="top-level__item active top-level__[[+classnames]]"><a href="[[+link]]" class="top-level__link" [[+attributes]]>[[+pagetitle]]</a></li>[[+wrapper]]`

У Вас [[+wrapper]] за пределами пункта li, попробуйте заменить на:
&tplParentRow=`<li class="top-level__item"><a href="[[+link]]" class="top-level__link" [[+attributes]]>[[+pagetitle]]</a>[[+wrapper]]</li>`
&tplParentRowHere=`<li class="top-level__item active top-level__[[+classnames]] "><a href="[[+link]]" class="top-level__link" [[+attributes]]>[[+pagetitle]]</a>[[+wrapper]]</li>`
&tplParentRowActive=`<li class="top-level__item active top-level__[[+classnames]]"><a href="[[+link]]" class="top-level__link" [[+attributes]]>[[+pagetitle]]</a>[[+wrapper]]</li>`
Денис Усманов
13 октября 2023, 10:21
0
Покажите вызов pdoMenu то, а то не совсем понятно, что не так…
Денис Усманов
11 октября 2023, 16:38
0
Советую читать документацию) ну и заглянуть вот сюда
Денис Усманов
11 октября 2023, 16:24
0
Зачем писать сниппет, если достаточно просто передать ТВ поле в pdoMenu?

[[pdoMenu?
        &parents=`7`
        &level=`1`
        &includeTVs=`categoryicon`
        &tpl=`liTpl`
]]

liTpl:
<li [[+classes]]>
        <span class="menu-icon">
                <img src="[[+categoryicon:default=`assets/images/category/default.svg`]]" alt="Icon">
        </span>
        <a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a>
        [[+wrapper]]
</li>
Денис Усманов
05 октября 2023, 18:06
+1
А разве нельзя просто в renderChunk кинуть:
[[!pdoResources?
    &class=`msVendor`
    &where=`{'id':'[[+vendor]]'}`
    &tpl=`@INLINE [[+name]]`
]]
Денис Усманов
04 октября 2023, 14:03
+1
Добро пожаловать в мою статью)
Будут вопросы или сложности, пиши мне в телеграм, помогу обязательно!
Денис Усманов
03 октября 2023, 12:38
0
Таб — это понятно, когда сам пишешь, всё ровно. А если у тебя скопированный внешне код не ровный, выравнивать его табом быстро надоест…
Денис Усманов
02 октября 2023, 14:27
1
0
Дело в DKIM подписи…
1) Идёшь на biz.mail.ru
2) Добавляешь там новый проект (сайт) в админпанели
3) Меняешь DNS записи под mail.ru
4) После проверки DNS записей на biz.mail.ru, увидишь DKIM подпись, её тоже в DNS записи домена кидаешь
5) Ждёшь пару часов
6) Письма приходят! Профит!

P.S. В идеале, создать почтовый ящик на biz.mail.ru и через него, через SMTP отправлять письма
И вот тебе проверялка отправки писем: www.mail-tester.com/?lang=ru
Там исчерпывающе описывается, чего не хватает и, что можно улучшить.
Денис Усманов
01 октября 2023, 10:38
+1
Да, вчера столкнулся с такой проблемой на 1 проекте, решилось выдачей прав 777 на папку cache_image, прописанием этой папки в сис. настройках (почему то слетела) и очисткой кэша вручную. Не знаю, были ли какие то действия правильными или в целом нужными, но по крайней мере генерация превью в админке и на фронте заработала. В медиа источнике к сожалению, превью не отображаются местами, но это мне не мешает и заказчику не помешает тоже, ибо он будет грузить все изображения через MixedImage.
Ну и добавлю, что всё работает на phpThumbOn. И да, его я тоже переустанавливал на всякий случай.
Денис Усманов
02 августа 2023, 23:20
0
Вопрос возможно давно не актуальный, но вот решение:

<?php
switch ($modx->event->name) {
    case "msOnGetProductPrice":
        $returned = (array)$modx->getPlaceholder('_returned_price');
        if (!isset($returned['price'])) {
            return;
        }
        $id = $returned['id'];
        foreach (array_keys($options) as $k) {
            if (!empty($options[$k]) && is_array($options[$k])) {
                foreach ($options[$k] as $v) {
                    $q = $modx->newQuery('msopModification')
                        ->innerJoin('msopModificationOption', 'Option',
                            "Option.mid = msopModification.id AND Option.key = '{$k}' AND Option.value = '{$v}'")
                        ->select(array('price'))
                        ->where(array(
                            'msopModification.rid' => $id,
                            'msopModification.type' => 2,
                            'msopModification.active' => true,
                        ))
                        ;
                    if ($q->prepare() && $q->stmt->execute()) {
                        $price = $price - $q->stmt->fetchColumn();
                    }
                }
            }
        }
        $options = !empty($returned['msoptionsprice_options'])
            ? $returned['msoptionsprice_options']
            : (!empty($_REQUEST['options'])
                ? $_REQUEST['options']
                : array());
        $options = array_diff_key($options, array_flip(array('modifications', 'modification')));
        
        foreach (array_keys($options) as $k) {
            if (!empty($options[$k]) && is_array($options[$k])) {
                foreach ($options[$k] as $v) {
                    $q = $modx->newQuery('msopModification')
                        ->innerJoin('msopModificationOption', 'Option',
                            "Option.mid = msopModification.id AND Option.key = '{$k}' AND Option.value = '{$v}'")
                        ->select(array('price'))
                        ->where(array(
                            'msopModification.rid' => $id,
                            'msopModification.type' => 2,
                            'msopModification.active' => true,
                        ))
                        ;
                    if ($q->prepare() && $q->stmt->execute()) {
                        // $price = $price - $q->stmt->fetchColumn();
                        if ($price_add = $q->stmt->fetchColumn()) {
                            $price += $price_add;
                        }
                    }
                }
            }
        }
        $modx->event->returnedValues['price'] = $returned['price'] = $price;
        $modx->setPlaceholder('_returned_price', $returned);
        break;
}
Денис Усманов
19 июля 2023, 18:09
0
А при выводе если в pThumb добавить параметр ra=1 без фона?
Пример:
[[+icon:phpthumbon=`w=50&h=50&zc=0&f=png&ra=1`]]
Денис Усманов
02 июля 2023, 00:40
0
Да, об этом я косвенно упомянул в blockquote, в пункте 1.2)) Если не привязываться к ресурсам, то действительно, можно в отдельный пункт меню вынести управление объектами, такой вариант подходит например к «хранилищу документов» сайта. В общем, к чему то, что может быть общим для всех ресурсов…
Денис Усманов
01 июля 2023, 22:52
+1
Хм, твой комментарий наводит меня на мысли «А, что я буду делать через пару лет? Тоже работать над docs.modx.pro/modx.pro/modhost.pro?», я ведь уже не слабо так «прирос» к нашему сообществу, и останавливаться не собираюсь)
Денис Усманов
01 июля 2023, 22:45
0
А про MigxDB забыл) Мало информации по нему на modx.pro (
Денис Усманов
01 июля 2023, 20:21
+1
А всё потому что, в поиске по MigxDB находятся всего несколько внятных статей но и те, уже не совсем актуальны… Да и кейс подвернулся подходящий)
Денис Усманов
29 июня 2023, 12:05
+1
Используй MixedImage, там это работает и можно вкл./выкл. удаление файлов…
Денис Усманов
10 июня 2023, 22:56
0
Нужную длину записываемых данных
Денис Усманов
10 июня 2023, 22:51
0
В Длина/Значения укажите