Помогите состряпать условие для вывода в шапке
Добрый день всем!
Продолжаю делать интернет магазин на чудесном движке MODX
На сей раз запутался в условиях, что делать знаю, но как вычислить не в курсе
У меня есть две категории товаров
К примеру первая категория с ID 1
Вторая категория с ID 2
В них по 3-4 категории в каждой
Мне нужно выводить в шапке, в теге title в первой на всех подкатегориях и товарах слова «Купить [[longtitle]] в Москве»
Во всех подкатегориях и товарах второй «Заказать [[longtitle]] в Москве»
Нужно как-то определить главного родителя первой и составить *Главный:is=`1`:then=`Купить`
И определить главного родителя второй и составить *Главный:is=`2`:then=`Заказать`
Всю голову сломал.
Прошу вашей помощи друзья!
PS
Изначально сделал так
Продолжаю делать интернет магазин на чудесном движке MODX
На сей раз запутался в условиях, что делать знаю, но как вычислить не в курсе
У меня есть две категории товаров
К примеру первая категория с ID 1
Вторая категория с ID 2
В них по 3-4 категории в каждой
Мне нужно выводить в шапке, в теге title в первой на всех подкатегориях и товарах слова «Купить [[longtitle]] в Москве»
Во всех подкатегориях и товарах второй «Заказать [[longtitle]] в Москве»
Нужно как-то определить главного родителя первой и составить *Главный:is=`1`:then=`Купить`
И определить главного родителя второй и составить *Главный:is=`2`:then=`Заказать`
Всю голову сломал.
Прошу вашей помощи друзья!
PS
Изначально сделал так
[[*class_key:is=`msProduct`:or:is=`msCategory`:then=`Купить [[*longtitle]] по низкой цене [[++city]]`:else=`[[*longtitle]]`]]
Но оно разумеется идет для двух категорий. А первая категория у меня товары на минишопе, вторая услуги Комментарии: 2
Используйте сниппет pdoField.
Там есть параметр topLevel, который указывает уровень от корня сайта.
То есть при такой структуре:
Такой вызов в Товаре 1 (да и в любом ресурсе ниже Категории 1):
Соответственно, можно сделать условие:
Там есть параметр topLevel, который указывает уровень от корня сайта.
То есть при такой структуре:
Каталог (2)
Категория 1 (3)
Подкатегория 1 (15)
Товар 1 (4)
Категория 2 (5)
Товар 2 (6)
Такой вызов в Товаре 1 (да и в любом ресурсе ниже Категории 1):
[[pdoField? &topLevel=`2` &field=`id`]]
Выведет 3 (ID второго от корня ресурса).Соответственно, можно сделать условие:
[[pdoField:is=`3`:then=`Купить`:else=`Заказать`? &topLevel=`2` &field=`id`]] [[*longtitle]] по низкой цене
Сделал немного иначе
Вывел другим сниппетом
Вывел другим сниппетом
[[!getparents:is=`2`:then=`Купить [[*longtitle]] по низкой цене`]]
Ниже код самого сниппета<?php
if (!isset($modx)) return '';
$top = isset($top) && intval($top) ? $top : 0;
$id= isset($id) && intval($id) ? intval($id) : $modx->resource->get('id');
$topLevel= isset($topLevel) && intval($topLevel) ? intval($topLevel) : 0;
if ($id && $id != $top) {
$pid = $id;
$pids = $modx->getParentIds($id);
if (!$topLevel || count($pids) >= $topLevel) {
while ($parentIds= $modx->getParentIds($id, 1)) {
$pid = array_pop($parentIds);
if ($pid == $top) {
break;
}
$id = $pid;
$parentIds = $modx->getParentIds($id);
if ($topLevel && count($parentIds) < $topLevel) {
break;
}
}
}
}
return $id;
Хотя через PdoTools тоже можно, в принципе он аналогичен этому
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.