Привет всем,
подскажите, пожалуйста, уже передумал различные идеи, не могу найти решение.
Есть список продукции.
Категория1(контейнер документов)
-товар 1(документ
-товар 2
...
-товар N
-архив(контейнер)
--товар1(документ, дочерний по отношению к архиву)
--товар2
...
--товарN
Я делаю страничку для "Категории1", которая выводит весь товар, за исключением архива (вывожу с помощью ditto).
Но мне надо вывести и архивные, но вывести надо линком сверху страницы.
Т.е. когда человек в Категории1, он может перейти на архив, ссылка на архив. Находясь в архиве, может перейти в "Категорию1".
Всё бы ничего, сделал бы статический линк, но Категорий - несколько и я хочу сделать чанк с динамическим выводом ссылки.
Я так думаю надо выводить с помощью Wayfinder, но как вывести только ссылки на Категорию и архив? Или лучше как-то реструкторизировать?
Подскажите, заранее благодарен.
Если указанная иерархия одинакова для всех групп товаров, можно отталкиваться от такой логики (все очень примерно):
1. Ищем дочерний контейнер для текущего документа
2. Если нашли, значит мы в Категории, возвращаем ссылку на найденный дочерний контейнер (архив)
3. Если дочернего контейнера нет, смотрим тип шаблона родительского документа, если он и есть шаблон Категорий, значит мы в архиве и возвращаем ссылку на родительский контейнер Категорий.
Функции, которые Вам понадобятся в сниппете (даю упрощенное описание, подробности смотрите в API): $modx->documentObject[] (массив с параметрами текущего документа, например родительский id можете получить через $modx->documentObject[’parent’]), $modx->makeUrl(id) (здесь id - id документа на который необходимо получить ссылку). $modx->getDocument(id) - возвращает массив значений для документа с указанным значением id.
Для того, чтобы помочь примерным кодом сниппета, мне необходимо хотя бы знать:
1. В категории возможен единственный контейнер (архив), либо могу быть другие контейнеры (если могут, как определяете архив, по названию документа?)
2. По Вашей логике в архиве, кроме товаров, возможно существование других контейнеров?
Добавить TV и в нем указывать по типу (да||нет). И можно сортировать по этому параметру.
@rolph а почему вы не хотите использовать TV, как советовал antey проще ведь гораздо?