如何在我们自己的插件中覆盖用户配置文件视图,在elgg中

时间:2010-06-08 07:37:45

标签: php elgg

我在我的elgg网站上创建了一个名为'adv'的新插件。

在这个插件中iam列出了users.Which使用其他elgg插件的视图'配置文件

即页面个人资料/ views / default / profile / listing.php。

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

但是我怎么能这样做,而无需修改elggs默认插件'profile'。

我尝试过一种方法,我已经从个人资料/观看/默认/个人资料复制了文件夹'个人资料',并将其放在 adv / views / default / 中。但它没有工作。]

是否可以使用编辑其他插件向用户视图添加新链接,只编辑我们自己的插件示例'adv'。

2 个答案:

答案 0 :(得分: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)。

答案 1 :(得分:1)

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