1

我在我的 elgg 站点中创建了一个名为“adv”的新插件。

在这个插件中,我列出了用户。使用来自其他 elgg 插件“配置文件”的视图

即页面profile/views/default/profile/listing.php。

现在我需要在每个用户的现有视图中设置一个链接。所以我必须编辑配置文件插件,主要是页面profile/views/default/profile/listing.php

但是我怎么能做到这一点,而不修改 elggs 默认插件“配置文件”。

我尝试了一种方法,我从profile/views/default/profile复制了文件夹“profile” 并将其放入adv/views/default/中。但它不起作用。]

是否有任何解决方案通过编辑其他插件向用户视图添加新链接,只编辑我们自己的插件示例“adv”。

4

2 回答 2

2

您需要覆盖配置文件/列表视图,但仅在 Elgg 呈现您的插件页面时,不要干扰可能想要使用核心配置文件/列表视图的其他插件。

我解决这个问题的方法如下:

  1. 创建一个新目录来保存您要覆盖的视图。在您的情况下,我会在 your_site_root/mod 中创建“adv/views/mod”目录。

  2. 将您要覆盖的视图添加到此目录中。同样,您的情况,将 profile/views/default/profile/listing.php 复制到以下位置: adv/views/mod/default/profile/listing.php

  3. 对新创建的视图进行修改。您现在可以根据自己的喜好安全地修改 adv/views/mod/default/profile/listing.php 文件

  4. 告诉 Elgg 在您的插件呈现页面时使用特殊视图。这意味着您必须从 page_handler 函数或 page_handler 引用的 php 文件调用 set_view_location(..) 方法,通常为视图准备数据(如 index.php 或 read.php,但是我不知道你的插件的文件层次结构)所以在你的情况下你会调用 set_view_location('profile/listing', $CONFIG->pluginspath . 'adv/views/mod/'); 来自您的 page_handler 或上述文件之一。确保 $CONFIG 存在并且通过引用它可用(全局 $CONFIG)。

于 2010-10-27T06:54:11.413 回答
1

请检查“使用视图文件路径缓存(推荐)”是否在站点管理中被禁用。因为 elgg 使用硬视图缓存。或者从数据目录中删除 view_cache 文件。并且还让用户您的插件位于插件列表中的“配置文件”下方。

于 2010-07-01T05:45:01.467 回答