Я люблю Drupal 7 (создаем кататалог для drupal commerce)

18 апреля 2011 в 20:58
Аватар пользователя gumk gumk 0 63

Поставил drupal commerce, потыкал несколько дней, понял - весч! Все круто, все легко и гибко настраивается, легко имортируется из csv и xml при помощи модуля feeds. Вообщем то что надо! за одним НО, как мать его создать каталог?

Пробовал ставить разные модули, искать решение на d.org - ничего толового не нашел, побился головой об стену, и полез во .... views

Приступаем:
1) идем на страницу admin/structure/taxonomy и созадем словарь catalog
- на странице admin/structure/taxonomy/catalog/fields добавляем поле c изображением, например, imagecatalog
- добавляем термины, загружая и зображения и создавая иерархию словаря
2) идем на страницу admin/structure/views и включаем представление Taxonomy term
3) идем на страницу admin/structure/views/add и создаем новое представление

выбираем показатель - термины таксономии, и тип - наш словарь catalog

задаем заголовок страницы
путь ставим taxonomy/term/%
отображение ставим grid (сетка)
элементов для отображения ставим 12 - так как по умолчанию в grid 4 столбца, соответственно указываем значение кратное 4

нажимаем "продолжить и редактировать"

4) начинаем редактировать представление:
4a) в блок "Fields" добавляем поле изображение "imagecatalog", настраиваем его по своему вкусу
расскрываем правую колонку 'Advanced'
4б) добавляем Contextual filters

указываем значение - Таксономия: вложение

и добавляем ставим галлку - чтобы при не существующем термине показывалась 404 ошибка (этого можно не делать)

Сохраняем фильтр

таким образом мы перекрыли отображение страницы термина. Теперь по адресу taxonomy/term/id_термина будут отображаться его дочерние термины с их изображениями в виде сетки.
Но если у термина не будет дочерних терминов - ничего отображаться не будет. Такая ситуация нас не устраивает, поэтому делаем следующее:
5) Добавляем no results behavior

ставим галку возле views area

нажимаем далее и указываем какое представление может будет выводиться если у термина нет дочерних терминов, а именно taxonomy_term Dispaly: default
не забываем отметить inherit cotextual filters - это означает что аргумент (id термина) будет передаваться представлению, которое будет вызываться.

сохраняем поле, сохраняем представление.

Как это работает?
если у термина есть дочерние термины - грузится вид catalog
если нет - грузится вид taxonomy term
если использовать с модулем taxonimy menu - получается каталог как на сайте ситилинка

Как сделать пункт меню?
вариант 1: делаем все термины таксономии дочерними какого-то одного, и указываем в меню ссылку на этот термин
вариант 2: берем модуль taxonomy menu, и выводим в блоке ссылки на категории

Ожидаемые проблемы:
1) На странице термина не отображаются его дочерние термины
Причина: представление taxonomy term перекрывает по весу наше представление
Выход: отключить отображение page у представления taxonomy term

2) Помимо словаря catalog есть другие словари, для них должно быть свое отображение
Выход: ждем, иди сами портируем модуль taxonomy redirect
- задаем разные пути для разных словарей
- клонируем представление taxonomy term, меняем в нем путь на заданный в taxonomy redirect
- меняем представление catalog - указываем новые пути, и меняем no results behavior на новое представление

ВложениеРазмер
Иконка изображения 1.png10.72 КБ
Иконка изображения 2.png14.02 КБ
Иконка изображения 3.png14.1 КБ
Иконка изображения 4.png8.96 КБ
Иконка изображения 5.png8.25 КБ
Иконка изображения 6.png13.07 КБ
Иконка изображения 7.png6.52 КБ
Иконка изображения 8.png6.65 КБ

Комментарии

а зачем включать представление taxonomy term ? Может проще его настройки перенести в свое представление ?

18 апреля 2011 в 22:33

Тогда было бы не плохо описать вкратце что делает taxonomy term для данной задачи (т.е. зачем его включать). И еще спасибо за отличную статью!

18 апреля 2011 в 22:47

Благодарю, оставлю коммент для отслеживания статьи.

P.S. Хотя, будет ли эта инфа актуальной к моменту, когда коммерц перестанет быть сырым?!... )))

18 апреля 2011 в 22:54

"ZanaDLucTyc" wrote:
P.S. Хотя, будет ли эта инфа актуальной к моменту, когда коммерц перестанет быть сырым?!... )))

Безусловно будет, так как views дает намного больше гибкости при создании каталога нежели штатные средства.

18 апреля 2011 в 22:57

"Eugeny" wrote:
Безусловно будет, так как views дает намного больше гибкости при создании каталога нежели штатные средства.

- это решение подойдет для создания любых каталогов в drupal 7
- после выходе taxonomy redirect позволит созадвать несколько каталогов одновременно
- есть возможность обвесить страницы каталога всевозможными расширенными фильтрами, создавать/выводить любые поля, и т.п. и т.д

18 апреля 2011 в 23:03

очень интересно
но, блин, почему это по дефолту уже есть в убере? Почему надо ломать голову над даже простыми вещами?

18 апреля 2011 в 23:09

"Eugeny" wrote:
Безусловно будет, так как views дает намного больше гибкости при создании каталога нежели штатные средства.

Насчет актуальности метода согласен, но...

"Valeratal" wrote:
но, блин, почему это по дефолту уже есть в убере? Почему надо ломать голову над даже простыми вещами?

... это и имелось ввиду. Кто знает, может и в коммерц добавят подобные инструменты. Я даже уверен, что добавят. Smile

19 апреля 2011 в 0:50

"Ламер" wrote:
автор напиши лучше как ты товар выводил на страницу, чтоб его другие видели, а не только ты))))) вот это полезно будет, про костыли и изврат

вот это имелось в виду или что?

Кстати тоже думал что за изврат с созданием товара - но потом понял, что в магазе все равно будет импорт из csv или xml, модуль feeds хорошо с этим справляется.

Можно в принципе привести создание товара в нормальный вид - нужно просто написать widget для поля product_refernce, который реализует автозаполнение + форма через которую поля
из сущности продукта будут добавляться к форме заказа.
Тоесть пользователь указывает в автозаполнении ссылки на товары,
а ниже чекбокс (добваить товар), ставишь галку - ниже подгружается форма создание товара.
будет время попробую написать

19 апреля 2011 в 1:13

"Valeratal" wrote:
но, блин, почему это по дефолту уже есть в убере? Почему надо ломать голову над даже простыми вещами?

Валера, обычно и в Убере каталог делается на Вьюсах, т.к. стандартный каталог убера - УГ и тяжело темизируется.
По созданию ноды товара на д.орг с месяца два назад шло обсуждение, что по Рулезам автоматом создовать ноду, чтобы не делать двойную работу. Но пока нет релиза в Коммерц делать нечего. Sad

19 апреля 2011 в 5:49

Valeratal, ты меня удивляешь.. столько лет знаком с друпалом, а до сих пор такие вопросы задаёшь))

А вот commerce я как-то пропустил.. пойду щупать.. убер это хорошо, но всё же что-то в нём не так.

Администрация друпал.ру.. цитата в хроме так и не работает!! Позор!

21 апреля 2011 в 1:56

clubwave.ru wrote:
http://www.commerceguys.com/ Опаньки! уберкарт и коммерц делает один и тот же человек? Интересно)

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

14 мая 2011 в 1:00

2TS: как у Вас получило использовать в качестве no results behavior другой дисплей той же вьюхи?
мне вьюс его просто в списке не показывает...

27 апреля 2011 в 20:04

"RoSk0" wrote:

2TS: как у Вас получило использовать в качестве no results behavior другой дисплей той же вьюхи?
мне вьюс его просто в списке не показывает...


никак, там другая вьюха используется

27 апреля 2011 в 21:37

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

пока для выкладки на дорг не готов, но попробую подточить для этого

14 мая 2011 в 0:50
Аватар пользователя Dan Dan 0

"ZanaDLucTyc" wrote:
P.S. Хотя, будет ли эта инфа актуальной к моменту, когда коммерц перестанет быть сырым?!... )))

Будет. Коммерц, в отличии от убера пытается максимально использовать ядро друпала, в результате получается решение более адаптируемое и "каркасное" (для большинства - сырое), но без кучи ненужных примочек и костылей.

"Valeratal" wrote:
но, блин, почему это по дефолту уже есть в убере? Почему надо ломать голову над даже простыми вещами?

Потому что CMF. Потому что нафига нужен каталог в убере, если есть views и т.д. Ну и опять же - если кому-то пока сложно использовать коммерц, подождите пока он пойдёт в массы - будут вам нужные модули-полезняшки.

14 мая 2011 в 4:44

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

20 июля 2011 в 6:23

"gumk" wrote:
Как сделать пункт меню?
вариант 1: делаем все термины таксономии дочерними какого-то одного, и указываем в меню ссылку на этот термин
вариант 2: берем модуль taxonomy menu, и выводим в блоке ссылки на категории

если у вьюхи которую создаем (каталог) стоит фильтр по словарю каталога, то пункт в меню можно сделать ссылающимся на taxonomy/term/all - так лишнего термина не нужно

20 августа 2011 в 16:28

отказался пока от комерца в пользу уберкарт 3, мне показалось диким использование булк адд или рулзов для сопоставления товара с представлением Wacko пока что управлять таким магазином жутко неудобно

21 августа 2011 в 13:31

Автору респект и уважуха!
Пара вопросов:
1 Хотелось бы по подробней узнать как сделать тоже самое в одной вьюхе?
2 Как бороться с тем что в созданной вьюхе с типом "категория" title страницы не перезаписывается значением названия категории из урл?

22 августа 2011 в 22:15

"RoSk0" wrote:
Хотелось бы по подробней узнать как сделать тоже самое в одной вьюхе?

В одной вьюхе не получится, тут логика каталога такая - есть дочерние категории - выводим их (первая вьюха), если нет - выводим товары - вторая вьюха.
"RoSk0" wrote:
Как бороться с тем что в созданной вьюхе с типом "категория" title страницы не перезаписывается значением названия категории из урл?
это пока главный недостаток в реализации данного каталог, ждем пока вьюз 3 научится нормально поддерживать token ы

22 августа 2011 в 22:45

"gumk" wrote:
В одной вьюхе не получится,

ффух... а я то думал, что пропустил что то в этой жизни глядя на
"gumk" wrote:
Опубликовано Eugeny в пн, 18/04/2011 - 20:33.
Eugeny

а зачем включать представление taxonomy term ? Может проще его настройки перенести в свое представление ?

Опубликовано gumk в пн, 18/04/2011 - 20:36.
gumk

можно и так, но с для большинства включить проще будет

22 августа 2011 в 23:32

"gumk" wrote:
это пока главный недостаток в реализации данного каталог, ждем пока вьюз 3 научится нормально поддерживать token ы


интересно, а на уровне темы это как то можно поправить?

23 августа 2011 в 0:12

Я создал вьюху с терминами словаря, при этом, нажимая на ссылку, мы переходим к товарам, которые относятся к этому термину... Но отображаются они как на главной странице, то есть по одному в ряд. Как настроить отображение товаров по иному, например в виде сетки?

26 августа 2011 в 8:01

"FORTIS" wrote:

отказался пока от комерца в пользу уберкарт 3, мне показалось диким использование булк адд или рулзов для сопоставления товара с представлением Wacko пока что управлять таким магазином жутко неудобно


Я наоборор от убера в семерке отказался - не нашел интеграции с нашими популярными платсистемами - а это уже критично.
Этот урок мне очень помог - спасибо.

2 сентября 2011 в 11:16

Если этому представлению catalog определить путь /frontpage вместо /taxonomy/term/% то представление все равно не отображается на главной.
Я копался в дефолтном представлении Front page , может есть еще что то что заставляет перекрыть главную кроме прописывания пути /frontpage?
Может модуль Front page, просто если это можно сделать с помощью вьюс, то модуль не хотелось бы

11 ноября 2011 в 18:17

По умолчанию группа товаров выводится в виде выпадающего списка.
Как изменять виджет вывода группы товаров на странице товара для покупателя?

6 января 2012 в 14:18

"gumk" wrote:
"RoSk0" написал(а):
Как бороться с тем что в созданной вьюхе с типом "категория" title страницы не перезаписывается значением названия категории из урл?
это пока главный недостаток в реализации данного каталог, ждем пока вьюз 3 научится нормально поддерживать token ы

Кто-то смог решить проблему с генерацией тайтлов для данного метода ? Сделал как вышеописано, все нормально, но просканировав сайт получил сотни тайтлов с одинаковыми заголовками, что не есть хорошо для оптимизации Sad

8 января 2012 в 18:00

Вот спасибо!

Внес небольшие поправки: чтоб отображался первый уровень иерархии (те у кого нет родителей)
в разделе "Configure contextual filter: Taxonomy term: Parent term" -> "WHEN THE FILTER VALUE IS NOT AVAILABLE"-> "Provide default value"
поставил:
"Type=Fixed Value"->"Fixed value=NULL"

Ну а потом установил модуль Panels.
Добавил на сраницу /taxonomy/term/% сверху views-pane с разделами каталога, в вниз views-pane c товарами каталог.

Получился каталог как в уберкарте.

30 апреля 2012 в 11:51

но taxonomy redirect для D7 так и не появился.
Чем заменить когда есть views для разных такcономий?
TVI?
а может Taxonomy display?

4 июня 2012 в 4:26

Попробую сделать каталог для убера по этому мануалу

В стандартном, мне не нравилось, что нельзя было фильтры прикрутить (например, по атрибутам)

Может в 7-ке уберкарта что-исправили. Но в 6-ке - поставил и все. Никакой кастомизации

30 июля 2012 в 15:13

Вопрос может и глупый, но актуальный:
когда выбираю сетка (grid) в формате отображения view, нельзя выбрать поле: пишет "Выбранный стиль или формат строки не использует поля." Как решить?

26 августа 2012 в 22:58

что то у меня не выводит ничего. В смысле эта "Надстройка" которая должна показывать дочерние термины
Вот экспорт

$view = new view();
$view->name = '_5';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'taxonomy_term_data';
$view->human_name = 'Каталог 5';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Каталог';
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['use_more_text'] = 'подробнее';
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['exposed_form']['options']['submit_button'] = 'Применить';
$handler->display->display_options['exposed_form']['options']['reset_button_label'] = 'Сбросить';
$handler->display->display_options['exposed_form']['options']['exposed_sorts_label'] = 'Сортировать по';
$handler->display->display_options['exposed_form']['options']['sort_asc_label'] = 'По возрастанию';
$handler->display->display_options['exposed_form']['options']['sort_desc_label'] = 'По убыванию';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['pager']['options']['items_per_page'] = '12';
$handler->display->display_options['pager']['options']['expose']['items_per_page_label'] = 'Элементов на страницу';
$handler->display->display_options['pager']['options']['expose']['items_per_page_options_all_label'] = '- Все -';
$handler->display->display_options['pager']['options']['expose']['offset_label'] = 'Пропустить';
$handler->display->display_options['pager']['options']['tags']['first'] = '« первая';
$handler->display->display_options['pager']['options']['tags']['previous'] = '‹ предыдущая';
$handler->display->display_options['pager']['options']['tags']['next'] = 'следующая ›';
$handler->display->display_options['pager']['options']['tags']['last'] = 'последняя »';
$handler->display->display_options['style_plugin'] = 'grid';
$handler->display->display_options['row_plugin'] = 'fields';
/* Поведение при отсутствии результатов: Глобальный: Область представления */
$handler->display->display_options['empty']['view']['id'] = 'view';
$handler->display->display_options['empty']['view']['table'] = 'views';
$handler->display->display_options['empty']['view']['field'] = 'view';
$handler->display->display_options['empty']['view']['empty'] = TRUE;
$handler->display->display_options['empty']['view']['view_to_insert'] = 'taxonomy_term:page';
$handler->display->display_options['empty']['view']['inherit_arguments'] = TRUE;
/* Поле: Термин таксономии: Изображение */
$handler->display->display_options['fields']['uc_catalog_image']['id'] = 'uc_catalog_image';
$handler->display->display_options['fields']['uc_catalog_image']['table'] = 'field_data_uc_catalog_image';
$handler->display->display_options['fields']['uc_catalog_image']['field'] = 'uc_catalog_image';
$handler->display->display_options['fields']['uc_catalog_image']['label'] = '';
$handler->display->display_options['fields']['uc_catalog_image']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['uc_catalog_image']['click_sort_column'] = 'fid';
$handler->display->display_options['fields']['uc_catalog_image']['settings'] = array(
'image_style' => 'uc_category',
'image_link' => 'content',
);
/* Поле: Термин таксономии: Название */
$handler->display->display_options['fields']['name']['id'] = 'name';
$handler->display->display_options['fields']['name']['table'] = 'taxonomy_term_data';
$handler->display->display_options['fields']['name']['field'] = 'name';
$handler->display->display_options['fields']['name']['label'] = '';
$handler->display->display_options['fields']['name']['alter']['word_boundary'] = FALSE;
$handler->display->display_options['fields']['name']['alter']['ellipsis'] = FALSE;
$handler->display->display_options['fields']['name']['link_to_taxonomy'] = TRUE;
/* Контекстный фильтр: Термин таксономии: Родительский термин */
$handler->display->display_options['arguments']['parent']['id'] = 'parent';
$handler->display->display_options['arguments']['parent']['table'] = 'taxonomy_term_hierarchy';
$handler->display->display_options['arguments']['parent']['field'] = 'parent';
$handler->display->display_options['arguments']['parent']['default_action'] = 'empty';
$handler->display->display_options['arguments']['parent']['exception']['title'] = 'Все';
$handler->display->display_options['arguments']['parent']['default_argument_type'] = 'fixed';
$handler->display->display_options['arguments']['parent']['summary']['number_of_records'] = '0';
$handler->display->display_options['arguments']['parent']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['parent']['summary_options']['items_per_page'] = '25';

/* Display: Page */
$handler = $view->new_display('page', 'Page', 'page');
$handler->display->display_options['defaults']['hide_admin_links'] = FALSE;
$handler->display->display_options['path'] = 'taxonomy/term/%';
$handler->display->display_options['menu']['title'] = 'каталог5';
$handler->display->display_options['menu']['weight'] = '0';
$handler->display->display_options['menu']['context'] = 0;
$translatables['_5'] = array(
t('Master'),
t('Каталог'),
t('подробнее'),
t('Применить'),
t('Сбросить'),
t('Сортировать по'),
t('По возрастанию'),
t('По убыванию'),
t('Элементов на страницу'),
t('- Все -'),
t('Пропустить'),
t('« первая'),
t('‹ предыдущая'),
t('следующая ›'),
t('последняя »'),
t('Все'),
t('Page'),
);

30 октября 2012 в 0:23

Глупый вопрос возможно
Но как друпал определит, что мы перекрыли новой вьюхой вывод вьюхи-таксономии?

точнее, как он определит, какая вьюха какую перекрывает? Вьюхи 2, какая какую перекроет?

30 октября 2012 в 11:00

Как это работает?
если у термина есть дочерние термины - грузится вид catalog
если нет - грузится вид taxonomy term

30 октября 2012 в 19:39

У меня это "работает"
но до первого редактирования какой-либо вьюхи

Короче забил, включил обычный каталог убера (он тоже на вьюхах)

Эти танцы с бубном.... Кстати в коммерце тоже есть каталог, включаемый без танцев.

31 октября 2012 в 11:57