如何閱讀某個URI所屬的部分?獲取Joomla!來自URL的類別
我想增強mod_breadcrumb將部分和類別放入HTML中。 JApplication-> getPathway()返回一個JPathway,它基本上包含一個名字和一個URL組成的聯合數組(如$ list [] - > name和$ list [] - > link)。我認爲,應該可以從鏈接中獲取該部分和類別,但不知道如何。
一個起點可能是解析成JURI-Object,但是從那裏我不知道如何得到更進一步。有任何想法嗎?
如何閱讀某個URI所屬的部分?獲取Joomla!來自URL的類別
我想增強mod_breadcrumb將部分和類別放入HTML中。 JApplication-> getPathway()返回一個JPathway,它基本上包含一個名字和一個URL組成的聯合數組(如$ list [] - > name和$ list [] - > link)。我認爲,應該可以從鏈接中獲取該部分和類別,但不知道如何。
一個起點可能是解析成JURI-Object,但是從那裏我不知道如何得到更進一步。有任何想法嗎?
漂亮的直線前進......
我假設你要添加類別和段的文章,而不是你的自定義組件。
檢查請求的當前URL是否爲文章。如果是文章,你知道文章ID,使用這篇文章編號去數據庫並得到catid
從#__content
,使用此cat_id
去#__categories
並得到section
(這是部分ID),去#__sections
以獲得正確的部分名稱。所有這些都可以在1個sql語句中完成。
$breadcrumbs =& JFactory::getApplication()->getPathway();
$breadcrumbs->addItem("SECTION_NAME", JRoute::_("index.php?option=com_content&view=section&id=SECTION_ID"));
$breadcrumbs->addItem("CATEGOY_NAME", JRoute::_("index.php?option=com_content&view=category&id=CATEGORY_ID"));
$breadcrumbs->addItem("Article");
或者,如果你知道從路徑項的URL。你可以解析它並獲得IDS。這裏的技巧不是獲得默認的URI對象,因爲事情會變得很難看,請使用JFactory::getURI('YOU_URI_NAME')
。
<?php
// You need to get Your own uri, you do not want to modify default URI
// because this will messup a lot of things
$uri = JFactory::getURI('MyCustomURI');
// Test # 1 [ID = SECTION_ID]
$url = "index.php?option=com_content&view=section&id=SECTION_ID";
$uri->parse($url);
echo "CURRENT SECTION = " . (int) $uri->getVar('id');
// Test # 2 [ID = 123]
$url = "index.php?option=com_content&view=section&id=123";
$uri->parse($url);
echo "CURRENT SECTION = " . (int) $uri->getVar('id');
?>
謝謝,這基本上是mod_breadcrumb的工作方式。我想做的事情基本上是相反的。對不起,如果我的解釋是誤導性的。 Asume,我的模塊中有'$ breadcrumbs',並且希望獲得名稱爲「Article」的項目的類別名稱。我想,最簡單的方法是閱讀鏈接(你用'JRoute :: _(「index.php?option = com_content&view = category&id = CATEGORY_ID」)'填充),並以某種方式從uri獲取類別標識。這可能嗎? – MaoPU 2010-09-13 16:41:38
替代方法解決你的dillema問題嗎? – Alex 2010-09-13 16:56:03
基本上可以。爲了獲得某個項目的類別(或部分),我使用了下面的代碼:'$ uri = new JURI(); $ URI->解析( '?的index.php選項= com_content&視圖=分類和ID = CATEGORY_ID'); if($ uri-> getVar('view')=='category'){$ categoryID = $ uri-> getVar('id');} if($ uri-> getVar('view')=='section '){$ sectionID = $ uri-> getVar('id');}'。從那裏,我可以使用數據庫查詢從數據庫中獲取類別名稱(或部分名稱)。我猜,沒有Joomla API調用來解決這個問題,對吧?所以我猜,問題幾乎解決了。 – MaoPU 2010-09-13 17:47:04