如何在启用SEF时找到非SEF URL(Joomla 1.5)?

时间:2009-06-13 07:14:01

标签: joomla joomla1.5 joomla-sef-urls

我知道你可能没有这么多问题......

我正在开发一个组件,我希望能够在启用SEF时处理非SEF URL,无论是内置的SEF还是sh404sef。

Joomla将ORIGINAL非SEF网址存储在任何地方即。的index.php COM = com_fred&安培;?视图=主页

我发现任何激活的SEF都会将JURI :: getInstance()值更改为SEF等效值。 我还发现$ REQUEST ['URI']值不适用于所有平台/服务器等。

感谢您的帮助

6 个答案:

答案 0 :(得分:4)

  1. GET/POST请求中的所有变量都放入数组中。此时,您还可以在生成URL字符串之前修改这些值。

    $getVars = JRequest::get( 'GET' );
    
  2. 如果您确实需要URL字符串,可以使用以下命令获取:

    $newURL = http_build_query($getVars);
    
  3. 希望它有所帮助!

答案 1 :(得分:3)

您可以使用JRequest :: get(true)从URL获取所有查询参数的数组。但是请注意,我还没有检查它是否只返回GET参数或它是否所有REQUEST参数(我认为更有可能)。但是,它可能有助于您正在寻找的东西。

答案 2 :(得分:3)

我回到这个代码并再次尝试但是给了我一些错误,所以我根据我以前用这个新答案制定的前一个答案进行了部分改写(在Joomla上工作得很好!3.4) 0.5)

<?php
  // "unparse" the Joomla SEF url to get the internal joomla URL
  JURI::current();// It's very strange, but without this line at least Joomla 3 fails to fulfill the task
  $router =& JSite::getRouter();// get router
  $query = $router->parse(JURI::getInstance()); // Get the real joomla query as an array - parse current joomla link
  $url = 'index.php?'.JURI::getInstance()->buildQuery($query);
?>

的Joomla! API文档:JInput - JUri


以前的答案: 用Google搜索I found this

var dataset = Data.find({<--whatever-query-you-need-->},{fields: {labels:1, rating:1}}).fetch()

我用Joomla测试了它! 3.4.4及其工作正常! Dunno,如果它可以使用1.5

答案 3 :(得分:1)

对于菜单项,它存储在'jos_menu'表中的'link'列中(但itemid不在此字符串中 - 它是'id'列)。

对于其他任何东西,它可能没有存储在数据库中,但通常很容易解决,特别是对于核心组件。使用第三方组件可能会有点痛苦,但您可以通过大多数组件的MVC架构来了解它。

否则,您可以随时关闭开发站点上的SEF /为此创建开发站点。

您是否对某个特定组件感到好奇?

答案 4 :(得分:0)

我在这里发布的链接: Joomla URLs: An article doesn't have a pretty URL by itself?

为Joomla 1.5中的URL提供了非常好的“速成课程”

答案 5 :(得分:0)

您无需对非SEF网址执行任何特殊操作。即使您打开了SEF网址,如果有人使用非SEF网址访问该网站,Joomla仍会显示正确的网页。组件中处理SEF URL的部分(路由器)仅告诉Joomla如何使用URL信息来确定要显示的内容。当呈现非SEF URL时,Joomla就像通常那样解析查询字符串。

对于任何给定的组件,URL都是这样构建的 -

的index.php选项= com_name&安培;图= XXXX和ID = 1111安培; ITEMID = 11111

  • 选项是组件的名称
  • view当然是显示哪个视图
  • id是特定内容项的ID
  • itemid是用于确定模块/模板分配的菜单项