

|
|
 
Советы по pick-навигации
-
Как сделать запрос выборки к нескольким блокам одновременно?
В Blox CMS запросы специальной выборки единовременно можно делать только к одному блоку страницы, то есть, в URL указывается только один конкретный блок:
href='?page=$page&block=$block&ЗапросСпецВыборки'
Но параллельные запросы к другим блокам можно создать искусственно. Дело в том, запрос к каждому блоку автоматически сохраняется в глобальном массиве. Нужно просто взять необходимые данные из глобальной переменной блока, на который поступил запрос, и передать их глобальной переменной другого блока. Пример: шаблон для комментариев блога.
-
Как сделать однозаписный шаблон?
Шаблоны, предназначенные для pick-навигации, должны быть только многозаписными.
Но как быть, когда нужен однозаписный шаблон (когда в блоке нужно отображать только одну запись)?
Для этого ничего особого делать не нужно. Во-первых, шаблон для pick-навигации, естественно, объявляется многозаписным, то есть, в дескрипторе шаблона должен присутствовать параметр isMultiRec. Однако, код самого шаблона (.tpl) пишется, как однозаписный, то есть, без перебора (с помощью оператора foreach).
К чему это приведет? Когда у пользователя еще нет ни одной записи, он будет видеть кнопку новой записи.
После создания новой записи, он будет видеть только эту запись (удовлетворять запросу будет только эта одна запись), а кнопку новой записи больше не увидит, так как перебора записей нет. Естественно, при этом на блок не должно накладываться условие обратного порядка выборки, иначе в режиме редактора будет отображаться только кнопка новой записи.
-
Индексация полей pick-запросов
Для ускорения выборки данных (при большом количестве записей в каталоге) поля pick-навигации можно сделать ключевыми.
Например, если у шаблона поля 1 и 2 используются для pick-запросов, то в дескриптор можно добавить такую строку кода:
.tdd
<?php
$keys = 'INDEX(dat1, dat2)';
?>
Если всегда выбирается только одна запись и необходимо жесткое выполнение условия уникальности, то можно добавить такой код:
.tdd
<?php
$keys = 'UNIQUE INDEX(dat1, dat2, recId, blockId)';
?>
Так как в одной таблице базы данных могут быть записи из разных блоков, здесь добавлены названия полей для номеров записей и блоков,
|