0

问候所有的助手!

我最近一直在阅读和测试 Drupal 的特性,我发现这个 CMS 非常可扩展且有趣。我开始使用主题、视图、内容类型等……但我正在寻找我在互联网上找不到的东西。

背景:我正在为我的一个非营利组织创建一个新网站,庆祝其成立 10 周年。主要是,这个网站是一个游戏,在它的规则内有不同的能力。我想为不同的能力创建一个词汇表。这不是一个很大的挑战。

这就是我要存档的内容: 有了这个词汇表,我想每次在内容中遇到的能力描述。

能力词汇表(列表): http ://conflitseternels.net/index.php?id=habiletes

每次在内容中遇到一种能力时,它都会链接到它的描述。

如果你能指导我完成这个问题,我会非常高兴!

谢谢你,威尔

4

1 回答 1

0

我发现了一个似乎做类似事情的模块:Glossify ( http://drupal.org/project/glossify )。我自己从未使用过它,但值得一试。如果 Glossify 不适合您,请考虑帮助改进模块,或自己编写自定义模块。

理论上,将单词转换为链接有两种方法:保存节点时或显示节点时。在这两种情况下,您都将检查节点中的每个单词,看看它是否与其中一种能力匹配。两种解决方案都有优点和缺点。在选择解决方案时,您必须关注性能,因为搜索和替换操作会占用大量系统资源,尤其是在您有很多用户、长文本和大量能力的情况下。

在保存节点时更改内容可以在 Drupal 中通过实现 hook_nodeapi ($op=presave) 来完成。就在将内容写入数据库之前,您的 nodeapi 函数会发挥作用。优点:每个节点只执行一次查找和替换。缺点:添加新能力时不会在现有节点中添加新链接(除非您重新保存节点)。

查看节点时更改内容可以通过实现 hook_nodeapi ($op=view) 或 hook_filter 来完成。链接不会保存在数据库中,而是在每次用户查看节点时即时添加。优点:新的能力也将链接到之前保存的节点中。缺点:性能,搜索和替换必须在每个节点视图上运行(尽管缓存可能会部分解决这个问题)。

于 2010-01-08T22:38:56.313 回答