簡體   English   中英

Joomla:如何獲取關聯菜單項的URL(多語言/從當前頁面)

[英]Joomla: How to get the URL of an associated menu item (Multilingual / from current page)

我想手動將hreflang屬性添加到頁面的HTML標頭中。

我正在將Joomla 3.4.8 + SEBLOD組件用於多語言站點。 如果我關聯了不同語言的菜單項,通常會將“鏈接標簽”和“ hreflang屬性”添加到標題中,以使菜單項之間的關系對於搜索引擎可見。

由於某種原因,如果我在Seblod組件的列表和搜索視圖中,則不會添加此標記。 這就是為什么我要手動將丟失的標簽寫到頭部的原因。

我知道如何向頭部添加元信息以及如何獲取當前菜單項的ID, 但是我不知道如何獲取當前頁面相關菜單項的ID(或SEO友好URL)

有任何想法嗎?

我希望我能很好地描述自己...預先感謝!

示例:當前頁面的菜單項是德語。 它與英語菜單項相關聯/相連(該菜單項顯示當前頁面的英語版本)。 我需要的是英語菜單項的SEF-URL。

最簡單的解決方案是查詢活動菜單,以便獲得菜單的所有變量。 下面的代碼應返回菜單的當前活動路線:

$app = JFactory::getApplication();
$menu   = $app->getMenu()->getActive();

$sefUrl = $menu->route;

echo '<pre>';
print_r($menu);
echo '</pre>';

echo $sefUrl;

//HERE IS THE PHP TO SET A META DYNAMICALLY IF YOU NEED IT AS WELL
$doc =& JFactory::getDocument();
$doc->setMetaData( 'tag-name', 'tag-content', true );

如果返回的路由不是與您的頁面匹配的正確路由,則可以使用strpos檢查鏈接屬性是否包含index.php,然后將其和菜單ID串聯起來,以通過JRoute運行SEF網址,例如所以:

if(strpos($menu-Link,'index.php?') !== false){
    $sefUrl = JRoute::_($menu->link.'&Itemid='.$menu->id);
}

希望這對您有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM