【问题标题】:Why does Joomla 2.5 SEF URL includes view as a query parameter?为什么 Joomla 2.5 SEF URL 包含视图作为查询参数?
【发布时间】:2014-08-27 08:16:36
【问题描述】:

我有一个带有以下链接值的菜单项 (#1066)(从管理菜单管理页面可以看到):
index.php?option=com_provider&view=providerproducts

我在页面上有一个链接:
index.php?option=com_provider&view=providerproducts&Itemid=1066

当 SEF URLs 开启时,URL 被重写为:
/products-and-services?view=providerproducts

注意视图参数显式传递。

但是使用没有视图的 URL,即/products-and-services 可以正常工作。

问题: 难道我做错了什么?为什么默认路由器会保留视图参数,即使它是多余的?

请注意,从原始 URL(即/index.php?option=com_provider&Itemid=1066)中删除视图会导致 SEF URL /products-and-services,这很好,但在关闭 SEF URL 时这不起作用。

【问题讨论】:

    标签: joomla2.5


    【解决方案1】:

    com_provider 组件的路由器可能没有未设置视图参数。如果这是您自己编写的组件,请确保正在处理它。

    我假设“providerproducts”是您的默认视图,因此它假定这是在没有它的情况下正确显示和呈现页面的视图。

    编辑:

    “默认路由器”不会取消设置视图。例如,转到 components/com_content/router.php ,您会看到它们也取消了核心组件中的视图。

    这是因为组件可以从内部动态更改其视图,但不能更改其 Itemid 或组件名称 - 当您创建菜单项时设置一次。

    例如,如果您的组件有两个视图,您可能不想为每个视图设置一个菜单项,但希望它是动态创建的,例如 /products-and-services 和 /products-and-services /view2 - 由于“view2”段来自视图的名称,因此必须在组件的路由器中定义该 URL 结构。

    如果在菜单路由器中未设置视图,则 URL 将是 /products-and-services 和 /products-and-services?view=view2(或尝试 /products-and-services 和 /products-and- services ,使第二个视图成为不可能),因为它不知道如何处理第二个视图。

    【讨论】:

    • 我没有为我的组件提供自定义路由器,即 SEF URL 是由默认路由器在 /includes/router.php 构建的,它不会取消设置视图。所以我的问题是为什么。如果在菜单中指定了视图,我认为将其调整为取消设置视图会很容易,但我怀疑他们没有将其包含在默认路由器中是有原因的。我想知道为什么会这样。
    猜你喜欢
    • 2010-12-22
    • 2013-05-10
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 2018-03-12
    • 1970-01-01
    相关资源
    最近更新 更多