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