Подскажите пожалуйста каким образом можно реализовать функционал, примерно как на сайте http://www.astravel.ru/.
А именно, слева меню со странами (это понятно как сделать :)), нажимаем на страну (например Китай) и справа появляеться несколько блоков-меню (Полезная информация, Туры и т.д.) где находиться ссылки на информацию по выбранной стране. См. http://www.astravel.ru/china.phtml.
Комментарии
Вроде направление понял - нужно использовать Taxonomy и Views. Причем во View нужно использовать аргументы, чтобы ограничить отбор данных, например только по какому-нибудь термину из словаря. Но я никак не могу сообразить каким образом эти аргументы работают.
Есть 2 словаря:
-Country
--Китай taxonomy/term/1
--Россия taxonomy/term/2
-Topic
--Визы taxonomy/term/5
--Туры taxonomy/term/6
--Полезная информация taxonomy/term/7
Есть несколько статей котрые относяться к терминам Китай-Визы и к Россия-Визы.
Сделал View (блок) у которого в фильтрах указал отбирать только те Node, у которых Taxonomy: Term Is one of Topic:Визы.
Добавил во View аргумент Taxonomy: Term ID.
Есть меню:
-Китай - ссылается на taxonomy/term/1/all
-Россия - ссылается на taxonomy/term/2/all
Я предполагал, что когда я нажму на пункт меню, View отобразит все статьи по термину Виза для выбранной страны, а мой View упорно отображает статьи для всех стран, которые привязаны к термину Виза не смотря ны выбранный пункт меню.
Подскажите пожалуйста, что я делаю не так и каким образом заставить работать аргументы у View?
1. Если сложнее но правильнее:
читайте в сторону адргументы для views
http://drupal.org/node/109604
2. Если проще и мало терминов терминов
создайте фильтры для всех комбинаций терминов и выводите блоки на нужных страницах
ну и лучше используйте два словаря, один для географии, второй по тематике
Фильтры для каждого из терминов (стран) не подходит так как их пользователи системы могут добавлять сами.
Насчет докумнетации по view все прочитал, а аргументы все равно не работают
У кого реально имеется практика с этим вопросом, отзовитесь!!!
Ссылки у них прямо говоря рульные : )
http://www.astravel.ru/656.4170.0.0.1.0.phtml
http://www.astravel.ru/1077.0.0.1.0.0.phtml
http://www.astravel.ru/256.2070.0.0.1.0.phtml
Я похожу штуку делала через CCK nodereference. См. последние комменты в этой теме
http://www.drupal.ru/node/2943
Наверняка можно изменить под термины и блоки.
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.
А кто-нибудь знает где можно реально почитать про аргументы во view с реальным примером или how to. Сам пока ничего не нашел
На drupal.org есть доки. Сама в них путаюсь.
А мой пример не подошел?
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.
Natalie, еще раз перечитал все комменты по твоей ссылке и сделать все-таки получилось
Просто в нужно было вставить $args[0] = arg(2); и тогда при URL /taxonomy/term/2/all отбираются все статьи, которые отнсяться к темину с ID 2.
Не понятно почему это нигде не написано в документации к Drupal.
За помощь - спасибо :)!!!
А при чём здесь views? По ссылке /taxonomy/term/2/all и так находятся все статьи, которые привязаны к термину 2 (и ниже).
А при помощи view создается новый блок, в котором отображаются все материалы,относящиейся к определенной категории (например визы) + к выбранному термину (/taxonomy/term/2/). Т.е. один и тотже view возвращает различные результаты в зависимости от того какой пункт меню выбран.
Проблема открылась заново
Аргументы View настроены таким образом, что отбираются истории по выбранной категории см. приложенный файл.
Ситуация следущая:
При вызове URL http://host/country/2 данные из View возвращаются как надо. Но если я вызываю URL http://host/country/2/52 то View не возращает данных вообще. Не могу понять почему так происходит.
У кого-нибудь есть идеи?
Похоже все-таки разобрался с этими View и аргументами. Сейчас опишу выводы, которые я сделал, если они не верные, интересно было бы услышать правильную версию:
1. Аргументы во View хорошая штука
2. Когда View отображается в виде блока и идет вызов страницы через URL alias, то аргменты нужно считывать как будто вызов был без URL alias. Т.е. если есть alias
country/2 <-> taxonomy/term/2
То при вызове http://host/country/2 считать ID можно только из arg(2).
Этот момент меня поверг наповал. Странно - получается тогда URL aliases нужны только для визуального отображения.
3. Чтобы реализовать функциональность как я писал выше (отображение связанных тем) пришлось в поле Argument Code для моего View вставить следующий код:
$args[0] = arg(2);
} elseif (arg(0) == 'node' && is_numeric(arg(1))) {
$nid = arg(1);
$result = db_query("select td.tid from node n
left join term_node tn
on n.nid = tn.nid
left join term_data td
on tn.tid = td.tid
where n.nid = $nid and td.vid = 1");
if ($result && db_num_rows($result)) {
if ($obj = db_fetch_object($result)) {
$args[0] = $obj->tid;
}
}
}
Данный код анализирует какой URL был вызван дает в качестве аргумента к View различные значения. Минусом являеться то, что нужно знать значения поля vid, чтобы отбирать нужные категории.
Я новичок в Drupal, и некоторые моменты мне кажутся не логичными. Особенно касательно URL aliases. Может все-таки можно заставить Drupal реально видеть аргументы?
А кто нибудь сталкивался с сортировкой взависимости от аргумента? То есть, я привязал к категории View , по ссылке ..../node/253 берет все ноды из категории номер 253 и применяет к ним вид, всё нормально, хочется чтобы по ссылке node/253/date всё сортировалось по дате, а /node/253/comment - по кол-ву коментариев, например, или ещё по чему, неважно. Кто нибудь такое пробовал и как такое реализовать?
После того как разобрался с аргментами могу сказать, что по моему можно. В коде аргмуентов нужно вытащить парметр сортировки и при помощи View API попробовать динамически установить сортировку.
как то неконкретно...
http://drupal.org/node/99793
ок , поясню поподробнее. По ссылке ... /node/253 данные вытаскиваются по аргументу - я пробовал установить несколько сортировок, но все они идут в том порядке, в котором установишь, то есть нельзя в зависимости от аргумента изменять порядок сортировок, а надо именно это. Можно ткнуть непосредственно, не вижу такого в упор, да и в английском не ахти...
При помощи мыши это сделать нельзя (выбор listbox и т.д.). Необходимо читать API.
да я уже понял, что нельзя - я про API и говорю - у кого есть какие изыскания?
А что, изменение кода view (не модуля, а конкретного вида) не помогает?
http://drupal.org/node/124446