Дмитрий

Дмитрий

Был в сети 23 октября 2024, 23:01
Заказы не принимаю
Ох, парни, это ппц! Ну сколько раз себе говорил: Дима, б%%, нет никакой магии! Если что-то ДОЛЖНО работать, но не работает, значит ты что-то пропи%%%глазил! Ищи!
Но здесь реально было странно — ну не отрабатывает getCollection при вызове из консоли хоть тресни! Ну магия же, да? Короче начал по строчке разбираться и щито би ви думали?!

Виновник торжества:

strtotime(date('Y-m-d'))

а именно ДРУГОЙ! ЧАСОВОЙ! ПОЯС! НА! СЕРВЕРЕ!

Соответственно условие

'publishedon:>' => strtotime(date('Y-m-d'))

из браузера выполнялось, так как на сайте пояс установлен Europe/Moscow, а на сервере мать его UTC!
И из-за этой разницы при вызове срипта в консоли ничего не находилось и соотв getCollection возвращал ноль ресурсов! Боги! Так протупить!

Фейспалм!

Да, безусловно можно и так (я пока так собственно и сделал), но все же хочется сделать это через фильтр, т.к. с pdoMenu, провалившись в подраздел это надо потом возвращаться обратно. Т.е. это надо делать дополнительный элемент интерфейса «Вернуться на раздел вверх» или что-то другое придумывать… Это не очень удобно. Гораздо проще выбрать под-под-под раздел в фильтре.
Просто в принципе архитектурно не очень понятно, почему mFilter2 в фильтре категорий видит только на глубину уровня ближайших дочерних разделов. Например тот же pdoMenu имеет параметр level, который это регулирует, а mFilter2 изначально жестко создан с ограничением глубины. При этом, что важно, товары он видит глубоко. Т.е. товары из приведенной мной структуры в под-под-под разделе «Короткие» он увидит. Имею ввиду, например, фильтр по размерам — он видит все размеры из таких глубоко вложенных товаров. А фильтр по Категориям уже нет.
Решил задачу переопределив метод построения фильтра buildParentsFilter, но все равно есть чувство, что это можно сделать по другому, типа каким-то параметром в сниппете. Если кто-то знает, прям очень буду благодарен если подскажет!
Нет, parent:parents не подойдет, т.к. этот фильтр выводит имена двух родителей, через разделитель. Т.е. к примеру если товар находится в категории Рубашки, верхней категории Одежда, то этот фильтры выведет «Одежда\Рубашки» только и всего. Но по сути это ничего не изменит — в фильтре по прежнему будут выводиться в том числе НЕ родительские категории товаров.
Возможно я неправильно сформулировал, имелось ввиду, что фильтр по категориям, это фильтр по родителям. В доке об этом прямо написано, что
[[!mFilter2?
    &filters=`
        parent:categories
    `
]]
выводит имя непосредственного РОДИТЕЛЯ.
А если мы зайдем на сам сайт минишопа в Категорию 3, то увидим в фильтре «Категория» вывод НЕ РОДИТЕЛЬСКИХ категорий товаров для данной категории. Т.е. «Категория 1» и «Категория 2» — это НЕ родители для товаров Категории 3. Тогда что они делают в этом фильтре, если это фильтр для родителей? Поэтому главный вопрос — как вывести фильтр исключительно по родным родителям товаров?
Друзья, можете подсказать, а как обновить производителя товара? Все перепробовал — ничего не получается. В логи вообще никаких ошибок не падает. Делаю так:

$modx->runProcessor('resource/update', array(
    'id' => 123, 
    'class_key' => 'msProduct',
    'context_key' => 'web', 
    'vendor.name' => 'Nike'
    )
);

не работает (((
Привет из 2020 года: нужно к указанному правилу создать второе «Отображение настроек по умолчанию» — где Ограничивающее поле — это parent, значение — id родителя документов, где не должно выводиться нужное поле. Там снимаете чекбокс с нужного tv и теперь оно отображается только на странице из первого правила. У меня по крайней мере заработало только так.
Подскажите, пожалуйста, как правильно передать дату создания документа. Т.е. если нужно именно указать НЕ текущую дату. Прописываю

,'publishedon' => $next_date

где $next_date вида 21.07.15
Не получается, вставляется текущая дата и всё. Думал надо в UNIX формате указывать. Сделал, стали прописываться какие-то совершенно левые даты… Не пойму в чём дело.