[РЕШЕНО] tid из taxonomy_get_term_by_name

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

Аватар пользователя Bios Bios 28 апреля 2013 в 15:16

Во вьюхе в шапке надо получить tid. У представления адрес a.com/brands/pepsi в шапке нужно вывести описание термина для этого нужен tid (идентификатор термина)

нашел функцию taxonomy_get_term_by_name она собственно это и делает возвращает массив термина по имени.

<?php
$view 
views_get_current_view(); // определение имени термина

$term taxonomy_get_term_by_name($view->args[0],'brands'); // tid по имени
$tid $term->tid// значение tid
?>

сколько искал у всех вроде работает, у меня нет

у меня вылетает ошибка Notice: Trying to get property of non-object в функции eval()

функция

<?php print_r(var_dump($term));?>

выдает:

array(1) {
  [30]=>
  object(stdClass)#228 (9) {
    ["tid"]=>
    string(2) "30"
    ["vid"]=>
    string(1) "2"
    ["name"]=>
    string(5) "pepsi"
    ["description"]=>
    string(863) "
описание описание описание описание описание описание описание описание описание описание описание описание описание описание описание описание описание описание описание описание "

    ["format"]=>
    string(9) "full_html"
    ["weight"]=>
    string(1) "0"
    ["taxonomy_subterms"]=>
    string(2) "-2"
    ["taxonomy_subterms_map"]=>
    string(2) "-2"
    ["vocabulary_machine_name"]=>
    string(6) "brands"
  }
}

значит данные функция возвращает, как все таки вытащить tid?

Комментарии

Аватар пользователя Bios Bios 28 апреля 2013 в 17:07

Разобрался сам...

Если надо во вьюху которая выбирает материалы по ИМЕНИ термина вставить описание термина то в шапку вьюхи нужно вставить код

<?php
$view = views_get_current_view();

$term = taxonomy_get_term_by_name($view->args[0],'brands'); // Узнаем tid по имени
$term = array_shift($term); // оставляем первый элемент массива
$tid = $term->tid; // определяем идентификатор термина

if ( is_numeric( $tid ) ) {
$term = taxonomy_term_load($tid);

if (module_exists('i18n_taxonomy') && i18n_taxonomy_vocabulary_mode($term->vid) == I18N_MODE_LOCALIZE) {
$description = i18n_string("taxonomy:term:$term->tid:description", $term->description);
} else {
$description = $term->description;
}
print $description;
}
?>

Аватар пользователя Bios Bios 29 апреля 2013 в 7:02

И еще одна особенность если со страниц сайта в ручную создавать ссылку на термин например "black pen" (в термине есть пробел), то адрес должен выглядеть так:

site.com/brands/black%20pen или site.com/brands/black+20pen пробелы нужно заменять на "%20" или "+"

Аватар пользователя Bios Bios 29 апреля 2013 в 12:11

RxB

Очередное спасибо! не знал что есть такая функция, возьму на заметку

Но в моем случае ссылки на термины будет формировать менеджер сайта вручную, 90% процентов его работы будет производится в CKeditor