Темizacija menija (template.php)
Zdravo, u fajl template.php ubacujem sledeći kod:
function ime_teme_menu_link__main_menu(array $variables) { $element = $variables['element']; $sub_menu = ''; if ($element['#below']) { $sub_menu = drupal_render($element['#below']); } $output = '<span>' . l($element['#title'], $element['#href'], $element['#localized_options']) . '</span>'; return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n"; }
Međutim, tag <span> se ne pojavljuje.
function ime_teme_links__system_main_menu(&$vars) { foreach ($vars['links'] as &$link) { $link['title'] = '<span>' . $link['title'] . '</span>'; $link['html'] = TRUE; } return theme_links($vars); }
Ova konstrukcija radi, ali omot nije tamo gde treba, unutar taga <a><span></span></a>.
Molim vas, možete li mi reći zašto prva konstrukcija ne radi kako treba?
Prvi primer ne radi zato što funkcija l()
u Drupalu generiše ceo HTML link kao string, i ako pokušate da ga umotate u <span>, to neće raditi kako očekujete jer <span> će obuhvatiti ceo link, a ne naslov linka unutar <a> taga.
Da biste ubacili <span> unutar <a> taga, morate direktno modifikovati naslov koji se prosleđuje funkciji l()
, ili ručno sastaviti HTML link, a ne koristiti l()
.
Evo kako to možete uraditi da dobijete željeni rezultat:
function ime_teme_menu_link__main_menu(array $variables) {
$element = $variables['element'];
$sub_menu = '';
if ($element['#below']) {
$sub_menu = drupal_render($element['#below']);
}
// Pravimo naslov linka sa unutar taga.
$options = $element['#localized_options'];
$options['html'] = TRUE;
$options['attributes']['title'] = $element['#title']; // Ako želite tooltip.
// Naslov linka sa .
$link_title = '<span>' . check_plain($element['#title']) . '</span>';
$output = l($link_title, $element['#href'], $options);
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}
Ovde se u opcijama linka dodaje ključ html = TRUE
da Drupal zna da ne escape-uje HTML u naslovu, a naslov se sada pravi sa <span> unutar samog linka.
Na ovaj način dobijate <a><span>Naslov</span></a> strukturu, što je ono što vam treba.
- Пријавите се или се региструјте да би сте послали коментар