我知道你可能没有这么多问题......
我正在开发一个组件,我希望能够在启用SEF时处理非SEF URL,无论是内置的SEF还是sh404sef。
Joomla将ORIGINAL非SEF网址存储在任何地方即。的index.php COM = com_fred&安培;?视图=主页
我发现任何激活的SEF都会将JURI :: getInstance()值更改为SEF等效值。 我还发现$ REQUEST ['URI']值不适用于所有平台/服务器等。
感谢您的帮助
答案 0 :(得分:4)
将GET/POST
请求中的所有变量都放入数组中。此时,您还可以在生成URL字符串之前修改这些值。
$getVars = JRequest::get( 'GET' );
如果您确实需要URL字符串,可以使用以下命令获取:
$newURL = http_build_query($getVars);
希望它有所帮助!
答案 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);
?>
以前的答案: 用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