ZF2导航和站点地图

时间:2014-06-14 15:31:02

标签: navigation zend-framework2 sitemap breadcrumbs

我有一个名为MenuNavigatin的类,并将其用于顶层菜单

class MenuNavigation extends DefaultNavigationFactory

查询并向此类添加500个产品以将此导航用于站点地图是一个好习惯吗? 或者我应该为sitemap和breadcrumbs设置另一个类吗? 或者也许在生成站点地图时添加特定于站点地图的网址

1 个答案:

答案 0 :(得分:1)

Zend \ Navigation对于许多页面来说往往很慢。我绝对不会在每个请求上将所有500页添加到导航。我只将这些页面添加到需要知道的基础上,可能是:

  1. 对于正常浏览,您可能不需要主菜单中的任何产品,因此您可能只有“家”和“产品”这样的页面
  2. 当您选择产品时,您希望将其作为“产品”的子项目,以便在您访问产品时“产品”在菜单中处于活动状态。因此,在您发送此控制器/操作时,请从所选产品创建一个页面并将其添加到“产品”父级。
  3. 对于站点地图,您可能希望包含所有产品以帮助搜索引擎找到您的产品。只有在此请求时,您才应解析产品并将其添加为页面。
  4. 对于第三种情况,你可以做各种事情来加速这种渲染:

    1. 缓存站点地图的结果,以便下一个访问者具有快速响应
    2. 当站点地图中的某些内容发生更改(您可能异步执行)时,预热缓存
    3. 此外,向站点地图添加页面是启用事件管理器的完美正当理由。您的站点地图控制器将触发一个事件,您的产品模块将侦听该事件。接下来,它添加所有这些页面。这有助于您解耦应用程序,当您想要合并某些内容时(例如,添加500个事件),您只需为站点地图控制器添加一个侦听器,并将它们添加为页面。