Автоматический глоссарий Drupal для конкретных терминов
Вопрос
Приветствую всех помощников!
Недавно я читал и тестировал функции Drupal и нахожу эту CMS очень масштабируемой и интересной.Я начал работать с темами, представлениями, типами контента и т. д.но я ищу то, чего не могу найти в Интернете.
Контекст:Я создаю новый сайт для одной своей некоммерческой организации к 10-летию.В основном этот сайт предназначен для игры, правила которой имеют различные возможности.Я хотел бы создать глоссарий для различных способностей.Это не такая уж большая проблема.
Вот что я хочу заархивировать:В этом глоссарии я бы хотел, чтобы описание способности происходило каждый раз, когда она встречается в контенте.
Глоссарий способностей (список):http://conflitseternels.net/index.php?id=habilites
Каждый раз, когда в контенте встречается одна способность, она ссылается на ее описание.
Если вы поможете мне выполнить эту просьбу, я буду очень рад!
Спасибо, Уилл
Решение
Я нашел один модуль, который, похоже, делает что-то подобное:Глоссифицировать (http://drupal.org/project/glossify).Сам никогда им не пользовался, но попробовать стоит.Если Glossify вам не подходит, подумайте о том, чтобы помочь улучшить модуль или написать собственный модуль самостоятельно.
Теоретически существует два метода преобразования слов в ссылки:когда узел сохраняется или когда узел отображается.В обоих случаях вы будете проверять каждое слово в узле и смотреть, соответствует ли оно одной из способностей.Оба решения имеют преимущества и недостатки.При выборе решения нужно следить за производительностью, поскольку действия по поиску и замене могут отнимать много системных ресурсов, особенно если у вас много пользователей, длинные тексты и множество возможностей.
Изменение содержимого при сохранении узла можно выполнить в Drupal с помощью реализацииook_nodeapi ($op=presave).Непосредственно перед записью содержимого в базу данных ваша функция nodeapi творит чудеса.Преимущество:поиск и замена выполняется только один раз для каждого узла.Недостаток:при добавлении новой способности новые ссылки не будут добавлены в существующие узлы (если только вы не сохраните узел повторно).
Изменение содержимого при просмотре узла можно выполнить с помощью реализацииook_nodeapi ($op=view) илиook_filter.Ссылки не сохраняются в базе данных, а добавляются «на лету» каждый раз, когда пользователь просматривает узел.Преимущество:новые способности также будут связаны с ранее сохраненным узлом.Недостаток:производительности, поиск и замена должны выполняться для каждого представления узла (хотя кэширование, вероятно, частично решит эту проблему).