it-swarm-eu.dev

Jak k nabídce připojím jedinečné ID nabídky?

Používám Drupal 7 a chci k určitým nabídkám připojit jedinečný identifikátor. Můj výsledek vyhledávání mi dává možnost změnit položku nabídky, ale chci změnit samotnou nabídku. Existuje způsob, jak to udělat?

2
mohamad salama

Rychlá a špinavá cesta:

Přejděte do adresáře témat a otevřete stránku page.tpl.php. Používám zenové téma a mám následující kód, který vytiskne sekundární nabídku:

     <?php print theme('links__system_secondary_menu', array(
       'links' => $secondary_menu,
       'attributes' => array(
       'id' => 'secondary-menu',
       'class' => array('links', 'clearfix'),
      ),
      'heading' => array(
        'text' => $secondary_menu_heading,
        'level' => 'h2',
        'class' => array('element-invisible'),
      ),
    )); ?>

To lze jednoduše upravit (upravený řádek má hvězdičky):

     <?php print theme('links__system_secondary_menu', array(
       'links' => $secondary_menu,
       'attributes' => array(
       ***'id' => array('secondary-menu', 'my-new-id'),***
       'class' => array('links', 'clearfix'),
      ),
      'heading' => array(
        'text' => $secondary_menu_heading,
        'level' => 'h2',
        'class' => array('element-invisible'),
      ),
    )); ?>

pravit:

Opravdu vám nerozumím, když říkáte, že máte problémy s vícerozměrnými nabídkami a jazyky, ale pokud potřebujete více kontroly, proč nepoužít téma topic_menu_tree? Přepište to v šabloně motivu.tpl.php vašeho motivu takto:

function my_theme_name_menu_tree($variables) {
  if ($variables['some_condition_you_care_about'])
    return '<ul class="menu" id="my_custom_id">' . $variables['tree'] . '</ul>';
  else
    return '<ul class="menu">' . $variables['tree'] . '</ul>';
}
0
Frederik

Jako alternativní řešení byste možná měli zvážit použití Modul Menu block . Slouží k vytváření bloků pro konkrétní nabídky, s vlastními rozsahy hloubky, počáteční položkou atd.

Myslím, že ji nyní používám pro každou nabídku na mém webu, protože mám rád tuto kontrolu A jako bonus navíc přidá vaše jedinečné ID do každé nabídky.

1
electblake

Pomocí nabídky modul atributů můžete přidat vlastní třídy, ID, jména atd. ... do jakékoli položky nabídky v Drupalu. Velmi praktický modul, když se chystáte změnit systém nabídky Drupalu a vytvořit tak vlastní vzhled.

1
Jepedo

Chcete-li motivovat neuspořádaný seznam, musíte zavolat theme_menu_tree (). Chcete-li tomu zavolat, můžete upravit soubor template.php.

function THEMENAME_menu_tree__MENUNAME($variables){
  return '<ul class="your-custom-class" id="your-custom-id">' . $variables['tree'] . '</ul>';
}

Pokud chcete odkazy propojit, zavolejte na téma topic_menu_link ().

function THEMENAME_menu_link__MENUNAME($variables) {
  $element = $variables['element'];
  $sub_menu = '';

  if ($element['#below']) {
    $sub_menu = drupal_render($element['#below']);
  }
  $output = l($element['#title'], $element['#href'], $element['#localized_options']);
  return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}

Nyní je problém s Drupal 7 v tom, že došlo k velké chybě, pokud jde o zobrazení aktivní stopy vlastních nabídek.

Viz vydání
Číslo # 520106 - Neexistuje způsob, jak dynamicky nastavit aktivní stop
Číslo # 942782 - Vlastní nabídky nikdy neobdrží aktivní stop

V podstatě nemáte štěstí, pokud chcete nějaké skutečné vlastní nabídky. Tyto problémy jsou v komunitě drupal velmi dlouhodobé, takže si nejsem jistý, zda budou brzy vyřešeny. Nevím, jestli existují nějaké PHP, které s tím mohou pomoci. Můžete se obrátit na některé alternativní moduly, abyste si usnadnili funkčnost, například Atributy men a Menu Block . Oba mohou pomoci obejít hrubý systém nabídek v Drupal 7.

0
Steven