如何覆盖[mysite] / concrete5 / core中的文件

时间:2012-12-26 10:32:48

标签: php concrete5

我想覆盖留言簿功能。确切地说,我想覆盖 [mysite] /concrete5/core/controllers/blocks/guestbook.php

上的action_form_save_entry()函数

我试图以这些方式覆盖它:

  • [mysite的] /controllers/blocks/guestbook.php
  • [mysite的] /core/controllers/blocks/guestbook.php
不,他们的作品。我找不到如何覆盖该文件的任何方法。文档herehere未显示如何覆盖该/core/目录。他们的论坛从不帮助。谷歌的结果也被误用“核心”关键字。所有结果只是将“核心”含义视为/concrete5/目录中存在的内容,而不是真正的/concrete5/core

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

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

1 个答案:

答案 0 :(得分:2)

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

“真正的”留言簿控制器位于 /concrete/blocks/guestbook/controller.php 。你会发现它只是一个类的shell:

class GuestbookBlockController extends Concrete5_Controller_Block_Guestbook {}

您引用的文件定义了Concrete5_Controller_Block_Guestbook

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