Привет %username%,
В ответ на «Нетривиальная задача для Node Reference поля Drupal», решил подпилить для кулинарии один из кастомных модулей.
Для работы модуля предполагается следующая структура материалов сайта:
Тип материала «Рецепт» — основной контент с описанием рецепта
Типы материалов с ингредиентами:
Все ингредиенты в выпадающем списке будут разделены по группам. Так что найти их будет просто.
После включения модуля в списке доступных типов полей появится дополнительный тип — «Ingredient».
Модуль позволяет добавлять референсные ссылки на ноды ингредиентов, устанавливать количество продукта и единицы измерения. Поддерживается множественное добавление строк, drag&drop сортировка.
Вам необходимо лишь указать, какие типы материалов являются ингредиентами.
Полезной функцией модуля является функция темизации отображаемых данных
В файле темы template.php создаем свою функцию и формируем переменную $res как ссылку на заранее подготовленный views, которому в качестве аргумента передается nid ингредиента. Это позволит получить список всех рецептов, в которых используется данный ингредиент:
Не забываем сбросить кэш.
Собственно, сам модуль
Как это ни странно — работает ;)
Статья для получения инвайта моим другом, пока что не пользователем Хабрахабра.
Если найдутся добрые люди, отправьте ему на serjik.bozhko@gmail.com, пожалуйста, приглашение =).
В ответ на «Нетривиальная задача для Node Reference поля Drupal», решил подпилить для кулинарии один из кастомных модулей.
Для работы модуля предполагается следующая структура материалов сайта:
Тип материала «Рецепт» — основной контент с описанием рецепта
Типы материалов с ингредиентами:
- Ингредиент 1 — Материалы сайта с ингредиентами первой группы (Напр. тип материала «Специи»)
- Ингредиент 2 — Материалы сайта с ингредиентами второй группы (Напр. тип материала «Фрукты»)
- ...
- Ингредиент N — Материалы сайта с ингредиентами N группы
Все ингредиенты в выпадающем списке будут разделены по группам. Так что найти их будет просто.
После включения модуля в списке доступных типов полей появится дополнительный тип — «Ingredient».
Модуль позволяет добавлять референсные ссылки на ноды ингредиентов, устанавливать количество продукта и единицы измерения. Поддерживается множественное добавление строк, drag&drop сортировка.
Вам необходимо лишь указать, какие типы материалов являются ингредиентами.
Полезной функцией модуля является функция темизации отображаемых данных
function theme_recipe_site_formatter_default($element) { $fields = $element['#item']; $res = ''; if (!empty($fields)) { $item = explode('[nid:', $fields['ingredient_name']); $title = trim($item[0]); $nid = drupal_substr($item[1], 0, -1); $res = l($title, 'node/'. $nid) .' — '. $fields['ingredient_qty'] .($fields['ingredient_unit'] == '<space>' ? '' : ' '. $fields['ingredient_unit']); } return $res; }
В файле темы template.php создаем свою функцию и формируем переменную $res как ссылку на заранее подготовленный views, которому в качестве аргумента передается nid ингредиента. Это позволит получить список всех рецептов, в которых используется данный ингредиент:
function ИМЯТЕМЫ_recipe_site_formatter_default($element) { $fields = $element['#item']; $res = ''; if (!empty($fields)) { $item = explode('[nid:', $fields['ingredient_name']); $title = trim($item[0]); $nid = drupal_substr($item[1], 0, -1); $res = l($title, 'ПУТЬ_К_ВЬЮС/'. $nid) .' — '. $fields['ingredient_qty'] .($fields['ingredient_unit'] == '<space>' ? '' : ' '. $fields['ingredient_unit']); } return $res; }
Не забываем сбросить кэш.
Собственно, сам модуль
Как это ни странно — работает ;)
Статья для получения инвайта моим другом, пока что не пользователем Хабрахабра.
Если найдутся добрые люди, отправьте ему на serjik.bozhko@gmail.com, пожалуйста, приглашение =).