[Решено] Множественное число в единственное

12 марта 2012 в 21:04

Привет коллеги, подскажите пожалуста как решить следующую задачу:

Есть задача создать интернет магазин. Категории выводяться через Taxonomy menu.

Пример:
-мячи:
--футбольные
--бейсбольные

Проблема состоит в следующем:

в карточке товара (ноде) нужно отобразить:

мяч футбольный,
мяч бесбольный,
и т.д.

каким образом это реализовать?

я вижу два способа, но у них есть свои недостатки

1 Создаем дополнительные поля в типе материала

+эти поля можно импортировать ввместе со всеми через FEEDS
-каждый раз нужно заполнять

2 Выводить через поля термина таксономии

+автоматизация процесса
-при большом количестве добавляемых терминов (не единовременно) придется пользоваться импортом feeds еще и для терминов.

Каким еще способом можно устранить недостатки или есть еще какой-нибудь метод либо модуль.

Комментарии

через поля

а если вы тахономи будите выводить то в ноде будет мячи футбольные, ведь таксономи именно так называется.

27 апреля 2012 в 9:33

AntonVTR wrote:
через поля

а если вы тахономи будите выводить то в ноде будет мячи футбольные, ведь таксономи именно так называется.

Можно создать поля и в термине таксономии, и выводить их через вьюс, установив связь(relationship) вот только если у ноды несколько такс терминов, то ноды будут дублироваться.

10 мая 2012 в 18:00

"dru_and_I" wrote:
Можно создать поля и в термине таксономии, и выводить их через вьюс, установив связь(relationship) вот только если у ноды несколько такс терминов, то ноды будут дублироваться.

можно.

10 мая 2012 в 18:08

Еще проще способ.. хуком hook_node_preprocess (во вспомогательном модуле или в template.php) переопределить стандартный заголовок термина на альтернативный... 2-3 строчки кода..

10 мая 2012 в 23:52

Немогли бы вы првести пример, такой препроцес функции, у меня не получилось уложиться в три строчки, и вообще добиться результатов.
Все осложняется тем , что товары выводяться не через product display, а через вьювс, вытягиванием полей непосредственно из энтити(coommerce product).
Плюс ко всему термины таксономии это ссылки, их еще и несколько, нужно это сделать через луп как я понимаю.

11 мая 2012 в 14:07

"orion76" wrote:
Еще проще способ.. хуком hook_node_preprocess (во вспомогательном модуле или в template.php) переопределить стандартный заголовок термина на альтернативный... 2-3 строчки кода..

Вот это то что нужно, а препроцесс функция будет выполняться до того как значение попадут во вьюс и пейдж менеджер.
А в словаре имена тегов будут отбражаться до препросес фугкции. Это очень важно потому что на основе именов тегов строиться меню с помощью модуля таксономи-меню. Как я понял альтернативный заголовок предлагаете брать из кастомного поля? Если вам не слоложно вы не могли бы скинуть ссылку на друпал орг для для этого хука.

11 мая 2012 в 3:28
Аватар пользователя Dan Dan 0

Предлагаю пойти другим путём.
Сделать имена терминов таксономии в единственном числе. Это позволит не морочиться с отображением терминов в товаре.
Множественое число добавить в термин отдельным полем и строить меню уже самим, ручками в своём модуле.
Как это сделать можно посмотреть в хорошей статье http://xandeadx.ru/blog/drupal/545. Только вместо 'data' => $term->name надо будет подставить поле множественного числа.

12 мая 2012 в 17:37

Dan wrote:
Предлагаю пойти другим путём.
Сделать имена терминов таксономии в единственном числе. Это позволит не морочиться с отображением терминов в товаре.
Множественое число добавить в термин отдельным полем и строить меню уже самим, ручками в своём модуле.
Как это сделать можно посмотреть в хорошей статье http://xandeadx.ru/blog/drupal/545. Только вместо 'data' => $term->name надо будет подставить поле множественного числа.

Это хорошее решие, но нашел более функциональное, не без вашей помощи, спасибо огромное!

Вот решение, кстати, код в комментариях.

http://api.drupal.org/api/drupal/modules%21taxonomy%21taxonomy.module/fu...

12 мая 2012 в 20:28

Этот, а что с ним не так? От решения xandeadx , отличается тем что можно задать css классы вложенности тега и его tid.

13 мая 2012 в 1:11
Аватар пользователя Dan Dan 0

Отличается тем, что там присутствуют html-тэги, превращающие код в наколенный.
Задать атрибуты (классы, id, и т.д.) можно и в методе xandeadx, см АПИ theme('item_list',...). А если хочется, чтобы этобы ло похоже на меню, то надо формировать массив данных для функции menu_tree_output.

13 мая 2012 в 1:43

"Dan" wrote:

Четно говоря я только начинаю рабираться в системе друпала, но хук theme_item_list нужно передавать в temlpate.php , а хотелось бы иметь решение в виде модуля. Не могли бы вы обьяснить чем в данном случем черевато присутствие HTML output в .module файле.

13 мая 2012 в 14:49
Аватар пользователя Dan Dan 0

"dru_and_I" wrote:
но хук theme_item_list нужно передавать в temlpate.php

Ммм, зачем? Если надо переопределить его работу - то да. Но для данной задачи это не требуется. Просто используй эту функцию для формирования списка.
Вот пример вывода произвольного списка:

<?php
$items 
= array(
  
'Item1',
  
'Item2'
);

print 

theme('item_list', array(
  
'items' => $items
  
'title' => 'My list',
  
'attributes' => array('class' => array('my-list')))
);
?>

Этот код выведет:

<div class="item-list">
  <h3>My list</h3>
  <ul class="my-list">
    <li>Item1</li>
    <li>Item2</li>
  </ul>
</div>

И тут нет никакого шаманства с template.php.

"dru_and_I" wrote:
Не могли бы вы обьяснить чем в данном случем черевато присутствие HTML output в .module файле.

HTML-код в модуле должен отсутствовать. Вернее он может быть только в препроцессинге и в шаблонах, то есть там, где его можно переопределить.
Если человек пишет для себя такой код, то это не беда - его код, его проблемы. Но если он выкладывает на офф. сайте, то это плохо. Как в театре громко говорить по телефону. Во время спектакля. Матом.

13 мая 2012 в 15:11

"Dan" wrote:

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

Еще есть такая проблема, taxonomy_get_tree возвращает массив с обьектами(терминами) в свойствах которых только default поля, ксатомных нет, видимо нужно писать всой запрос к бд, ведь хотелось бы таскать информацию из собственного поля.

Да и спасибо огромное за ответы!

10 ноября 2015 в 11:48
Аватар пользователя Dan Dan 0

"dru_and_I" wrote:
Правильно я понял, что разметка не через хук плохая практика иза того, что нельзя будет перепорелиться разметку воспользовавшись стандартным хуком?

Да.

"dru_and_I" wrote:
Еще есть такая проблема, taxonomy_get_tree возвращает массив с обьектами(терминами) в свойствах которых только default поля, ксатомных нет, видимо нужно писать всой запрос к бд, ведь хотелось бы таскать информацию из собственного поля.

taxonomy_term_load или entity_load

13 мая 2012 в 16:53