Крок 1. Підготовка
- Створіть один тип матеріалу, він буде базовий для всіх товарів без особливих властивостей. До цього типу додайте поля, які будуть присутні у всіх інших типах, наприклад, поля: виробник, ціна і т.д.
- Створіть словник таксономії для вашого каталогу. До терміну додайте необов'язкове текстове поле, в якому будемо зберігати машинне назва типу матеріалу для цього терміна.
Крок 2. Налаштування views
Крок 3. Типи, фільтри і поля
- Створити тип матеріалу, такий же як і базовий, з тими ж полями і додати в нього нові;
- У потрібному терміні таксономії в поле з кроку 1 задати машинне ім'я нового типу матеріалу;
- Клонуйте відображення Сторінка. додайте для нього додаткові поля і фільтри. Шлях для цієї сторінки вкажіть що-небудь типу sdfsdfsdfgsdgde. В налаштуваннях Інші -> Машинне ім'я вкажіть машинне ім'я відповідного типу матеріалу.
- Тепер фінт вухами. У власному модулі пишемо код:
/ **
* Implements hook_views_pre_build ().
* /
function mymodule_views_pre_build ($ view) $ view_name = 'catalog'; // ім'я виду
$ Field_name = 'field_catalog_type'; // ім'я поля прикріпленого до терміну
if ($ view-> name == $ view_name) if ($ view-> current_display == 'page') $ tid = $ view-> args [0];
$ Term = taxonomy_term_load ($ tid);
if (! empty ($ term->)) $ display = $ term -> [ 'und'] [0] [ 'value'];
if (isset ($ view-> display [$ display])) $ view-> display_handler-> handlers [ 'filter'] = $ View-> display [$ display] -> handler-> get_handlers ( 'filter');
$ View-> filter = $ View-> display [$ display] -> handler-> get_handlers ( 'filter');
$ View-> display_handler-> handlers [ 'field'] = $ View-> display [$ display] -> handler-> get_handlers ( 'field');
$ View-> field = $ View-> display [$ display] -> handler-> get_handlers ( 'field');
>
>
>
>
>
Даний код перевіряє який тип матеріалу зазначений в терміні з аргументу і підміняє фільтри і поля з відображення з машинним ім'ям цього матеріалу.
Не забудьте підправити значення змінних $ view_name і $ field_name.
Якщо модуля немає можете завантажити заготовку модуля.
спасибі все працює але видає такі помилки при переміщення по каталогу:
Notice: Trying to get property of non-object в функції eval () (рядок 4 в файлі D: \ xampp \ htdocs \ site \ modules \ php \ php.module (80). Eval () 'd code).
Strict warning: Only variables should be passed by reference в функції views_page_title_pattern_alter () (рядок 33 в файлі D: \ xampp \ htdocs \ site \ sites \ all \ modules \ page_title \ modules \ views.page_title.inc).
На роботу начебто не впливає, але бачать цю помилку все користувачі ((
здається помилка в модулі page_title, у вас якийсь php код не працює в настройках
Модуль page відключив.
Спробував на чистій установки, ця помилка залишилася
Notice: Trying to get property of non-object в функції eval () (рядок 4 в файлі D: \ xampp \ htdocs \ site \ modules \ php \ php.module (80). Eval () 'd code).