Новый модуль: Smartqueues for content types

Прислано: tema

вс, 31/01/2010 - 15:07

Страница проекта: http://drupal.org/project/smartqueue_nodetypes.

Модуль является дополнением к проекту Nodequeue, позволяет добавлять smartqueue для выбранного типа материала.

Зависимость: Nodequeue 2.x.

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

После установки на странице администрирования Nodequeue (admin/content/nodequeue) появляется новая ссылка «Add content type queue»(admin/content/nodequeue/add/smartqueue_nodetypes). Процесс создания smartqueues аналогичен для всех модулей, использующих Smartqueue API.

Nodequeues, Smartqueues

Пакет модулей Nodequeue нужен для создания упорядоченных последовательностей нод, сгрупированных по определенному признаку, например Top10 для записей в блогах. Основной модуль создает простые последовательности, остальные модули пакета позволяют связывать свои последовательности с различными сущностями Drupal: taxonomy, user, OG. Подробнее: Nodequeue: Creating Arbitrarily Ordered Lists of Content. Мой модуль устраняет странную незавершенность картины: создает последовательности, связанные с нодами - главной сущностью сайта.

Другие модули, использующие Smartqueue API

Smartqueue taxonomy (входит в стандартную поставку Nodequeue)
Добавляет последовательности для термов таксономии. В каждую последовательность добавляются только ноды, уже собранные в этот терм средствами taxonomy.module. Не работает с иерархиями. Если бы работал, я бы не написал этот модуль. Теперь работает. Зря старался. Хе-хе.
Smartqueue per-user
Добавляет последовательности для пользователей.
Smartqueues for Organic Groups
Ясно из названия. Многочисленные полномочия и уровни доступа.
Smartqueues for Path (нет релизов)
Видимо добавляет последовательности для путей внутри заданного.

Модуль Nodequeue Node не использует Smartqueue API, добавляет «титульную» ноду ко всем вышеперечисленным последовательностям, Nodequeue Randomizer меняет очередность случайным образом.

Еще есть черновик модуля Nodereference Queue, который добавляет последовательности для каждого уникального значения поля Nodereference. Может где-то это может пригодиться, я не придумал.

Преимущества

  • Понятный интерфейс - добавление/удаление AJAX'ом в один клик на странице ноды, autocomplete на странице subqueue, управление очередностью drag-n-drop;
  • Отдельные полномочия для создания нод и для их добавления в очередь/сортировки;
  • Интеграция:
    • Views - отображение, навигация и управление доступом;
    • Rules - автоматизация;
    • Context - структура сайта;
    • Features - управление функциями, импорт и экспорт настроек.

Использование модуля

Цель всё та же - создать простой и гибкий инструмент для реализации информационной архитектуры сайта, задачи, которая постоянно стоит перед читателями этого сайта и обычно решается с помощью Nodereference, Taxonomy, Category и других подобных модулей.

Nodequeue с помощью этого модуля может реализовать вот такие связи:

nodetype A ----------> queue [use nodetypes B and C]
 |                     |
 +--> node[type A] <=> +--> subqueue
 |                     |    +--> node[type B]
 |                     |    +--> node[type B]
 |                     |    +--> node[type C]
 +--> node[type A] <=> +--> subqueue
 |                     |    +--> node[type C]
 |                     |    +--> node[type B]
 |                     |    +--> node[type C]
...                   ...  ...

А может и вот такие:

nodetype A -----> queue [use nodetypes B and C]
 |                |
 +--> node[A] <=> +--> subqueue        nodetype B --> queue [use nodetypes D]
 |                |    +--> node[B] ---^ <==========> +-->subqueue
 |                |    |                              |   +--> node[D]
 |                |    |                              |   +--> node[D]
 |                |    |                              |   +--> node[D]
 |                |    +--> node[C]                   +-->subqueue
 |                |    |                              |   +--> node[D]
...              ...  ...                            ... ...

Можно сочетать использование нескольких smartqueues:

taxonomy vocabulary 1 --> queue [use nodetypes A and C] (Smartqueue for Taxonomy)
 |                        |
 +--> term 1 <==========> +--> subqueue        nodetype A --> queue [use nodetypes B]
 |                        |    +--> node[A] ---^ <==========> +-->subqueue
 |                        |    |                              |   +--> node[B]
 |                        |    |                              |   +--> node[B]
 |                        |    |                              |   +--> node[B]
 |                        |    +--> node[C]                   +-->subqueue
 |                        |    |                              |   +--> node[B]
...                      ...  ...                            ... ...

Модуль пока что интенсивно не использовался, поэтому баги сами собой разумеются. Я лишь убедился в его работоспособности. Если будете тестировать - багрепорты сюда.

В планах добавить кое-какие настройки, заменить прямой запрос к базе на настраиваемый и кэшируемый view.

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано tema в чт, 20/05/2010 - 10:55.

Модуль обновился.
Можно добавить логики для каждой связи с помощью PHP-кода.

Доступные переменные:
$queue — nodequeue object;
$sq_node — subqueue node object (загружен не полностью, только nid, type и title);
$node — кандидат на включение в последовательность.

Если код возвращает TRUE, $node нельзя включить в данную последовательность, соответствующие ссылки не появятся, в автокомплите этой ноды не будет.


Новое на сайте