2016-04-29 56 views
0

獲得內容插件中的SEF URL我正在開發一個Joomla插件,我想要捕獲事件onContentAfterSave,以便將新保存的文章發佈到URL縮短器,以用於社交網絡。Joomla:從ID

有人可以幫助我如何計算適當的SEF URL到文章詳細視圖(沒有菜單項!)?

的URL應該是這樣的:http://<domain>.<tld>/<category-id>-<category-title>/<article-id>-<article-title>.html

我讀過this post,但並沒有真正提供一個解決方案。

回答

0

我能解決這個問題,這個帖子: https://joomla.stackexchange.com/questions/36/how-do-i-generate-a-sef-url-in-a-custom-module-instead-of-the-real-url

所提供的解決方案是:

$rootURL = rtrim(JURI::base(),'/'); 
$subpathURL = JURI::base(true); 
if(!empty($subpathURL) && ($subpathURL != '/')) { 
    $rootURL = substr($rootURL, 0, -1 * strlen($subpathURL)); 
} 
$url = $rootURL.JRoute::_(ContentHelperRoute::getArticleRoute($article->id, $article->catid)); 

這種解決方案的一個很好的部分是,它也可以包含在安裝一個子目錄。

0

使用JRoute將非基於SEF參數的URL轉換爲SEF。

在鏈接到一個標準的Joomla文章的情況下,就需要提供以下信息:

$url = JRoute::_('index.php?option=com_content&view=article&id='.$article->id); 

$物品─> id爲通過onContentAfterSave可用,雖然你可能已經調用$文章對象別的東西在這種情況下適當重新命名。

如果您確實有物品的菜單項,請添加菜單項ID的Itemid參數,並且它將加載與該菜單項相關的模塊。

+0

感謝一個日誌,但我認爲,這不是我正在尋找的東西:這生成的URL像http:// /<1st-level-menu>/<2nd-level-menu>.html?id= ,這會導致404錯誤。與此同時,我能夠找到一個可行的解決方案,請參閱下面的答案。 – Windwalker