我正在开发一个 Joomla 2.5 内容插件, 当文章保存时, 需要编程创建 SEF url 。
I ve managed to make this work when the regular Joomla SEF is activated. My plugin is using the regular Joomla JRoute::_(); to build a SEF URL. This works great with native Joomla. For example the url
http://localhost/index.php?option=com_content&view=article&id=123
翻译为
http://localhost/index.php/mycategory/article-title-123.html
我的代码看起来是这样的:
private function joomlaSefUrl($article){
require_once(JPATH_SITE.DS. components .DS. com_content .DS. helpers .DS. route.php );
$siteURL = substr(JURI::root(), 0, -1);
if(JPATH_BASE == JPATH_ADMINISTRATOR) {
// In the back end we need to set the application to the site app instead
JFactory::$application = JApplication::getInstance( site );
}
$articleRoute = JRoute::_( ContentHelperRoute::getArticleRoute($article->id, $article->catid) );
$sefURI = str_replace(JURI::base(true), , $articleRoute);
if(JPATH_BASE == JPATH_ADMINISTRATOR) {
$siteURL = str_replace($siteURL.DS. administrator , , $siteURL);
JFactory::$application = JApplication::getInstance( administrator );
}
$sefURL = $siteURL.$sefURI;
return $sefURL;
}
问题在于当像 sh404SEF 这样的第三方扩展名被安装时, 我从使用 JRoute 获得的 SEF URL ::_ () 方法仍然是 Joomla 常规路线 url :
http://localhost/index.php/mycategory/article-123.html
而不是预期的 sh404SEF s url
http://localhost/Mycategory/article-title.html
Joomla看不到 sh404SEF 是安装的, 所以通过使用 Jrout: (), 我总是得到常规的 SEF Joomla url 。 所以我需要找到一种方法使用 sh404SEF Jrout: em> () 类, 直接来自我的插件, 而不是常规的 Joomla 路由器 类 。
有谁知道SH404SEF课程是如何运作的吗?