2016-02-05 139 views
0

我想手動添加hreflang屬性到頁面的HTML頭。Joomla:如何獲取相關菜單項的URL(多語言/從當前頁面)

我使用Joomla 3.4.8 + SEBLOD組件爲多語言站點。如果我將不同語言的菜單項相關聯,通常會在頭部添加「鏈接標記」和「hreflang屬性」,以使搜索引擎可以看到菜單項之間的關係。

由於某種原因,如果我處於Seblod組件的列表和搜索視圖中,則不會添加此標記。這就是爲什麼我手動將缺少的標籤寫入頭部的原因。

我知道如何將元信息添加到頭部以及如何獲取當前菜單項的ID,但我無法弄清楚如何獲取相關菜單的ID(或者說適合SEO的URL)我當前頁面的項目

任何想法?

我希望我描述自己很好... 在此先感謝!

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

+0

好吧,過了一段時間,我在這裏找到了我的問題的答案:http://stackoverflow.com/questions/11948218/joomla-find-all-translations-of-a-menu-item –

回答

0

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

$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); 

如果被返回的路線是不是符合你的頁面,您可以檢查,看看是否鏈接屬性包括的index.php使用正確的路線strpos,然後將它和菜單id連接起來,以便通過JRoute爲SEF url運行,如下所示:

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

希望這適用於您。

+0

嗨特里, 謝謝期待你的答覆。您描述瞭如何獲取當前菜單項的SEF-URL,但我需要的是所有菜單項的SEF友好URL,它們與當前的多語言目的鏈接/關聯。 示例:當前菜單項是德語,它與英語中的另一個菜單項關聯。我無法弄清楚如何獲得英文菜單項的SEF-URL。 –

+0

它們是如何關聯的?分享一個共同的文章名稱? –

+0

如果你知道文章是如何相關的,你應該能夠查詢該特定文章的菜單項的Itemid,然後以我在這裏得到的相同方式獲取sef url。我可以給你一個代碼示例,如果你能告訴我你是如何鏈接它們的。 如果您有在後臺每種語言多個菜單,在這樣每個菜單的同一篇文章的標題: 英文菜單 - >第1條 德語菜單 - >第1條 該數據庫可以查詢鏈接和Itemid,然後使用menu_type和title作爲where子句過濾器。 –