Taxonomy + Views + RSS - требуется совет бывалого (проблема с путями фидов)

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

Аватар пользователя Pozniy Pozniy 29 февраля 2008 в 21:10

Так получилось, что с Views разбираюсь только сейчас (до этого пользовался модулем Category, где всё работало "по ходу") и вот столкнулся с проблемой:

Есть некий словарь с термами (1, 2 и т.д.) и его содержимое "в классике" выводится вот так:

../taxonomy/term/1/all - это стандартный перечень нод на странице.

"в классике", в частности, это означает что именно такой путь генерируется по умолчанию, скажем, модулем site map для термов упомянутого словаря.

Модулем таксономии для такого пути замечательно генерируется соответствующий RSS-фид:

../taxonomy/term/1/all/feed

Всё было бы замечательно, но мне нужно выводить не все ноды, а только, к примеру, имеющие тип "статья".

Включаю Views. Радуюсь, ибо там есть готовый шаблон вида "taxonomy/term". На радостях подключаю этот вид. И... радоваться перестаю. Всё замечательно, кроме одного - фид

/taxonomy/term/1/all/feed

больше не выводится, аналогичный ему выводится по урлу

/taxonomy/term/1/feed

Но, site map, syndication и прочий "стандартный" зверинец настойчиво генерирует под своими rss-иконками путь именно с /all/feed (при том, что если путь для конкретного тега/терма, в моем случае, можно в админ-настроках site map отрегулировать, то путь rss-фида аналогичной дрессировке не поддается), чем нарушается вся красота и стойность, а на горизонте маячит дополнительный кусок работы по ручному ваянию структуры сайта и ручному прописыванию урлов для фидов.

Аналогичная проблема после подключения Views - с фидом для трекера (ежели к аргументам соответствующего вида добавить Node: Feed Selector), но там камнем преткновения становится зарезервированный для uid аргумент в урле. Т.е. правильный фид находится по пути ../tracker/feed, а стандартный вид прописывает под rss-иконку путь ../tracker/%2A/feed (%2A - это, если не ошибаюсь, * ), который пуст для общего трекера, но правильно работает для закладки "Мои сообщения" (../tracker/1/feed).

Кто нить знает как это всё хозяйство в порядок привести? Что бы и виды работали, и урлы для фидов вспомогательными модулями генерились правильно (под views). (Я с этим Views разбираюсь только третий день. Может чего не понял?..)

Спасибо.

Комментарии

Аватар пользователя gorr gorr 2 марта 2008 в 1:30

Может быть я что-то не так понял, но нельзя ли просто сделать новый вьюз с фильтром по NodeType выбираете там тип "статья".
Путь ему можете какой хотите прописать...

Аватар пользователя Pozniy Pozniy 2 марта 2008 в 2:53

Да можно конечно видов написать... Это и будет ручной вариант. Но весь смысл-то в том, что бы урлы термов и их фиды выдавались корректно стандартными средствами (как минимум сайт-мапом и синдикатом). К тому же проблема не только в этом. Ещё до ручных правок вида "taxonomy/term", после его включения он ломает предыдущие настройки путей фидов.

Аватар пользователя alexweb alexweb 5 марта 2008 в 17:40
  1. По поводу настройки ./taxonomy/term/1/all/feed и /taxonomy/term/1/feed  - можно поиграть с arguments handling code. View позволяет переопределять массив аргументов по своему уразумению. Поищите на офф сайте по запросу arguments handling code. Дам подсказку, так как урл дается 1/all/feed, а вид не понимает all, то нужно самому сформировать массив args, убрав предварительно ненужный элемент. Тогда урл будет таким, который выдают стандартные средства, но аргументы в вид будут передаваться другие.
  2. Аналогичное решение, думаю, можно сделать и для tracker

Аватар пользователя nmark nmark 5 марта 2008 в 22:08

В случае с одним аргументом это вроде как можно решить, указав URL как ./taxonomy/term/1/all/$arg
Но аргумента 2, как я понимаю. Скорее всего, и для такого случая есть нечто подобное. А иначе придется код писать обработки аргумента.

Аватар пользователя alexweb alexweb 6 марта 2008 в 14:36

Для вида taxonomy/term надо прописать в argument handling code :
<?php
if (is_numeric(arg(2)) && arg(3)=='all' && arg(4) == 'feed') {
$args[0] = arg(2);
$args[1] = arg(4);
return $args;
}
?>

Аватар пользователя Pozniy Pozniy 13 марта 2008 в 18:33

В сайт-мапе это работает! По тем урлам ленты, которые там генерятся под кнопками, действительно начали открываться соответсвующие фиды. Правда, осталась беда с рефералами под rss-кнопкой на самой странице taxonomy/term/1/all
Но ссылку на эту страницу можно убрать настройками сайт-мапа. Будет открываться taxonomy/term/1 и под rss-кнопками там нормальные фиды, правда без /all/ (получается два разных адреса для одного и того же фида).

Так что в принципе для это может быть решением (или, точнее, обозначенным направлением решения, т.к., к примеру, модуль синдикатора генерит пути, где вместо /all/ - /0/ и для этого случая получается надо свой код писать; вообще бардак у них какой-то с фидами)...

alexweb-у БОЛЬШОЙ РЕСПЕКТ!!!