Последние темы


tmCatalog и fenom

  • Вопрос, скорее всего, Андрею, как разработчику дополнения, но если еще кто-то подскажет - будут рад.

    Решил перевести магазин на шаблонизатор fenom, т.к. увеличивается скорость работы сайта. Все шло хорошо, пока не столкнулся с вызовом [[!tmCatalog]]. Если его вызывать как тег модх, то парсер срабатывает нормально, все карточки товаров на странице выводит корректно. Проблемы начинаются, если начать фильтровать или менять количество товаров на странице (все через ajax). Карточки товара в каталоге не обрабатываются парсером и вместо названия, цены и т.д. вылазят {$pagetitle}, {$price}.

    В документации есть раздел на эту тему: https://docs.modx.pro/components/pdotools/parser#Заполнение-плейсхолдеров,

    Есть вот такой ответ: https://modx.pro/help/6356/#comment-45187

    Сделал как написано. Наверху шаблона прописал переменную
    {set $tmcatalog = $_modx->runSnippet('!tmCatalog')}

    В месте вывода пишу
    {$tmcatalog}
    и сразу в карточках товара получаю {$pagetitle}, {$price}.

    Я не программист, но предполагаю, что нужно еще как-то предварительно вызвать getProducts, оберткой которого является tmCatalog, чтобы парсер сперва его отработал?

    Помогите, пожалуйста, решить данный вопрос. Думаю, что многим в дальнейшем это поможет.

    P.S. модх и все дополнения обновлены до актуальных версий.

  • Для увеличения производительности лучше переведите сайт на PHP7.
    Где можно увидеть сравнение скорости с феномом и без?

    Обновлено
    Нашел сравнение на странице по вашей ссылке. Но чанки очень простые. Нужен тест со сложными чанками.

  • @Andchir В цифрах - не знаю. Есть вот такой пример - https://modx.pro/development/7162-example-fenom/.

    Я начал его использовать, потому что не смог выгрузить обычным способом товары для Яндекс.Маркета в один файл. Банально не хватило времени выполнения скрипта (120 сек.). Fenom с этим количеством справился. После чего задумался о том, чтобы полностью перевести сайт на него. Быстрее и синтаксис приятнее стандартного

  • Если я откажусь от стандартного шаблонизатора MODX, то шаблоны будут на чистом PHP. Очень не нравится мне такое:

    {var $introtext = $_modx->runSnippet('kavichki', ['input' => $introtext])}
    {var $pagetitle = $_modx->runSnippet('kavichki', ['input' => $pagetitle])}
    {var $longtitle = $_modx->runSnippet('kavichki', ['input' => $longtitle])}
    {var $image = $_modx->runSnippet('phpthumbon', ['input' => $_pls['tv.image'], 'options' => '&w=340&h=420&q=50&far=1&bg=FFFFFF&fltr[]=wmi|/assets/templates/images/watermark2.png|C|80|0|0|0'])}
    {var $icons = $_modx->runSnippet('productIcons', ['input' => $_pls['tv.tags']])}
    {var $price = $_modx->runSnippet('umnojit-na-parenta', ['price' => $_pls['tv.price'], 'parent' => $parent])}
    

    А вот тоже самое на чистом PHP:

    <?php
    $introtext = $modx->runSnippet('kavichki', ['input' => $introtext]);
    $pagetitle = $modx->runSnippet('kavichki', ['input' => $pagetitle]);
    $longtitle = $modx->runSnippet('kavichki', ['input' => $longtitle]);
    $image = $modx->runSnippet('phpthumbon', ['input' => $_pls['tv.image'], 'options' => '&w=340&h=420&q=50&far=1&bg=FFFFFF&fltr[]=wmi|/assets/templates/images/watermark2.png|C|80|0|0|0']);
    $icons = $modx->runSnippet('productIcons', ['input' => $_pls['tv.tags']]);
    $price = $modx->runSnippet('umnojit-na-parenta', ['price' => $_pls['tv.price'], 'parent' => $parent]);
    ?>
    

    Даже меньше кода получилось Извиняюсь за оффтоп. А по вопросу я не знаю, т.к. с подобной задачей не сталкивался.

 

Последние комментарии

  • Z

    Спасибо, действительно проще создать отдельно.

    Читать далее
  • Но проблема в том, что эта старая цена "дублируется" в плесхолдер "Дополнительных услуг" - [[+addit_data]].

    Можно не использовать [[+addit_data]], а выводить параметры по-отдельности.

    Цитата из документации:

    [[+shk_любой доп.параметр]] - любой доп. параметр, выбранный при добавлении товара в корзину (из [[+addit_data]]), например [[+shk_param1]].
    Если параметры сделаны в виде чекбоксов, то чтобы вывести отдельно каждый из них, нужно добавлять индекс (номер от нуля) для параметров следующих за первым.
    Пример: [[+shk_param1]], [[+shk_param1_1]], [[+shk_param1_2]] ...
    [[+shk_любой доп.параметр_price]] - цена доп.параметра. Пример: [[+shk_param1_price]].

    Читать далее
  • Z

    Доброго времени суток. Не могу разобраться, как передать данные migx-поля в корзину в плейсхолдер без "дублирования" в [[+addit_data]]
    Суть в чем: У меня есть 2 цены у товара (со скидкой и без скидки) Форма для отправки в корзину:

    <form action="[[~[[*resource_id]]? &scheme=`abs`]][[*alias]].html" method="post"> <input type="hidden" name="shk-id" value="[[*id]]" /> <input type="hidden" name="shk-name" value="[[*pagetitle]]" /> <input type="hidden" name="price_old__[[*id]]__add" value="[[*price_old]]" /> <input type="hidden" name="shk-count" value="1" /> <div class="product-price"> Цена: <span class="shk-price">[[!*price:shk_curr_rate:num_format]]</span> Старая цена - <span class="shk-price-old">[[+price_old]]</span> [[!+shk_currency]] </div> <div class="padding-lr-30"> <h5>Дополнительные услуги</h5> [[*param1]] </div> <div class="product-price"> <button class="btn btn-lg btn-primary" type="submit" class="shk-but">В корзину</button> </div> </form>

    Данные со "старой ценой" в корзину попадают нормально и выводится в нужном месте в плейсхолдере:
    [[+shk_price_old]]
    Но проблема в том, что эта старая цена "дублируется" в плесхолдер "Дополнительных услуг" - [[+addit_data]]. Как сделать чтобы старая цена не выводилась в [[+addit_data]]? Или может я как то не правильно передаю MIGX-параметр в корзину ? Заранее спасибо.

    Читать далее
  • Фотографии, как я понял, это второй вопрос. Я по нему пока ничего не отвечал и не просил информации. Это не отменяет того, что в вашем конфиге есть ошибка, о которой я писал выше. Не нужно задавать разные вопросы в одной теме, чтобы не было путаницы.
    http://forum.modx-shopkeeper.ru/topic/15/рекомендации-по-оформлению-темы-с-вопросом

    Читать далее