Views 1 -> Views 2

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

Аватар пользователя Gleb1982 Gleb1982 18 октября 2008 в 16:05

Нашел тут(http://www.drupal.ru/node/2943) такой код
Он не работает т.к. написан под Views 1. Кто-нибудь может его переделать под Views 2. Заранее благодарен!

<?php
// имя вида
$view_name = 'test';
// получаем объект
$view = views_get_view($view_name);
// очищаем запрос
// Это надо прокомментировать. Дело в том, что модуль views составляет
// запрос к БД только один раз - в момент, когда вы сохраняете вид.
// Нам этот вариант не подходит, т.к. параметры вида у нас изменяются,
// соответственно должен изменяться и запрос. У модуля есть проверка на
// пустой запрос - в этом случае он создаётся заново. Именно этот хак
// мы и используем. Для маньяков - оптимизаторов (хотя таковые views и
// не используют, наверное) - можно сохранять запрос после радактирования
// вида и вставлять его здесь, но не думаю что этот способ имеет право на
// жизнь.
$view->query = $view->countquery = "";
// получаем термин, к которому относится данная страница.
// Функция arg(1) возвращает номер материала, то есть если у нас путь к
// статье /node/25, то ф-я возвратит 25
// Последняя цифра в данном выражении (1) - номер словаря, его можно
// узнать на странице редактирования словарей (admin/taxonomy/), наведя
// указатель мыши на категорию (в нашем случае это будет номер 1.
// Внимание!
// функция taxonomy_node_get_terms_by_vocabulary возвращает массив терминов
// в нащем случае одна статья не может принадлежать двум и более терминам,
// но если такое произойдёт, будет взят первый из списка (ф-я array_shift)
$tid = array_shift(taxonomy_node_get_terms_by_vocabulary(arg(1), 1));

// просматриваем все фильтры нашего вида и ищем нужный (один из терминов
// словаря). Это будет фильтр с идентификатором term_node_N.tid, где N -
// номер словаря.
// напоминаю, что $tid->tid содержит номер термина (писателя) данного материала
foreach($view->filter as $num => $item )
if($item['id'] === 'term_node_1.tid')
$view->filter[$num]['value'][0]=$tid->tid;

// отобразить вид
print views_build_view('embed', $view, array(), FALSE, $limit);
?>

Комментарии

Аватар пользователя gumk gumk 19 октября 2008 в 13:04

Там кстати говориться, что использовать модуль category даже лучше, а под 6 он работает намного лучше, чем под 5 ИМХО