logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll

Темizacija menija (template.php)

29/07/2025, by Ivan
Forums

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.