it-swarm-es.com

¿Por qué debería usar el tema (), en lugar de llamar a las funciones del tema directamente?

¿Por qué debería usar theme(), en lugar de llamar a las funciones del tema directamente?

theme('box', $title, drupal_get_form('comment_form', $edit, $title));

¿Por qué el código no convoca la función del tema directamente, como en el siguiente código?

theme_box($title, drupal_get_form('comment_form', $edit, $title));
4
enjoylife

Tienes que usar la función Theme () para que el sistema de anulación funcione. Por ejemplo, su tema puede anular la función temática para un módulo, o se puede usar un archivo de plantilla (.tpl.php).

13
davidhernandez

En el ejemplo que realizó, cuando llame theme_box() Está llamando a una función específica; Cuando está llamando theme('box'), la función está llamando a una función que normalmente istheme_box(), pero si un módulo implementa hook_theme_registry_alter () usando el siguiente código, la función Ser llamado es theme_mymodule_box().

function mymodule_theme_registry_alter(&$theme_registry) {
  // Kill the next/previous forum topic navigation links.
  if (!empty($theme_registry['box'])) {
      $theme_registry['box']['function'] = 'theme_mymodule_box';
    }
  }
}

Observe que en Drupal 7 Cada función temática tiene una función de preproceso, no solo las funciones temáticas usando un archivo de plantilla. Esto significa que, en pocos casos, no es necesario anular una función de tema. Si el código solo necesita cambiar el contenido de una variable pasada a la función temática, el uso de una función de preproceso es lo que se debe hacer en Drupal 7.

1
kiamlaluno