1

我想覆盖留言簿功能。确切地说,我想覆盖[mysite]/concrete5/core/controllers/blocks/guestbook.phpaction_form_save_entry()上的函数

我试图通过以下方式覆盖它:

  • [我的网站]/controllers/blocks/guestbook.php
  • [我的网站]/core/controllers/blocks/guestbook.php

他们都没有工作。我找不到任何方法来覆盖该文件。此处此处的文档未显示如何覆盖该/core/目录。他们的论坛从来没有帮助。谷歌结果也只是被“核心”关键字误导。所有结果都只是将“核心”含义视为/concrete5/目录中存在的内容,而不是完全正确的/concrete5/core

看起来 /concrete5/core/ 目录只出现在较新的版本上。CMIIW。

顺便说一句,也许我还应该告诉你我想用那个函数做什么。可能您对此有另一种解决方法,而不是简单地覆盖它。我想向它添加短信通知功能。因此,每当有人提交新评论时,都会向特定页面的管理员发送一条短信。

4

1 回答 1

2

是的,/concrete/core 目录结构是 5.6 的新内容。c5 上的教程和文档可能......缺乏......但在这种情况下,这只是他们落后一点的问题。

“真正的”留言簿控制器位于/concrete/blocks/guestbook/controller.php。你会注意到它只是一个类的外壳:

class GuestbookBlockController extends Concrete5_Controller_Block_Guestbook {}

您引用的文件定义Concrete5_Controller_Block_Guestbook.

因此,解决方案是覆盖真正的控制器,而不是它扩展的任何内容(即,您正在查看的文件)。这样想,应该更清楚需要在/blocks/guestbook/controller.php创建一个文件。事实上,只需复制我上面引用的 controller.php,因为您需要保留(有时是多个)类。然后,您可以覆盖特定功能。(不要忘记调用 parent::action_save_form_entry())。

于 2012-12-29T09:44:47.687 回答