1

ゲストブック機能をオーバーライドしたい。正確には、[mysite]/concrete5/core/controllers/blocks/guestbook.phpaction_form_save_entry()の関数をオーバーライドしたい

私はこれらの方法でそれをオーバーライドしようとしました:

  • [mysite]/controllers/blocks/guestbook.php
  • [mysite]/core/controllers/blocks/guestbook.php

それらの機能はありません。そのファイルを上書きする方法が見つかりません。ドキュメントhereおよびhere/core/は、そのディレクトリをオーバーライドする方法を示していません。彼らのフォーラムは決して役に立ちません。Google の検索結果も「core」キーワードで誤解されるだけです。/concrete5/すべての結果は、正確な真ではなく、ディレクトリに存在するものとして「コア」の意味を取ります/concrete5/core

その /concrete5/core/ ディレクトリは、新しいバージョンでのみ表示されるようです。CMIIW。

ところで、その関数で何をしたいのかについても説明する必要があるかもしれません。おそらく、単にオーバーライドするのではなく、これに対する別の回避策があります。SMS通知機能を追加したい。したがって、誰かが新しいコメントを送信するたびに、特定のページの管理者に SMS が送信されます。

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 に答える