Защита "вида" от бесконечного цикла

Главные вкладки

Аватар пользователя seaji seaji 20 декабря 2007 в 18:15

Ситуация:
У вас есть словарь, в словаре термины.
Создаете вид, который будет выводить список материалов для разных терминов. Как аргумент передается term ID.
Если не передано ни одного аргумента, то что выводить?
Я обычно вывожу "текст для пустой страницы" куда можно вставить несколько раз этот же вид но уже с аргументами и получить некоторую саммари по разным терминам словаря.
Но ... это палка о двух концах. Во первых если аргумент все таки передан, но ничего не найдено, то будет выведено ваше саммари.
С другой стороны, при вызове внутри вида самого себя есть опастность попасть в бесконечный цикл. Когда ничего не найдено, вид вызывает самого себя с аргументом и если опять ничего не найдено, то он опять вызывает самого себя и так далее до бесконечности.

Вставляем вот этот код в поле "Argument Handling Code" и разделяем "текст для пустой страницы" если не передано аргументов (главная стр. вида) и "текст для пустой страницы" если аргумент передан.
<?php
if ($args[0]) {
$view->page_empty = 'Нет материалов в этом разделе';
}
?>
использовать <?php ?> в этом поле не нужно.

И на закуску. Как получить саммари по терминам словаря на главной вида.
В поле "Empty text" пишете:

<?php
$vid = 1; // ID вашего словаря
$cat_terms = taxonomy_get_tree($vid, $parent = 0, $depth = -1, $max_depth = 1);

foreach ($cat_terms as $cat_term) { ?>
<div class="title catalog <?php print $cat_term->tid ?>"><h2><?php print $cat_term->name ?></h2></div>
<?php print theme_view ('catalog', $limit=3, $use_pager=FALSE, $type= 'embed', $view_args=array($cat_term->tid)); ?>
<?php } ?>

catalog - имя вида
впечатывает ID термина в каждый заголовок чтоб потом отдельно стилизовать заголовок каждого термина.

пример можно посмотреть здесь: http://artterem.be-in.ru/catalog