друпальщик я начинающий. потому сильно не пинать.
недавно столкнулся с такой проблемой, надо было чтобы по клику на термине таксономии друпал выкидывал меня не на стандартную выдачу нод, а на нужную мне вьюшку с нужными фильтрами.
в качестве базы как нельзя лучше подходит модуль taxonomy_forceall.
переименовываем все как надо, чтобы все что содержит taxonomy_forceall выглядело бы иначе
допустим назовем taxonomy_forceall1
открываем и находим function taxonomy_forceall1_link_alter (благо там всего три процедуры, не заблудитесь).
правим в нужном месте:
$tid = substr($link['href'], 14, strlen($link['href'])-14);
$result = db_query('SELECT * FROM {term_data} WHERE tid = %d', $tid);
$name = db_fetch_array($result);
$flag = false;
if (module_exists('taxonomy') && $vids = variable_get('filter0', array())) {
$res = db_query('SELECT vid, name, description FROM {vocabulary} WHERE vid IN (%s) ORDER BY weight ASC, name', implode(',', $vids));
while ($t = db_fetch_object($res)) {
if ($name['vid'] == $t->vid) $flag=true;
}
}
$name['vid'] = $name['vid'] - 1;
if ($flag) {
$links[$module]['href'] = url( '<<strong>сюда можно вставить путь до вьюшки</strong>>','filter'.(string)$name['vid'].'=', NULL ,true).drupal_urlencode($name['name']);
$links[$module]['title'] = $links[$module]['title'].'('.taxonomy_term_count_nodes($tid,'org').')';
}
else $links[$module]['href'] = $link['href'] .'/all';
}
доработку всего остального раскрывать не буду, но там оно и не сложно. результат можно посмотреть у меня на http://macat.org, кликая по городам как раз и будет виден нужный мне результат.
с удовольствием почитаю как предложения так и замечания.
Комментарии
интересная весчь!
Это грязный хак
"Нехаком" можно через теминг поля "Term" вашей вьюсы.
Но это - вообще дикие дебри по части недокументированности. Зато 100% правильно и корректно.
Наводку даю.
найдите в модуле views функцию theme_views_view_table. Там есть такая строка
Она формирует темовый вызов вашего поля. Для того чтобы оттемить нужное поле, ваша функция теминга будет называться так:
print_r('test');
$link = '';// собственно теминг.
// В параметрах вам передадуться нужные данные метки. Сформируйте из них и вашего фильтра ссылку
return $link;
}
VIEW_NAME - название вьюсы
FIELD_NAME - название поля. Оно эквивалентно $field['queryname'] в коде выше. Ставите print_r($field['queryname']); после $cell['data'] = ...; и выбираете нужное поле. После этого составляете правильное название функции. И если все сработало, то появится test вверху экрана.
PS. этого вам здесь никто не расскажет, и не покажет, так что таки сделайте, а то будет обидно что так много писал зря
оО...
что я могу сказать... век живи - век учись. спасибо за наводку.