Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 106 комментариев

Дима Касаткин
Дима Касаткин
На всякий случай, по теме: сегодня встретил размер папки кэша pdotools в 106gb. На сайте 3800 записей в таблице БД site_content и всего 125 товаров minishop2. Но есть фильтры и сложные чанки, хотя кода fenom в контенте нигде нет.

Может кому пригодится для ориентира по возможным размерам этой папки…

Решил отключить там настройку pdotools_fenom_cache, но cache_resource оставить включенной. На тестовых страницах замедления не заметил. Такой вот кейс.

pdoTools 2.13.2-pl под MODX 2.8.3
Павлик Мышкин
Павлик Мышкин
Спасибо за ответы, есть над чем подумать, действительно несколько нетривиальных вариантов, например в БД сделать в таблицу ms2_product_categories импорт записей product_id > category_id.
Надеялся что я просто не увидел встроенную функцию в минишоп, но увы.
Дима Касаткин
Дима Касаткин
вручную прощёлкать 300 товаров
Не обязательно :)

Если футболки размечены параметрами или опциями, и в них указаны, какие Черные, а какие Белые по признаку «цвет», и например С принтом или Без принта по признаку «тип», то удобнее создать отдельный шаблон «подборки товаров» и использовать его для страниц данного вида в паре с настроенными выборками через msProductsComposerSelection либо без него, если передать в вызов msProducts или mFilter через параметр &where или &tvFilters нужные данные для выборки иным способом (к примеру через ещё одну TV или опцию ms2)

MODX очень гибкий, всегда есть несколько решений. Даже если разметки характеристик у товаров нет, и прокликивать и размечать 1000 товаров не хочется то, хоть и не так точно и красиво, но всё-таки можно выбрать товары по названию через &where по маске «черн*» и «с принт*», а в случае недостаточной скорости — закэшировать всё это. И возможно, даже обновлять кэш в фоне через, например, scheduler
Павел Романов
Павел Романов
Так в них и выводите. В $category будет ID не родителя, а категории первого уровня.
То есть если у Вас так:…
  • Ракеты (1)
    • Подкатегория 1 (2)
      • Товар 1 (3)
      • Товар 2 (4)
      • Товар 3 (5)
      • Подкатегория 2 (6)
        • Товар 4 (7)
        • Товар 5 (8)

… то для всех подкатегорий и товаров $category будет 1 (ID Ракеты) вне зависимости от вложенности.
Павел Романов
Павел Романов
Для получения id верхней категории можно использовать pdoField, а дальше разводить. Если Ракеты, Арбузы, Магия находятся в корне (уровень указывается в topLevel), то так:
{var $category = 'pdoField' | snippet : ['topLevel' => 1, 'field' => 'id']}
{$category == 1}
    {include 'arbuzi'}
{elseif $category == 25}
    {include 'raketi'}
{elseif $category == 100}
    {include 'magic'}
{else}
{/if}
Артур Шевченко
Артур Шевченко
Вообще есть компонент ExtraFields который позволяет легко расширить модель ресурса и не использовать ТВ.

Так же можно написать свой модификатор, который будет получать на вход id родителя и id ресурса и проверять есть родитель в ответе метода $modx->getParentIds($rid). Есть два нюанса. Во-первых я не знаю есть ли такой метод в тройке. Во-вторых если построение карты ресурсов будет отключено в системных настройках, то работать модификатор перестанет.
Илья
Илья
Всем большое спасибо. Не знаю из-за чего изначально не заработало, может кэш не почистил, может еще что-то было, но в файле
/public_html/core/components/jevix/vendor/agelxnash/jevix/src/functions.php
поменял фигурные кавычки на квадратные и заработало. Стоит последняя версия php. Из плюсов еще заработало создание тикетов, раньше при кнопке сохранить просто зависало на сохранении, теперь заработало.