¿Dónde se define links__system_main_menu?

13

Busqué links__system_main_menu, pero solo encuentro usos de este tema. ¿Dónde se define?

hpn
fuente

Respuestas:

24

Drupal 7 core en realidad no define esta función.

links__system_main_menues un patrón de gancho de tema de la forma [base hook]__[context]. Cuando los enlaces tienen un tema theme('links__system_main_menu', $vars), theme()buscarán y usarán theme_links__system_main_menu()si se ha definido. Si no, lo usará theme_links().

Ver theme () para la documentación oficial de este comportamiento. El Capítulo 3 del Desarrollo del Módulo Drupal 7 hace un excelente trabajo al explicar esto y proporciona varios ejemplos.

Por cierto, el mismo principio se aplica a los archivos de plantilla. Si, por ejemplo, llamamos theme('node__article__1', $vars), theme()buscará un node--article--1.tpl.phparchivo y luego node--article.tpl.php, finalmente , recurrirá a node.tpl.phpsi ninguno de ellos está definido.

keithm
fuente
11

theme_links__system_main_menu()actualmente no está definido desde Drupal, pero Drupal lo usará MYTHEME_links__system_main_menu(), si lo define en su tema.

function MYTHEME_links__system_main_menu($variables) {
  $html = "<div>\n";
  $html .= "  <ul>\n"; 

  foreach ($variables['links'] as $link) {
    $html .= "<li>".l($link['title'], $link['path'], $link)."</li>";
  }

  $html .= "  </ul>\n";
  $html .= "</div>\n";

  return $html;
}

Puede encontrar más información en http://drupal.org/node/1033442#comment-5076932 .

tecjam
fuente