- Идентифицирайте се или се регистрирайте за да изпращате коментари
5 Юли, 2010 - 11:23
Може заглавието да е малко подвеждащо, но ми трябва следното нещо
Имам 3 типа ноде : Статия, Уебсайт, Букмарк
които ползват едни и същи категории
та например имам меню в което са изброени категориите
искам да постигна следното
когато съм в сайта и съм на ноде тип уебсайт и като натисна в менюто нампример категорията компютри и интернет, да ми излизат само ноде от тип уебсайт от тази категория,
а ако съм на ноде тип статия, и като натисна върху категорията да ми показва само статиите от съответната категория
Някой да има някакво решение за това.
Хамалската е да направя 3 менюта, всяко от които да се вижда само на този тип ноде за който е предназначено
но ми се иска нещо по автоматизирано

Например views за листингите с аргумент "Taxonomy TID".
Би могъл да направиш един views с два аргумента за тип и ТИД или за всеки тип по един views само с един аргумент за ТИД. В конкретния случай ако тази функция я сложиш в template.php, то тя ще генерира меню с урл "browse-articles/[ТИП]/[TID]" от речник [$vid]
function [THEME_NAME]_taxonomy_menu($vid) { $urltype = FALSE ; // проверявам за тип ноде if (arg(0) == 'node' && is_numeric(arg(1))) { $node = node_load(arg(1)); if ($node->type) { $urltype = $node->type; } } // зареждам речника $taxes = taxonomy_get_tree($vid); $output = ''; $items = array(); // генерирам масив с елементите от менюто foreach ($taxes as $t => $tax) { if ($urltype) { $link = "browse-articles/{$urltype}/{$tax->tid}"; } else { $link = "taxonomy/term/{$tax->tid}"; } $alt = ($tax->description) ? $tax->description : $tax->name; $attributes = array('title' => check_plain($alt)); $item = array( 'tid' => $tax->tid, 'data' => l($tax->name, $link, array('attributes' => $attributes)), ); $items[] = $item; } // връщам хтмл лист return theme('item_list',$items, NULL, 'ul', array('class' => 'menu')); }Ако е многоезичен речника, тогава трябва да ползваш нещо такова:
function [THEME_NAME]_taxonomy_menu($vid) { global $language ; // проверявам за тип ноде $urltype = FALSE; if (arg(0) == 'node' && is_numeric(arg(1))) { $node = node_load(arg(1)); if ($node->type) { $urltype = $node->type; } } // зареждам речника за съответния език $taxes = i18ntaxonomy_get_tree($vid, $language->language); $output = ''; $items = array(); // генерирам масив с елементите от менюто foreach ($taxes as $t => $tax) { if ($urltype) { $link = "browse-articles/{$urltype}/{$tax->tid}"; } else { $link = "taxonomy/term/{$tax->tid}"; } $alt = ($tax->description) ? $tax->description : $tax->name; $attributes = array('title' => check_plain($alt)); $item = array( 'tid' => $tax->tid, 'data' => l($tax->name, $link, array('attributes' => $attributes)), ); $items[] = $item; } // връщам хтмл лист return theme('item_list',$items, NULL, 'ul', array('class' => 'menu')); }ЗАБЕЛЕЖКА: < code> тага реже ";"
Друпал разработки
А може ли по-подробно да обясниш за views с 2 аргумента.
Опитвах се нещо да направя, ама не успях
Приложил съм кода на view-to - би могъл да го импортнеш и след това да разгледаш кое как е направено.
По подразбиране показва само публикуваните записи. Генерира лист от заглавията на намерените записи.
Генерирания хтмл можеш да го промениш като хвърлиш едно око на подчертаното в картика 1. В картинка 2 съм подчертал ключовите настройки за "Страница".
Друпал разработки
При това view трябва ли да сложа функцията в template.php
Значи това което знам до сега за аргументите е:
Примерно ползвам ТИД за аргумент и примерно пътя на страницата е browse-articles/%
то тогава в менюто си задавам :
Име на категория 1 | за път давам browse-articles/1
Име на категория 2 | за път давам browse-articles/2
и т.н. (това е за показване само на нодес от съответната категория)
обаче като имам и 2-ри аргумент node:type
тогава трябва да се включи и неговия аргумент в пътя на меню елементите,
Но до колкото знам няма как стандартно да се зададе аргумент за тип на ноде в пътя на менюто
Та трябва ли да се слага функцията в template.php , защото искам да избегна такава манипулация.
Та да обобщя, с вютата до дози момент съм наясно, но проблема ми беше с пътя в менюто.
Има ли нормално решение без да се манипулира кода в темплейта
Друпал разработки
имаш код за генериране на менюто, което ти трябва
имаш код на views, който трябва единствено да си импортнеш и да донастроиш
единственото, което липсва е как да принтнеш това меню, за да е завършено решението по този казус - това всъщност е половината от отговора на липсващото звено
не се притеснявай да слагаш код в темплейта, той е точно за това, ако ти трябва нещо по-различно, да има къде лесно да го добавиш
Разработка на сайт с Друпал Разработка на модули за Друпал Drupal.org user
Това не ми върши работа
Трябва да е browse-articles/нещо-което-автоматично-взема-ноде-тип/1
тоест ако в моемнта се намирам на ноде тип bookmark
да е
browese-articles/bookmark/1
ама ако съм на тип artciles същото меню да е
browse-articles/article/1
ако това не става автоматично, аз пак трява да правя 3 менюта
и няма смисъл от 2-рия аргумент
Поправете ме ако греша
Всъщност ще има решение ако може та се ползва token в менюто
browse-articles/[type]/[term-id]
поправям те
точно това прави ред 19 от първия код
Разработка на сайт с Друпал Разработка на модули за Друпал Drupal.org user