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


Сниппет TvValueControl

  • TvValueControl - cниппет для более удобного управления выводом сообщений, при пустых значениях TV. Сниппет позволяет минимизировать на странице число условий с использованием модификаторов MODX. Так же может послужить примером для создания других сниппетов.

    Пример использования:

    [[TvValueControl?
    &tvNames=`mytv1==mytv2`
    &messages=`Message if empty first.==Message if empty second.`
    &ifAllEmpty=`Item is not available.`
    ]]
    

    В этом примере если значение TV с именем "mytv1" будет пустое или в нем будет установлено значение "0", то будет выводиться сообщение "Message if empty first.". И т.д. для всех, перечисленных TV. Если все TV пустые, то будут выведено сообщение "Item is not available.".
    "==" - разделитель для имен TV и сообщений.

    Кроме того, создается плейсхолдер [[+tvc_isAllEmpty]] со значениями "1" или "0", проверяя которые можно так же контроллировать вывод какого-то блока на странице.

    Пример:

    [[+tvc_isAllEmpty:is=`0`:then=`
    <div class="product-price">
    	<button class="btn btn-lg btn-primary" type="submit" class="shk-but">
    		Add to cart
    	</button>
    </div>
    `:else=``]]
    

    Не выводим кнопку, если все цены пустые или ровны нулю.

    Есть параметр &toPlaceholder, с помощью которого можно отправить вывод сниппета в плейсхолдер (нужно указать имя плейсхолдера).

    Код сниппета:

    <?php
    
    /*
    
    [[TvValueControl?
    &tvNames=`mytv1==mytv2`
    &messages=`Message if empty first.==Message if empty second.`
    &ifAllEmpty=`Item is not available.`
    ]]
    
    */
    
    $output = '';
    $tvNames = $modx->getOption('tvNames', $scriptProperties, '');
    $tvNames = explode('==', $tvNames);
    $messages = $modx->getOption('messages', $scriptProperties, '');
    $messages = explode('==', $messages);
    $ifAllEmpty = $modx->getOption('ifAllEmpty', $scriptProperties, '');
    $toPlaceholder = $modx->getOption('toPlaceholder', $scriptProperties, '');
    $emptyCount = 0;
    
    foreach($tvNames as $index => $tVName){
        $tvValue = $modx->resource->getTVValue(trim($tVName));
        if(empty($tvValue)){
            $output .= !empty($messages[$index]) ? $messages[$index] : '';
            $emptyCount++;
        }
    }
    
    if($emptyCount == count($tvNames)){
        $output = $ifAllEmpty;
    }
    
    if($toPlaceholder){
        $modx->setPlaceholder($toPlaceholder, $output);
        $output = '';
    }
    
    $modx->setPlaceholder('tvc_isAllEmpty', $emptyCount == count($tvNames) ? '1' : '0');
    
    return $output;
    
  • Спасибо, отличная вещь.

    В идеале нужно такое вот решение https://github.com/oo12/setPlaceholders
    Но с возможностью работать с migx и ресурсами Modx одновременно.

    Действительно в магазине описание товаров приходится выводить так

    Параметр 1: Значение 1
    Параметр 2: Значение 2
    ....
    Параметр 20: Значение 20

    Причем поле Параметр N берем от родителя/ресурс модх т.к. это в рамках категории одно и то же (например Емкость для категории жестких дисков), а значение берем от товаров (500 гб )/ ресурс migx.

    Если время появится, чтобы нормально за это сесть постараюсь сделать что-то такое, хоть и коряво))

 

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

  • M

    @Andchir , спасибо. Проблема и правда была в одном из плагинов, который на другом сайте нормально работает

    Читать далее
  • Что нового в Shopkeeper 4.0.3:

    Исправлено некорректное определение языка по умолчанию В настройках в админке скрываются пароли. Добавлена возможность загружать картинки для категорий. shopkeeper.js - добавлена функция updateProductsPrice() для поддержки текстовых полей для цены. Twig-функции contentList() и includeContent() вынесены в отдельный класс. Добавлено событие "order.before_create". Сортировка всех полей типа контента перетаскиванием. Автоматическое сохранение сортировки полей при сохранении типа контента (не нужно нажимать на отдельную кнопку). В интерфейсе админа добавлено поле поиска для списка Composer-пакетов.

    Скачать можно на главной странице https://modx-shopkeeper.ru/

    Читать далее
  • Вот этот плагин:
    0_1550334109280_screenshot_022.png

    Вроде по умолчанию он выключен. Надо включить. Но плагин работает только на редактирование товаров, при удалении он делалать ничего не будет. Только что проверил кнопку, всё работает корректно, фильтры удаляются и добавляются, когда нужно. Но нужно очищать корзину после удаления товаров (возможно баг).

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

    @Andchir Если нажимаю кнопочку "Обновить значения", то в фильтрах появляются как раз те самые удаленные значения фильтра.. Потом приходится Ручками выбирать эти удаленные значения.
    вот так выглядит Управление фильтрами когда удаляешь ручками: https://yadi.sk/i/_zw64CGkZ_sAYg
    А вот так выглядит когда просто нажимаешь "Обновить значения": https://yadi.sk/i/7WFbXC6xV5sQAw (красным выделено, то что приходится постоянно удалять

    Читать далее