更新-以下の更新を参照してください。
ZFベースのCMSのパフォーマンスを改善しようとしZend_Navigation
ています。また、メニュー構造を使用して作成したオブジェクトをキャッシュしようとしています。オブジェクトをキャッシュすると、現在のページをアクティブに設定できないか、すべてのページのメニューのコピーがキャッシュに保存されます。
現在のページに関係なく、構造をキャッシュできるようにするために、メニューの現在のページの強調表示をjQueryに移動しました。これはうまく機能しています。Breadcrumb_Helper
次に、 (メニューと同じZend_Navigation
オブジェクトを使用する)が何も表示されていないことに気付きました。これは、ページがアクティブに設定されていないためです。
ページのIDを知っている場合、オブジェクトの内部に入り、Zend_Navigation
その特定のオブジェクトをアクティブに設定する方法はありますか?
理想的には、次のようなことをしたいと思います。
$nav->findOneBy("id", $currentPageId)->setActive(true);
しかし、このようなオブジェクトのページにアクセスする方法はないようです。コードを見てfindOneBy
、現在のページを取得してremovePage
から削除し、収集したページをアクティブに設定し、収集してaddPage
更新したページを元に戻すために使用することはオプションかもしれませんが、かなり複雑です。
もう1つのオプションは、Zend_Navigation
オブジェクトの作成に使用する配列をキャッシュすることです。これにより、キャッシュから基本配列を取得した後、現在のページをアクティブに設定する方が簡単になります。
(cms内のすべてのページには、、など/privacy
のURLが/about-us
あり、デフォルトのフロントエンドモジュール、コントローラー、アクションにルーティングされるため、URLにcontrollrt / actionがないため、ZFがどこにあるかを判断できます。 。)
更新: Ahem ....私が提案したコードは実際に機能したようで、実際にはマジックファインダーメソッドを使用してもう少し簡単に実行できます...:
$nav->findOneById($currentPageId)->setActive(true);