Salut,
J'ai été confronté au même problème, j'ai résolu ça avec quelques fonctions php que voici :
//------------------------------------
// récupération du nom et de l'id du root
//------------------------------------
function getRubrique ($page_id) {
$tab = array();
$tab["parent_id"] = getRoot($page_id);
$tab["parent_nom"] = getParentName($tab["parent_id"]);
return $tab;
}
function getRoot($page_id) {
$top_rub = 0;
$sql = "select parent from pages where page_id='".$page_id."'";
$req = mysql_query($sql);
if(mysql_num_rows($req)>0) {
$row = mysql_fetch_assoc($req);
$parent_id = $row["parent"];
if($parent_id==0) {
$top_rub = $page_id;
} else {
$top_rub = getRoot($parent_id);
}
}
return $top_rub;
}
function getParentName($page_id) {
$parentName = "";
$sql = "select page_title from pages where page_id='".$page_id."'";
$req = mysql_query($sql);
if(mysql_num_rows($req)>0) {
$row = mysql_fetch_assoc($req);
$parentName = $row["page_title"];
}
return $parentName;
}
Explications :
la fonction getRubrique va chercher la page root (le niveau 1 des pages) avec la fonction getRoot, puis le nom de cette page root avec getParentName.
Quand elle l'a obtenue, elle retourne un tableau. J'utilise ce tableau pour afficher le nom de la rubrique dans laquelle je suis et le bandeau qui correspond :
$myTab = getRubrique(PAGE_ID); // PAGE_ID est le page_id de la page en cours
// on détermine quel bandeau afficher
$nom_bando = "haut_defaut.jpg";
$nom_top = "defaut";
// regarder si haut_PAGE_ID existe
$bando = "haut_".$myTab["parent_id"].".jpg";
if(file_exists(WB_PATH.'/templates/'.TEMPLATE.'/img/'.$bando)) {
$nom_top = $myTab["parent_id"];
}
Mes bandeaux s'appellent haut_1.jpg, haut_2.jpg...en fonction de l'identifiant de la page root.
L'avantage, c'est que si tu rajoutes ou enlèves des pages dans tes rubriques, tu n'es pas obligé de modifier ton code, c'est pris en compte automatiquement.
N'hésite pas à demander si qq chose n'est pas clair !