[РЕШЕНО]Вывести в профиле один дочерний уровень таксономии (город) программно

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

Аватар пользователя Boozenok Boozenok 4 февраля 2013 в 17:11

Бьюсь уже день, подскажите как сделать лучше!

Есть словарь с областями и городами, который выводится в профиле в виде: Киевская обл., Киев

Когда нажимаешь на "Киев" - переходишь на страничку taxonomy/term/%, где выводится Views список пользователей из Киева. А вот когда нажимаешь на Киевскую область выводит пустую страничку. Могу через аргументы вывести и там пользователей, но тогда они не выводятся если нажать "Киев". В общем одновременно работать не хотят. Так вот вопрос - как сделать что бы все работало? какие аргументы? На киев стоит ID термина, для области работает с аргументом ID родительского термина, если ставить и тот и тот не работает вообще не один.

Как альтернативу (но так не хотелось бы), можно убрать область и вывести только город, но тут проблема с кодом, не могу его переделать никак. Может кто-то хоть с этим поможет...

<?phpif ($profile->field_profile_location[0]['value']) {
    $parents = taxonomy_get_parents_all($profile->field_profile_location[0]['value']);
    foreach (array_reverse($parents) as $parent) {
      $location[] = l($parent->name, taxonomy_term_path($parent));
    }?>

Комментарии

Аватар пользователя drupby drupby 6 марта 2013 в 20:14

"Boozenok" wrote:
taxonomy_get_parents_all

возвращает всех родителей дочернего термина - причём термин будет один - область
по вашей логике есть города , которые относятся к разным областям

Аватар пользователя Boozenok Boozenok 6 марта 2013 в 20:18

taxonomy_get_parents_all - это понятно. у меня не получается разграничить. Когда пытаюсь вывести только дочерний термин, нечего вообще не отображается

Аватар пользователя drupby drupby 6 марта 2013 в 20:40

и вообще во вьюхе taxonomy/term/% включите глубину 1 в контекстном фильтре чтобы

"Boozenok" wrote:
А вот когда нажимаешь на Киевскую область выводит пустую страничку

Аватар пользователя Boozenok Boozenok 6 марта 2013 в 21:08

"Boozenok" wrote:

и вообще во вьюхе taxonomy/term/% включите глубину 1 в контекстном фильтре чтобы


вьюха taxonomy/term/% выводит просто города в Киеве (просто темизированная), зачем ей ставить глубину 1? Оно и так отсеивает только по Киеву
То такое, сейчас хочу вывести чисто город, то есть самый глубокий уровень в херикал select, так как хочу его запихнуть в тайтл страницы для сео

Аватар пользователя drupby drupby 6 марта 2013 в 21:18

"Boozenok" wrote:
вьюха taxonomy/term/% выводит просто города в Киеве

ну так для области то выводит с глубиной 0 - соответсвенно ничего

Аватар пользователя Boozenok Boozenok 7 марта 2013 в 12:56

drupby wrote:
"Boozenok" wrote:
вьюха taxonomy/term/% выводит просто города в Киеве

ну так для области то выводит с глубиной 0 - соответсвенно ничего

Та нет, я пробовала по разном, результат с областью все-равно не выводит

Аватар пользователя drupby drupby 7 марта 2013 в 17:37

не знаю ,если вьюха не изменялась стандартная taxonomy/term , то при указании глубины 1 или 2 в певом контекстном фильтре по tid с глубиной ,для области будут показываться для всех городов
если вьюха не клонирована и не перекрывается - если несколько словарей , то надо использовать Taxonomy Redirect или tvi

Аватар пользователя drupby drupby 7 марта 2013 в 18:28

"Boozenok" wrote:
$profile->field_profile_location[0]['value']

покажите что это выводит через print_r() к примеру
P.S. в семёрке с этим проще - зря выбрали шестёрку

Аватар пользователя Boozenok Boozenok 7 марта 2013 в 18:41

"drupby" wrote:
P.S. в семёрке с этим проще - зря выбрали шестёрку

Когда начинала делать портал, и вообще знакомиться с Друпалом, я и делала на 7-рке, все-таки логичнее. Но на то время сайт начал некорректно работать из-за несовместимости некоторых необходимых модулей с дев-версиями других модулей.

Теперь, конечно уже те дев-ерсии повыходили с исправлением багов, но сайт то уже готов, только допиливаю и прикручиваю необходимые функции.

Рано или поздно придется переносить, но это уже другой вопрос

Аватар пользователя drupby drupby 7 марта 2013 в 19:20

"Boozenok" wrote:
выводит просто номер термина, например - 58722

это tid города или области?
я так понимаю это термин id города (Киев) ,который вам надо вывести ?

Аватар пользователя Boozenok Boozenok 8 марта 2013 в 1:51
<?phpif ($profile->field_profile_location[0]['value']) {
     $tid_city = taxonomy_get_term($profile->field_profile_location[0]['value']) ;
     $location = l($tid_city->name, taxonomy_term_path($tid_city));
    
}
    $variables['profile_location'] = $location;  ?>

ОХ, спасибо большое! Я вообще за тид не думала, зациклилась на $children

Ну вы мне помогли!

Аватар пользователя Boozenok Boozenok 8 марта 2013 в 13:09

Также для того что бы убрать ссылку с термина таксономии в тайтле страницы (до этого она отображалась с тегом ссылка) прописала:

<?php  $variables['profile_location'] = $location
    if (
$profile->field_profile_location[0]['value']) {
     
$tid_city taxonomy_get_term($profile->field_profile_location[0]['value']) ;
     
$location_ttll($tid_city->nametaxonomy_term_path($tid_city));
    
}
    
$variables['profile_location_ttl'] = strip_tags ($location_ttl); ?>

Конечно, вариант не кошерный, но прямо в профиле, через drupal_set_html_head strip_tags работать не хочет

Аватар пользователя Boozenok Boozenok 8 марта 2013 в 14:11

Тем, что юзер профайл строится на основе своего модуля, где переменные берутся именно из модуля. Следовательно $tid_city->name нечего не выведет

Аватар пользователя Boozenok Boozenok 11 марта 2013 в 2:02

Рассматривала разные варианты, остановилась юзер-профайл. удобнее что-ли, и информация берется прямо с шаблона. хотя...
В общем, решила лучше так