Views rss feed работает в Live Preview и не работает по урлу

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

Аватар пользователя San_ANDREYEV San_ANDREYEV 20 мая 2010 в 12:47

Есть популярная (судя по этому сайту) задача выдачи rss-потоков по типам материалов. Здесь везде рекомендуют использовать тип дисплея Feed во Views. Я именно так и сделал, настроил фильтры, сортировку, указал путь (скажем, "/type-rss.xml") и т.д. В Live Preview внизу страницы с моим view дисплей Feed нужные мне данные, как раз по типу, показывает. Однако когда пытаюсь посмотреть фид по урлу (http://сайт/type-rss.xml), то получаю "Запрашиваемая страница не найдена". Подскажите, пожалуйста, какой ещё информации мне нехватает для понимания проблемы? Какое звено упустил, куда копнуть?

Комментарии

Аватар пользователя San_ANDREYEV San_ANDREYEV 21 мая 2010 в 15:32

Пришлось решать "ломиком". Поскольку у меня типы содержимого регистрируются моими же модулями, то счёл логичным добавить в эти же модули как экспорт пути, так и callback для этого пути. Разместил в hook_menu() среди прочего такое:

<?php
$items
['typerss.xml'] = array (
    
'title' => t('RSS-поток новостей type'),
    
'type' => MENU_CALLBACK,
    
'page callback' => 'typerss_page',
    
'access callback' => TRUE
);
?>

в callback такое:

<?php
$dbResult 
db_query("SELECT nid FROM node WHERE type=\"type\" AND status=1 AND promote=1
                      ORDER BY created DESC LIMIT 20"
);
if (
mysql_num_rows($dbResult)) {
    
$nids = array();
    while (
$data db_fetch_array($dbResult)) {
        
$nids[] = $data['nid'];
    }
}
node_feed($nids);
?>

Однако ничего не изменилось. Пробовал и обновлять admin/build/modules, и переустанавливать модуль с полным удалением, и добавлять в module.install вызов menu_rebuild() - всё бесполезно, страница не найдена и всё, новый путь не добавляется.

Плюнул, залез в мускл и руками сказал такое:

INSERT INTO menu_router
VALUES ("typerss.xml","","",1,"a:0:{}","typerss_page","a:0:{}",1,1,"","typerss.xml","RSS-поток новостей type","t","",4,"","","",0,"");

После этого сразу заработало как надо. Если кто подскажет как это сделать изящнее и без программирования - буду признателен.