プラグインで、2 つのカテゴリの Shopware HTTP キャッシュを無効にする必要があります。マニュアルには、このイベントを発行する必要があると記載されています。
Shopware()->Events()->notify(
'Shopware_Plugins_HttpCache_InvalidateCacheId',
array(
'cacheId' => 'a14',
)
);
a14 は ID 14 の記事を表します。マニュアルによると、ac を使用してカテゴリ ページのキャッシュを解除できます。ID 113 と 114 のカテゴリのキャッシュを停止するために、これをプラグインの bootstrap.php に追加します。
public function afterInit()
{
Shopware()->Events()->notify(
'Shopware_Plugins_HttpCache_InvalidateCacheId',
array(
'cacheId' => 'c113',
'cacheId' => 'c114',
)
);
}
すべてのレベルで手動でキャッシュを空にしましたが、空にした後にキャッシュが再構築されたときに、良いことも悪いことも何も起こらず、エラーがスローされず、カテゴリがキャッシュから削除されません。誰が私が何を変更すべきか手がかりを持っていますか?
完全な解決策は次のとおりです。トーマスの回答のおかげで、すべてが Bootstrap.php で行われます。
最初に PostDispatch_Frontend_Listing イベントをサブスクライブします。
public function install()
{
$this->subscribeEvent('Enlight_Controller_Action_PostDispatch_Frontend_Listing', 'onPostDispatchListing');
return true;
}
次に、特定の条件下で no-cache-header を送信する関数を作成します。
public function onPostDispatchListing(Enlight_Event_EventArgs $arguments)
{
$response = $arguments->getResponse();
$categoryId = (int)Shopware()->Front()->Request()->sCategory;
if ($categoryId === 113 || $categoryId === 114) {
$response->setHeader('Cache-Control', 'private, no-cache');
}
}
3 番目にプラグインをインストールまたは再インストールして、イベントへのサブスクリプションがデータベースに保持されるようにします。