Високий рівень каталог на drupal 7

Крок 1. Підготовка

  1. Створіть один тип матеріалу, він буде базовий для всіх товарів без особливих властивостей. До цього типу додайте поля, які будуть присутні у всіх інших типах, наприклад, поля: виробник, ціна і т.д.
  2. Створіть словник таксономії для вашого каталогу. До терміну додайте необов'язкове текстове поле, в якому будемо зберігати машинне назва типу матеріалу для цього терміна.

Крок 2. Налаштування views

Крок 3. Типи, фільтри і поля

  1. Створити тип матеріалу, такий же як і базовий, з тими ж полями і додати в нього нові;
  2. У потрібному терміні таксономії в поле з кроку 1 задати машинне ім'я нового типу матеріалу;
  3. Клонуйте відображення Сторінка. додайте для нього додаткові поля і фільтри. Шлях для цієї сторінки вкажіть що-небудь типу sdfsdfsdfgsdgde. В налаштуваннях Інші -> Машинне ім'я вкажіть машинне ім'я відповідного типу матеріалу.
  4. Тепер фінт вухами. У власному модулі пишемо код:

    / **
    * 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).

На роботу начебто не впливає, але бачать цю помилку все користувачі ((

Високий рівень каталог на drupal 7

здається помилка в модулі page_title, у вас якийсь php код не працює в настройках

Високий рівень каталог на drupal 7

Модуль page відключив.

Спробував на чистій установки, ця помилка залишилася

Notice: Trying to get property of non-object в функції eval () (рядок 4 в файлі D: \ xampp \ htdocs \ site \ modules \ php \ php.module (80). Eval () 'd code).

Схожі статті