【问题标题】:Jooma Custom Component Router.php not being called未调用 Jooma 自定义组件 Router.php
【发布时间】:2013-08-07 16:27:13
【问题描述】:

我正在使用 Joomla 3.1。

我的组件中的 router.php 文件有一个奇怪的问题。

我有一个基本的 router.php 文件,目前还没有做太多工作,在我添加我的功能之前,我需要先让它真正用于基本的东西。

我有一个将组件设置为项目类型的菜单项。查看主页显示了我创建的视图。

对于链接,如果我使用以下内容:

echo JRoute::_('index.php?option=com_vacations&view=test&cat=123');

我明白了:

http://mysite/en/component/vacations/?view=test&cat=123

我不希望显示“组件/假期”。所以我试过这个:

echo JRoute::_('index.php?view=test&cat=123');

我得到:

http://mysite/en/?view=test&cat=123

看似正确,但第二种方法从未触及我的 router.php。这意味着我无法将其更改为显示如下内容:

http://mysite/en/test/123

如何修复它,以便通过 router.php 解析 url?

【问题讨论】:

  • 第二个 URL (http://mysite/en/?view=test&cat=123) 是否显示所需组件的视图?
  • 是的。我想我可能已经解决了问题,如果我为我的组件设置了一个菜单项(除了主页),那么链接就可以正常工作。只有当它来自主页时,链接才能如上所述工作。例如http://mysite/en/menualias/ 会在查看时正确生成链接。

标签: joomla joomla2.5 joomla3.0


【解决方案1】:

当您使用 JRoute 创建指向应用程序的链接时,始终创建完整的查询,就像在第一个代码中一样:

echo JRoute::_('index.php?option=com_vacations&view=test&cat=123');

当您实际编写路由函数时,Router 将作为路由器工作。如果没有这些,您的 rooter 将使用默认的 joomla 路由标记返回链接(例如 http://mysite/en/component/vacations/?view=test&cat=123)。 查看来自任何 joomla 组件(如 com_weblinks)的代码。它将帮助您了解整个过程。你可以在这里找到它:/components/com_weblinks/router.php

【讨论】:

  • 谢谢,我在多语言支持方面仍有问题,但您的建议帮助我解决了我遇到的大部分问题。我查看了 joomla 的其他一些包含的组件,但没有查看 weblinks 路由器,这是一个很好的例子。 :)
  • 如果您按照系统的要求实现多语言支持,它将正常工作。路由仅用于将查询转换为有用的字符串。多语言在这个过程背后起作用。因此,如果您按照应有的方式实现多语言,路由器也可以正常工作。 Weblinks 几乎是研究 Joomla 组件是如何构建的理想组件。因此,如果您有任何问题,只需对它或您的组件中存在问题的某些功能进行逆向工程。
猜你喜欢
  • 2014-09-16
  • 1970-01-01
  • 2011-09-23
  • 2011-08-23
  • 2011-07-11
  • 2011-10-19
  • 2016-06-27
  • 2011-11-12
  • 1970-01-01
相关资源
最近更新 更多