Создание связных (зависимых) блоков

Бывают задачи, когда невозможно с помощью одного простого SQL запроса выбрать нужные вам страницы. Например, если вы хотите "условием выбора" описать фотографии только из одной, наиболее свежей галереи. Или выбрать документы, находящиеся в папках, соответствующих определенному условию, и т.п.

В этом случае можно установить в блоке "функцию выбора" = "связанный".
Эта функция работает так: блок в котором она задана должен быть дочерним к другому работающему блоку, назовем его родительским, а настраиваемый блок — дочерним.
В дочернем блоке при установке функции "связанный" появляется возможность использовать в условии выбора выражения $CPARAMS[xx] и $LPARAMS[xx]

# Если в блоке есть $CPARAMS[xx] в block_where, то делается N (число выбранных в родительском) выборок и $CPARAMS заменяются в цикле на параметры выбранных в родительском блоке

# Если в блоке есть $LPARAMS[xx] в block_where, то делается 1 выборка, а $LPARAMS заменяются на конкатенацию параметров выбранных в родительском блоке. Пример: в родительский блок выбрано 3 объекта с id 100, 200 и 300 — $LPARAMS[id] заменится на конструкцию вида "100,200,300" (без кавычек).

Другими словами, если в родительский блок выбрано 3 папки и в дочернем блоке мы напишем parent_id in ($LPARAMS[id]) то в блок выберутся дочерние тех объектов, что были выбраны в первый блок (замена на parent_id in (100,200,300)).
Конструкция $CPARAMS работает аналогично, только возвращает всегда только одно значения. В указанном выше примере замена приведет к формированию трех разных SQL запросов parent_id in (100) + parent_id in (200) + parent_id in (300)

Другой пример: требуется выбрать фотографии из наиболее свежей (последней галереи). Создаем родительский блок с условием выбора, например, parent_id=200 (где 200 — папка, где лежат фотогалереи), количество выбираемых объектов = 1. Этот блок будет выбирать нужную нам галерею. Так как блок нужен для технических целей, мы задаем ему фиктивную позицию, не задаем стиль, но задаем условие показа, такое же, как у основного блока. Это условие является обязательным, так как если родительского блока на странице не будет, дочерний тоже не сможет правильно сформироваться. Также необходимо, чтобы права блоков на чтение были одинаковыми. Далее, создаем дочерний блок (он будет показываться на странице), задаем ему условие выбора parent_id=$CPARAMS[id] и нужное количество фотографий, правильный стиль, позицию и т.д..

Разумеется, вместе id в квадратных скобках можно использовать другие значения.

Рекурсивная работа функции на вложенные ниже блоки не гарантируется.

Помните также о возможности использования функций MySQL непосредственно в поле "условие выбора".

Поиск по документации
закрыть 483
открыть 1611
открыть 1200
открыть 1604
открыть 1605
открыть 1606
открыть 1612
закрыть 2196
Контактная информация
603000, Россия,
г. Нижний Новгород,
ул. Студеная, дом 5,
4-й этаж.
info@graphit.ru

(831) 260–16–32