о/
Что требуется:
1. выводить ноды с урлом 'news/?ID=nid' (именно с такими символами)
2. чтобы при этом по урлу 'news' отображался список анонсов всех этих нод
Что сделано:
1. Созданы 2 вьюхи:
1.1. с аргументом Node: nid → Provide default argument → PHP-код
в коде следующее:
<?php
if($_GET['ID']) return $_GET['ID']; else {
views_embed_view('dfj', 'page_1');
}
?>
→ Action to take if argument does not validate: Display empty text.
1.2. Вторая вьюха как раз и есть 'dfj', 'page_1' с урлом у страницы 'news'
В чем трабла:
1. Вторая вьюха не ембедится - отображается пустой текст, а если в Action to take if argument does not validate выставить 404, то так и будет отдавать.
2. Попробовал сделать такую страницу через hook_menu, но поведение такое же, как в п.1 - видимо, вьюха приоритетнее.
Вопросы:
1. Как все же заставить эмбеддиться вьюху?
2. Может есть какой вариант подставить после оператора else, чтобы ничего не делало?
И, пожалуйста, не спрашивайте, нахрена мне все это!
Комментарии
А у view у которой return $_GET['ID'] url указан какой? news/%? или что?
Нет, просто 'news'.
попробуйте news/%, а у view которая все анонсы будет просто news
Как раз, предвидя Ваш совет, попробовал так сделать - но тогда по пути news/?ID=nid отдает ту самую вторую вьюху (что неудивительно, т.к. вьюха та перехватывает все адерса 'news*'), а первая вьюха с аргументом, видимо, выглядит наподобие 'news/%?ID=nid' - но там уже nginx отдает 400 ошибку.
затупил я тут)) не будет так работать конечно, голова уже не варит сегодня))
единственное что приходит сразу так в голову это оставить одну views по адресу news, и в ее шаблоне проверять если есть $_GET['ID'], то загружать view которая с аргументом по id, а если нет ничего в $_GET, то показывать анонсы
И снова Вы читаете мои мысли!
Как раз пытаюсь составить правильный синтаксис (жалко, что я не прогер).
UPD: Или также просто прописать
<?php if($_GET['ID']) return $_GET['ID']; ?>
нужно в переопределенном шаблоне view просто написать
<?php
if(!$_GET['ID']){
print views_embed_view('view_name', $display_id = 'default', $arg);
}
elseif($_GET['ID']):?>
тут все что в шаблоне валяется
<?php endif;?>
как-то так
Спасибо! сейчас попробую.
Единственное что, в PHP-коде фильтра у меня почему-то не пошел такой код:
<?php
if($_GET['ID'])
return $_GET['ID'];
else {
views_embed_view('my_view', 'page_1');
}
?>
А куда вы этот код пишете?
Код писал прямо в аргумент: Node: nid → Provide default argument → PHP-код
Ура! Огромное Спасибо! Код в шаблоне сработал - теперь все как нужно (в первой строке только двоеточие добавил).
Только все равно не понял, чем отличается шаблон от прописывания прямо в аргументе и от хук_меню...