0

シルバーストライプで公開コマンドをインターセプトできる関数の書き方を教えてくれる人はいますか? ページの変更が発生するたびに、別のシステムへの HTTP 呼び出しが送信され、ページが変更されたことを管理者に通知するシステムを実装したいと考えています。その後、システムに数分間待機させて、承認されていない場合に変更を削除する時間を管理者に与えます。

4

1 に答える 1

1

SiteTreeクラスには、この目的で使用できるさまざまなイベント フックがあります。

class MySiteTreeExtension extends DataExtension {
    function onAfterPublish() {
        $this->notifyMyAdmin(sprintf('Page "%s" has been published', $this->owner->Title));
    }
}

に次の追加で拡張機能を適用しますmysite/_config.php

Object::add_extension('SiteTree', 'MySiteTreeExtension');

notifyMyAdmin()その HTTP 呼び出しを行うには、明らかにメソッドを実装する必要があります。ただし、一般的には、ユーザー アクションに対して同期 HTTP 呼び出しを実行しないことをお勧めします。これは、システムが別のシステムの可用性に依存するようになるためです。代わりにmessagequeueモジュールのようなものを使用することを検討してください。「公開を数分待つ」という点では、延長システムを通じて公開を「拒否」することはできません。この目的のためにサブクラスを上書きすることもできますSiteTree->doPublish()が、それでもユーザーにとっては少し奇妙な UI パターンになります。ワークフロー モジュールと「Request Publication」に加えて、それらを自動承認するためのいくつかの cron ジョブを追加すると、より簡単になります。

于 2012-11-17T09:03:06.100 に答える