Всего 125 968 комментариев

Алексей Смирнов
09 марта 2022, 09:49
+1
Проверил fenom, к сожалению есть проблема в передачи параметров к феному.
Поэтому вариант с ним не сработает. (это учту в следующих выпусках).
А пока можно на MODX синтаксисе все сделать.
Для этого нужно в передающем параметре imgs Проверить наличие запятой.
Т.е. если есть ЗПТ, то это более 1й фото, если ЗПТ нет, то одно фото:
[[+imgs:contains=`,`:then=`ЗПТ`:else=`ТЧК`]]
Проверять естественно в чанке и там дописать разные выводы в самих условиях или используя разные чанки, например в чанке главном (по умолчанию это imgsPasteMigxGallery, но вы создайте свой, чтобы при обновлении не затерся поумолчанию) можно написать следующее:
[[$imgsSuperCunks[[+imgs:contains=`,`:then=``:else=`.one`]]]]
Таким образом у вас будет 1 чанк imgsSuperCunks — для более 1 фото.
imgsSuperCunks.one — для одной фотки.
Артур Шевченко
08 марта 2022, 23:02
+3
Вот мой код к которому обращается cron
<?php
$snippet = $argv[1] ?: $_GET['snippet'];
$allowSnippets = array('modstoreParser', 'updatePrice', 'bussinessCenterParser'); // массив разрешённых сниппетов, нужно потому что скрипт доступен с фронта и принимает get-параметры.
if(in_array($snippet, $allowSnippets)){
    require_once 'document/root/path/public_html/config.core.php'; // заменить на свой путь до корня сайта
    require_once MODX_CORE_PATH.'model/modx/modx.class.php';
    $modx = new modX();
    $modx->initialize('web');
    $modx->getService('error','error.modError', '', '');
    echo $modx->runSnippet($snippet);
}
Как создавать задачи для cron можно загуглить поискать в Яндексе.
А как должен выглядеть сниппет, я могу только предполагать. Учитывая, что есть «текстовые цены», наверное нужно будет использовать регулярные выражения. Если в самом простом варианте, без регулярок и модификаций, только основная цена товара, то примерно так
<?php
$coefficient = $modx->getOption('coefficient'); // получаем системную настройку, которую предварительно создали
if($coefficient){
    $products = $modx->getIterator('msProductData'); // получаем все товары  
    foreach($products as $product){
        $oldPrice =  $product->get('price');
        $product->set('price', $price*$coefficient);
        $product->save();
    }
}
Артур Шевченко
08 марта 2022, 21:29
+1
Самый простой способ, наверно, где-то в админке сделать коэффициент и чтобы все существующие цены на него умножались.
Да. И добавь к этому задание в планировщике и сниппет который будет цены менять.
Николай Савин
08 марта 2022, 18:36
0
За заполнение тех или иных таблиц отвечают резолверы. Пишите новый резолвер. Добавлять его никуда не нужно. Они запускаются все подряд при сканировании каталога. Внутри резолвера пишите такой же код заполнения данными, как вы бы писали в админке MODX в консоли.
Для примера таких резолверов можете посмотреть исходный код популярных компонентов.
Stepan
08 марта 2022, 16:00
0
А как заполнить таблицу сразу во время установки дополнения?
Prihod
08 марта 2022, 15:53
0
Кнопку для сканирования в новую версию добавлю. Сейчас из консоли modx можно просто выполнить код

$staticelementslive = $modx->getService('staticelementslive', 'StaticElementsLive');
$staticelementslive->runProcessor('web/element/scan');
А вообще изначально задумка все это дело подружить с gulp в реальном времени создавать и перемещать элементы
Stepan
08 марта 2022, 15:32
0
Народ а как заполнить создаваемую страницу?
так называемый постинстал
Алексей Смирнов
08 марта 2022, 14:53
0
В тини редакторе есть возможность выбирать и чанк для вставки. В CKEditor с этим пока проблемно.
Алексей Смирнов
08 марта 2022, 14:29
0
Вы можете логику для одной фотки реализовать в этом же чанке. Особенно просто это сделать, если включен режим с феном на страницах. С феном это сделать проще всего.
Артур Шевченко
08 марта 2022, 13:01
0
Тогда как альтернативу могу предложить написать плагин на это событие и в нём обрабатывать тэги.
Валерий
08 марта 2022, 12:37
0
Это понятно, но у меня задача сделать так, чтобы ссылка, отображаемая в браузере была вида:
<a href="[[~145]][[+alias]]">[[+tag]]</a>
Но, при этом, компонент корректно обрабатывал вывод тега.
Делал на этом примере itchief.ru/modx/tagger#comment-1361
Артур Шевченко
08 марта 2022, 12:13
0
Я в написании правил для.htaccess не очень силён, но чтобы получить url вида vyvod-tegov/?tag=$1 редирект писать необязательно, можно сразу написать
<a href="[[~145]]?tag=[[+alias]]">[[+tag]]</a>
Николай Савин
08 марта 2022, 09:42
+2
Это уже сделано.
Илья Уткин
08 марта 2022, 05:10
+1
  • mscarthandler.class.php
  • msdeliveryhandler.class.php

  • msorderhandler.class.php
  • mspaymenthandler.class.php
В новой версии для таких файлов создан отдельный каталог.
В качестве идеи, как упростить обновление существующих магазинов. Где-то я такое видел, мне кажется логичным:

Можно добавить в новую версию файлы по старым путям, но в коде файлов делать просто include правильных файлов. И в комментариях пометить эти файлы как deprecated. А потом, в версии 3.1 или 3.2 убалить эти файлы. В итоге если человек обновлялся с версии 2.х до 3.0, у него файлы будут существовать и ничего не сломается, а на новых установках, начиная с 3.1 файлов deprecated не будет.
Артур Шевченко
07 марта 2022, 20:43
0
Вынес в отдельный метод. Ошибку самого запроса выносить не стал, потому как пользователь всё равно повлиять не её исправление не может.
Николай Савин
07 марта 2022, 20:06
0
Да, действительно Конфуз вышел. Поправил.
Ссылки Российские. Не уверен, что я теперь с них смогу что-то получить. Как и не каждый сможет собственно их использовать.
Если Кто хочет задонатить лично мне на Казахстанские реквизиты — дайте знать.
Андрей Шевяков
07 марта 2022, 19:09
0
Спасибо огромное! Куда задонатить на дальнейшее развитие?
Тут нет ссылок(((
Отправить донат с карты
Отправить донат на Яндекс. Деньги
Отправить донат на Qiwi
Дима Сайт old см. профиль
07 марта 2022, 17:24
0
1. Класс
2. Лучше уж пусть дубликат создаёт чем по названию сверяет. Было бы неприятно потерять код в случае нестыковок.

Вот бы ещё решение для однократного сканирования.
У меня вот разработка всегда на тестовой копии, и там я включу автосканирование. Сделал изменения, залил в гит.

А вот уже потом на продакшене сделал pull и в админке нажал бы кнопочку (ну и привязал ресурсы к новым шаблонам, если надо)

Если компонент не создает пункт меню с кнопочкой «просканировать», то может подскажешь быстрый способ создать её руками? Нет ли коннектора который можно пнуть чтобы он там провернул шестеренки под капотом ?)))

P.S. возможно мне стоило бы использовать gitify и он такое умеет, но я не использую(