контакты
«

Привязка страниц через TV

»
Главная » Работа с TV

В процессе работы над одним проектом клиенту понадобилось в администраторской части сайта указывать ссылки на другие страницы сайта. Т.е при просмотре сайта вы читаете какую-то страницу, а внизу у вас список других страниц по клику на которые вы собственно на них и переходите. Этот список формирует менеджер (администратор) и изначально он не известен т.к. страницы будут добовляться в процессе жизни сайта, будут переименовываться, перемещаться и пр. и всё это не должно повлиять на функционирование сайта в будущем. Процесс "указания" должен быть простым и наиболее подходящее решение - чекбоксы (не заставлять же пользователя писать HTML теги ссылок руками). Прицепить чекбоксы, впрочем как и любые другие доп. параметры к странице можно только с помощью TV.

Исходные данные: имеем некую папку (контейнер) внутри которой находится список дочерних документов ссылки на которые нам надо вывести на других страницах сайта. На каких именно страницах их выводить определяет менеджер простым указанием через chekbox.

Итак, создаём TV к примеру с именем "attachpage". Тип ввода - check box. Визуальный компонент - delimeteв list со значением запятая (,) без скобок. В поле возможные значения вставляем след строку:

@SELECT pagetitle,CONCAT(id) FROM modx_site_content WHERE parent=12 and published=1 and deleted=0 ORDER BY menuindex

pagetitle - выводит заголовки страниц рядом с чекбоксом, это наглядно и удобно;

modx_site_content - название таблицы где хранятся значения, посмотреть и проверить можно в админке;

parent=12 - это ID папки контейнера откуда берется список названий страниц для чекбокса;

Вывод я осуществляю через дитто в котором в значения параметра "&documents="  вставляю TV который в свою очередь содержит список id документов для вывода. Для проверки можно просто вывести этот TV на странице чтоб убедиться что он выводит список ID. Если вывода нет - значит вы напутали с шаблонами к которым прикрепили TV. 

UPD 1

Надавно столкнулся с проблемой что не все нужные TV лежат в одной папке, т.е. по переменной parent их не вытащить (все). Для таких целей можно получить TV параметр по переменной шаблона документа и запрос к базе SQL будет таким:

@SELECT pagetitle,CONCAT(id) FROM modx_site_content WHERE template=20 or template=4  and published=1 and deleted=0 ORDER BY pagetitle ASC

Здесь template=20 or template=4  это как раз выбор нужных шаблонов для фильтрации т.е 20 или 4 ( id родительской папки в данном случае не нужно)

Ну а пользоваться всем этим (как и в первом случае) нужно с помощью вот такого вызова DITTO:

[ ! Ditto? &id=`identificator` &tpl=`ditto_tpl` &documents=`[ *attachpage* ]` &orderBy=`pagetitle ASC` ! ] (при копирование уберите лишние пробелы)

В нашем случае самая главная вещь это &documents=` [* attachpage * ]` - куда подставляются через запятую нужные нам ID документов.

Последние опубликованные статьи:
- Все любят посочнее
- Не, не чётко
- Соблюдайте тишину
Недавно добавилось:
- Создание сайтов
- Логотипы
- Полиграфия
Яндекс.Метрика