我正在嘗試爲ArticleID生成文章basead的URL。Joomla 2.5 - 根據文章ID生成URL
乳寧這個查詢後
SELECT a.sectionid,
CASE WHEN CHAR_LENGTH(a.alias)
THEN CONCAT_WS(":", a.id, a.alias)
ELSE a.id
END AS slug,
CASE WHEN CHAR_LENGTH(cc.alias)
THEN CONCAT_WS(":", cc.id, cc.alias)
ELSE cc.id
END AS catslug
FROM #__content AS a
INNER JOIN #__categories AS cc ON cc.id = a.catid
WHERE a.id = $articleID
我我的結果保存在$data
並生成鏈接是這樣的:
$link = JRoute::_(ContentHelperRoute::getArticleRoute($data[0]->slug, $data[0]->catslug, $data[0]->sectionid));
是,產生的問題鏈接它不是正確的,當我的文章沒有按」不屬於任何菜單。
我注意到,當我的文章沒有與任何菜單關聯時,API獲取active menu id
並添加到生成的鏈接,參數"&Itemid=MyActiveMenuId"
(這發生在route.php
文件中)。但由於文章不存在於活動菜單中,生成的鏈接將不起作用。
我知道,如果API只是忽略「項目菜單ID」而不是獲得「活動菜單ID」,它會工作,但我可以做到這一點,而無需更改Joomla代碼?另外,我希望在項目實際屬於菜單的情況下繼續考慮「項目菜單ID」,因此生成的URL將爲SEF。
有什麼辦法可以解決這個問題?或者每篇文章都必須屬於一個菜單項?
我的Joomla版本是2.5.13
您可以嘗試強制itemid。無論如何,getArticleRoute的第三個參數是不是sectionid的語言(這是遺留的,並在Joomla 2中設置爲0。5) –
強制itemid將gerenate一個URL,該URL不會是SEF。關於第三個參數你是正確的,它的語言,但即使傳遞正確的參數,URL問題將繼續。 – Rafael