То есть если я нахожусь на странице термина, в алиасе урла у меня нет ID этого термина, допустим:
/goroda/moscow
а мне соответственно нужно узнать ID из системного пути этого термина, тобишь
/taxonomy/term/3
Views такое может вообще? Может какой плагин к нему нужно докрутить? В гугле не нашел.
Представление в виде блока, не страница
Комментарии
Он от туда их и берет
Пардон, блок нужно отображать не на странице ноды, а на странице термина.
Contextual filters вообще работают для блоков?
Когда я нахожусь на странице термина, блок views отображает результаты будто аргумент не задан. В свою очередь если а админке views там где Preview with contextual filters ввести ID термина, все фильтруется как надо.
Что меня смущает. Если я делаю представление views в виде страницы, то системный УРЛ в таком случае насколько я знаю совпадает с тем урлом который отображается в браузере. Однако на странице термина у нас системный и отображаемый урл (алиас) отличаются. Если-бы у меня небыло алиасов...
Итак, проблема таки была в том, что блоки views стандартными средствами не принимает аргументов из урлов. Нашел такое решение: http://lemon-computing.livejournal.com/757.html
petrovnn, у Drupal'a есть функция arg() для таких вещей.
В общем, сам столкнулся с такой задачей: нужно сделать блок, чтобы в нем отображались только материалы, связанные с термином таксономии, на странице которого мы находимся.
Пришлось немного погуглить и разобраться с Contextual filters во Views. Вот собственно более подробное описание решения проблемы.
Вуаля, и все работает! Функция arg() берет значение из url'a. Т.к у меня блок будет отображаться только на страницах терминов таксономии (url имеет вид taxonomy/term/ID), то значит ID термина - это третий параметр. Поэтому и пише arg(2).
Надеюсь, кому-нибудь пригодится
"Provide default value" ->Raw value from URL
выбираем нужный аргумент
Сейчас зашел в ту вьюху в которой я это делал. И почему-то там был такой код:
$path = explode('/', $path);
if(isset($path[2])){
return $path[2];
} else {
return $path[1];
}
Зачем там IF хоть убей не пойму. Уже не помню. Да, скорее всего будет работать функция arg(), я тупо скопипастил кусок кода из ЖЖ.
Но сделал все-же так как сказал drupby это действительно рабочее решение, тем более мне никогда не нравилась идея хранени ПХП в базе.
Проект сложный, им не занимался уже месяц, поэтому забыл зачем там IF, но пока исчезновения функционала не заметил.