udj*_*lip 4 php joomla joomla-sef-urls joomla1.6
我有一个我正在处理的自定义组件,我正在编写一个在管理区域中运行的导入脚本.我有以下代码:
$newUrl = ContentHelperRoute::getArticleRoute($import->article_id.':'.$import->alias, $import->catid);
$newUrl = JRoute::_($newUrl);
Run Code Online (Sandbox Code Playgroud)
第一部分工作返回类似于此:
?的index.php选项= com_content&视图=文章&ID = 45:的Joomla-交际和 - sharethis模块&CATID = 18
第二部分显示如下:
/administrator/index.php?option=com_content&view=article&id=45:joomla-sociable-and-sharethis-module&catid=18
以上两个网址都是您希望组件com_content呈现这些网址,就好像我想在管理区域中使用它们一样.
知道如何强制JRoute像在前端使用时那样工作吗?
注意:这是在我的组件的控制器中使用,如果它有任何区别,我包括require_once(JPATH_SITE.'/ component/com_content/help /route.php');
对于那些在谷歌上发现这一点并且使用JRoute :: _()和contentHelper :: getArticleRoute()的人.
$newUrl = ContentHelperRoute::getArticleRoute($import->article_id.':'.$import->alias, $import->catid);
// better will be check if SEF option is enable!
$router = new JRouterSite(array('mode'=>JROUTER_MODE_SEF));
$newUrl = $router->build($newUrl)->toString(array('path', 'query', 'fragment'));
// SEF URL !
$newUrl = str_replace('/administrator/', '', $newUrl);
//and now the tidying, as Joomlas JRoute makes a cockup of the urls.
$newUrl = str_replace('component/content/article/', '', $newUrl);
Run Code Online (Sandbox Code Playgroud)
这是一个适用于 Joomla 3.6 的片段
$routerOptions = [];
if (JFactory::getConfig()->get('sef')) {
$routerOptions['mode'] = JROUTER_MODE_SEF;
}
$siteRouter = JRouter::getInstance('site', $routerOptions);
$link = $siteRouter->build($yourRoute)->toString();
$link = preg_replace('#^/administrator#', '', $link);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11220 次 |
| 最近记录: |