[Решено][Два варианта решения] views: Как добавить поле из термина таксонометрии

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

Аватар пользователя vortex vortex 28 марта 2014 в 13:44

Есть стандартная views "Taxonometry term". Хочу добавить в неё поле из термина такснометрии "Description".

По умолчанию в доступных полях его нет. Попробовал через "Взаимоотношения" - сработало. Но. Пошли дубли. Distinct не работает.

Как убрать дубли либо добавить это поле иным способом?

Комментарии

Аватар пользователя VasyOK VasyOK 28 марта 2014 в 14:01

http://flowtea.ru/zelenyy-chay
Выводиться описание и картинка термина. В заголовок вьюхи добавлена текстовая область с кодом. Можно (не обязательно) через views php.

<?php $current = taxonomy_term_load(arg(2));
print '

';
print theme('image_style', array('style_name' => 'categoryimg', 'path' =>
$current->field_timg['und'][0]['uri']));
print '

';
print '

'. $current->description .'

';
?>

Аватар пользователя vortex vortex 28 марта 2014 в 16:12

Спасибо, [user=VasyOK], просто идеально. Хоят и лишний модуль [module=views_php] появился.
Сейчас ещё допилю поле изображение к термину, т.к. пример понравился и надо повторить Smile

Аватар пользователя VasyOK VasyOK 28 марта 2014 в 18:39

Можно и без модуля - текстовая область, формат ввода php.
Можно и в tpl.php для вьюхи подобный код всунуть

Аватар пользователя vortex vortex 28 марта 2014 в 19:08

"VasyOK" wrote:
формат ввода php.

Это была первая попытка. Я только потом понял, что отключен модуль php filter, а просто был включен тип ввода. пока оставлю views php. Разнице для меня какой из модулей активен нет.

Аватар пользователя Boozenok Boozenok 28 марта 2014 в 19:21

Выводите описание через Views в блоке с аргументом по ID термина таксономии из URL, потом этот блок добавляете в шапуку или подвал своей вьюхи через "Глобальный: Область представления "

Аватар пользователя vortex vortex 31 марта 2014 в 13:10

"Boozenok" wrote:
Выводите описание через Views в блоке с аргументом по ID термина таксономии из URL, потом этот блок добавляете в шапуку или подвал своей вьюхи через "Глобальный: Область представления "

Добавил "Термин таксономии: ID термина", ввожу ID тега в проверку - работает. Включил блок в свою основную views - не работает.
В настройках области включил "Наследовать контекстные фильтры" - заработало!

Супер решение. Спасибо [user=Boozenok]!

PS Мысль была что можно views во views втыкать, но без подсказки бы ничего не придумал. Все-таки контекстные фильтры и взаимосвязи не всегда очевидны для меня.

Аватар пользователя Boozenok Boozenok 31 марта 2014 в 13:53

"vortex" wrote:
Все-таки контекстные фильтры и взаимосвязи не всегда очевидны для меня.

Раз 100 сделаете не правильно и все станет очевидным))

Аватар пользователя vortex vortex 31 марта 2014 в 17:32

"Boozenok" wrote:

это да. опыт решает.

"VasyOK" wrote:

а можно как то развить конструкцию типа:

if ($current->description) = существует
print всё.
else ничего не делать

В варианте Views оно птичками делается, а в php я не силён...

Аватар пользователя vortex vortex 31 марта 2014 в 18:11

Я про другое. Ваш вариант основан на views и там "Птичками" можно исключить при пустой views. А вот код [user=VasyOK] безальтернативен:Описание пропадает, а картинка все-равно отображается! К нему вопрос и обращён.

Аватар пользователя vortex vortex 1 апреля 2014 в 11:44

Ваш код показывает картинку и описание. В случае если они отсутсвуют, описание не показывается, а картинка отображается заглушкой. Как бы сделать так что бы и картинка не отображалась?
Я предполагаю, что с помощью if...else (если есть описание и картинка, то отобразить, иначе не отображать) можно заранее сказать коду должен он отображаться или нет.

Аватар пользователя vortex vortex 2 апреля 2014 в 13:34

Вот итоговый код с проверкой на наличие каждого поля.

<?php
$current 
taxonomy_term_load(arg(2));
if (empty(
$current->field_tag_img['und'][0]['uri'])) { print ''; }
else {
print 
'<div class="taxonomy-image">';
  print 
theme('image_style', array('style_name' => 'thumbnail''path' => 
$current->field_tag_img['und'][0]['uri']));
 print 
'</div>';
}
if (empty(
$current->description))  { print ''; }
else { print 
'<div class="taxonomy-description">'$current->description .'</div>';  }

?>
Аватар пользователя VasyOK VasyOK 8 апреля 2014 в 16:02

Вот на этом примере
<?php
$current = taxonomy_term_load(arg(2));
if ($current->field_tkart['und'][0]['uri']) { /*Картинка в термине*/
print '

';
print theme('image_style',
array('style_name' => 'tovarvspiske',
'path' =>$current->field_tkart['und'][0]['uri'])
);
print '

';
}
?>

Если вьюха в блоке и картинка в термин не загружена выводиться ошибка:
Notice: Undefined property: stdClass::$field_tkart в функции eval() (строка 3 в файле .../modules/php/php.module(80) : eval()'d code).

Хотя все работает. В принципе можно убрать Notice если задать изображение по умолчанию. Например netkartinki.gif размером 1*1 px