Бьюсь уже день, подскажите как сделать лучше!
Есть словарь с областями и городами, который выводится в профиле в виде: Киевская обл., Киев
Когда нажимаешь на "Киев" - переходишь на страничку 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));
}?>
Комментарии
UP!
модуль devel и dsm() ну или print_r
и смотрим пошагово , что где передаётся
возвращает всех родителей дочернего термина - причём термин будет один - область
по вашей логике есть города , которые относятся к разным областям
taxonomy_get_parents_all - это понятно. у меня не получается разграничить. Когда пытаюсь вывести только дочерний термин, нечего вообще не отображается
нужно просто не выводить родительский термин
tid города ?
и вообще во вьюхе taxonomy/term/% включите глубину 1 в контекстном фильтре чтобы
это определение поля, потом оно задается в модулем как переменная $profile_location и выводиться в user_profile
вьюха taxonomy/term/% выводит просто города в Киеве (просто темизированная), зачем ей ставить глубину 1? Оно и так отсеивает только по Киеву
То такое, сейчас хочу вывести чисто город, то есть самый глубокий уровень в херикал select, так как хочу его запихнуть в тайтл страницы для сео
ну так для области то выводит с глубиной 0 - соответсвенно ничего
Та нет, я пробовала по разном, результат с областью все-равно не выводит
не знаю ,если вьюха не изменялась стандартная taxonomy/term , то при указании глубины 1 или 2 в певом контекстном фильтре по tid с глубиной ,для области будут показываться для всех городов
если вьюха не клонирована и не перекрывается - если несколько словарей , то надо использовать Taxonomy Redirect или tvi
ладно, буду копать
покажите что это выводит через print_r() к примеру
P.S. в семёрке с этим проще - зря выбрали шестёрку
Когда начинала делать портал, и вообще знакомиться с Друпалом, я и делала на 7-рке, все-таки логичнее. Но на то время сайт начал некорректно работать из-за несовместимости некоторых необходимых модулей с дев-версиями других модулей.
Теперь, конечно уже те дев-ерсии повыходили с исправлением багов, но сайт то уже готов, только допиливаю и прикручиваю необходимые функции.
Рано или поздно придется переносить, но это уже другой вопрос
выводит просто номер термина, например - 58722
это tid города или области?
я так понимаю это термин id города (Киев) ,который вам надо вывести ?
да, все верно
$tid_city = taxonomy_get_term($profile->field_profile_location[0]['value']) ;
$location = l($tid_city->name, taxonomy_term_path($tid_city));
print $location ;
}
или не ?
<?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
Ну вы мне помогли!
Также для того что бы убрать ссылку с термина таксономии в тайтле страницы (до этого она отображалась с тегом ссылка) прописала:
<?php $variables['profile_location'] = $location;
if ($profile->field_profile_location[0]['value']) {
$tid_city = taxonomy_get_term($profile->field_profile_location[0]['value']) ;
$location_ttl= l($tid_city->name, taxonomy_term_path($tid_city));
}
$variables['profile_location_ttl'] = strip_tags ($location_ttl); ?>
Конечно, вариант не кошерный, но прямо в профиле, через drupal_set_html_head strip_tags работать не хочет
а $tid_city->name чем не устроил ?
Тем, что юзер профайл строится на основе своего модуля, где переменные берутся именно из модуля. Следовательно $tid_city->name нечего не выведет
а может добавлять тайтл в template_preprocess_page ?
drupal_set_title
Рассматривала разные варианты, остановилась юзер-профайл. удобнее что-ли, и информация берется прямо с шаблона. хотя...
В общем, решила лучше так