In diverse projecten gebruiken wij de module menu_trim. In de primary links wordt dan een pagina gekoppeld met een pagina die in een van de „getrimde” menu’s staat. Tot daar gaat het allemaal goed. Maar vaak staan er ook Drupal pagina’s, zoals zoeken of contact, in de primary links. Als zo’n pagina wordt geopend, dan is er geen corresponderend „getrimd” menu. U wilt dan meestal een basis of standaard menu getoond hebben. Maar daarin voorziet menu_trim niet.
Met onderstaande code is dit oplosbaar. Naast een „getrimd” menu is er ook altijd het normale menu zichtbaar in de blokken pagina (Start » Beheren » Site-constructie » Blokken). Dat laatste menu wordt normaal niet gebruikt. Dit menu gaat nu dienst doen als standaard menu door het conditioneel te laten verschijnen. Klik hiervoor op „instellen” naast het menu en ga helemaal naar onderen op de nieuw geopende pagina. In het onderdeel „Pagina-specifieke zichtbaarheidsinstellingen” kunnen we aangeven wanneer dit blok weergegeven moet worden. Kies hier voor „Show if the following PHP code returns TRUE (PHP-mode, experts only).” en zet de onderstaande code in het veld er onder.
<?php
// kijk of een getrimd menu blok wordt weergegeven
if (function_exists(menu_trim_block)) {
$blocks = menu_trim_block('list');
if (is_array($blocks)) {
foreach($blocks AS $mid => $info) {
$data = menu_trim_block('view', $mid);
// als dit blok wordt getoond dan zijn we klaar: ons blok is overbodig
if ($data) {
return FALSE;
}
}
}
}
// geen enkel getrimd blok aanwezig. Dus ons blok moet worden weergegeven
return TRUE;
?>

