2010-09-13 4 views
1

Comment lire la section à laquelle appartient un certain URI?Obtenez Joomla! catégorie à partir d'une URL

Je veux améliorer le mod_breadcrumb pour mettre la section et la catégorie dans le HTML. JApplication-> getPathway() renvoie un JPathway qui contient essentiellement un tableau assiectif combinant un nom et une URL (comme $ list [] -> name et $ list [] -> link). Je pense, il devrait être possible d'obtenir la section et la catégorie d'un lien, mais ne sais pas comment.

Un point de départ pourrait être l'analyse de JURI-Object, mais de là je ne sais pas comment aller plus loin. Des idées?

Répondre

0

assez simple ...

Je suppose que vous voulez ajouter la catégorie et la section de l'article et non votre composant personnalisé.

Cochez si demandé l'URL actuelle pour l'article. Si c'est pour l'article que vous connaissez l'ID d'article, utilisez cet article ID pour aller base de données et obtenir catid de #__content, Utilisez ce cat_id pour aller à #__categories et obtenir section (c'est l'ID de section), passez à #__sections pour obtenir le nom de section approprié . Tout cela peut être fait dans une déclaration de 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"); 

Par ailleurs, si vous connaissez l'URL de l'élément de fil d'Ariane. Vous pouvez l'analyser et obtenir IDS. L'astuce ici n'est pas d'obtenir l'objet URI par défaut par JFactory::getURI() parce que les choses vont devenir moche, utilisez 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'); 
?> 
+0

Merci, c'est fondamentalement la façon dont fonctionne mod_breadcrumb. Ce que je voulais faire, c'est essentiellement le contraire. Désolé, si mon explication était trompeuse. Asume, que j'ai $ chapelures dans mon module et que vous voulez obtenir le nom de la catégorie pour l'article avec le nom "Article". Je pensais que le plus simple serait de lire le lien (que vous avez rempli avec JRoute :: _ ("index.php? Option = com_content & view = category & id = CATEGORY_ID") ') et d'une façon ou d'une autre obtenir l'identifiant de la catégorie. Est-ce possible? – MaoPU

+0

Est-ce qu'une méthode alternative résout votre dillema? – Alex

+0

Fondamentalement oui. Pour obtenir une catégorie (ou une section) pour un certain article, j'ai utilisé le code suivant: '$ uri = new JURI(); $ uri-> parse ('index.php? option = com_content & view = catégorie & id = CATEGORY_ID'); if ($ uri-> getVar ('view') == 'category') {$ categoryID = $ uri-> getVar ('id');} if ($ uri-> getVar ('view') == 'section ') {$ sectionID = $ uri-> getVar (' id ');} '. De là, je pourrais obtenir le nom de la catégorie (ou le nom de la section) de la base de données en utilisant une requête db. Je suppose, il n'y a pas d'appel API Joomla pour résoudre ce problème, non? Donc je suppose que le problème est presque résolu. – MaoPU

Questions connexes