Drupal автоматический глоссарий для конкретных условий - PullRequest
0 голосов
/ 08 января 2010

Приветствую всех помощников!

Я недавно читал и тестировал функции Drupal, и я считаю эту CMS очень масштабируемой и интересной. Я начал работать с темами, представлениями, типами контента и т. Д., Но я ищу что-то, чего не могу найти в Интернете.

Контекст: я создаю новый сайт для одной моей некоммерческой организации к 10-летию. Главным образом, этот сайт предназначен для игры, которая имеет различные возможности в рамках своих правил. Я хотел бы создать глоссарий для различных способностей. Это не большая проблема.

Вот что я хочу заархивировать: С этим глоссарием я бы хотел, чтобы описание способностей каждый раз встречалось в контенте.

Словарь возможностей (список): http://conflitseternels.net/index.php?id=habiletes

Каждый раз, когда в контенте встречается одна способность, она ссылается на описание.

Если вы поможете мне выполнить это задание, я буду очень счастлив!

Спасибо, Уилл

1 Ответ

0 голосов
/ 09 января 2010

Я нашел один модуль, который, кажется, работает примерно так: Glossify (http://drupal.org/project/glossify). Я никогда не использовал его сам, но это стоит попробовать. Если Glossify не работает для вас, подумайте о том, как помочь улучшить модуль, или написать собственный модуль самостоятельно.

Теоретически существует два способа преобразования слов в ссылки: когда узел сохраняется или когда узел отображается. В обоих случаях вы будете проверять каждое слово в узле и проверять, соответствует ли оно одной из способностей. Оба решения имеют свои преимущества и недостатки. Выбирая решение, вы должны следить за производительностью, потому что действия по поиску и замене могут занимать много системных ресурсов, особенно если у вас много пользователей, длинные тексты и много возможностей.

Изменение содержимого при сохранении узла может быть выполнено в Drupal путем реализации hook_nodeapi ($ op = presave). Непосредственно перед тем, как содержимое записывается в базу данных, ваша функция nodeapi делает свое дело. Преимущество: поиск и замена выполняется только один раз для каждого узла. Недостаток: новые ссылки не будут добавлены в существующие узлы при добавлении новой способности (если только вы не сохраните узел повторно).

Изменение содержимого при просмотре узла может быть выполнено с помощью hook_nodeapi ($ op = view) или hook_filter. Ссылки не сохраняются в базе данных, а добавляются на лету каждый раз, когда пользователь просматривает узел. Преимущество: новые способности также будут связаны в ранее сохраненном узле. Недостаток: производительность, поиск и замена должны выполняться на каждом представлении узла (хотя кэширование, вероятно, решит это частично).

...