記事 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です