Specially-named functions that a module defines, which are discovered and called at specific times, usually to alter behavior or data.
function hook_user_login(Drupal\user\UserInterface $account) {}
Startar alltid med hook
Har oftast med modulens namn
function hook_user_login(Drupal\user\UserInterface $account) {}
function min_modul_user_login(Drupal\user\UserInterface $account) {}
Hook ersätts med namnet på våran modul
Anropas innan en nod sparas. En nod är innehåll på sajten som t.ex en Artikel.
Anropas när en användare loggar in.
Anropas när ett formulär byggs och låter oss modifiera strukturen.
Används för att registrera nya templates.
/**
* Implements hook_node_presave().
*/
function example_hooks_node_presave(Drupal\Core\Entity\EntityInterface $node) {
$node->setTitle('I change all the titles before save!');
}
/**
* Implements hook_user_login().
*/
function example_hooks_user_login(Drupal\user\UserInterface $account) {
$message = 'Welcome back @username, nice to see you again!';
drupal_set_message(new TranslatableMarkup($message, [
'@username' => $account->getUsername(),
]));
}
/**
* Implements hook_form_FORM_ID_alter().
*/
function example_hooks_form_user_login_form_alter(&$form, $form_state, $form_id) {
$title = new TranslatableMarkup('Remember me');
$description = new TranslatableMarkup('Please remember me for two weeks.');
$form['remember_me'] = [
'#type' => 'checkbox',
'#title' => $title,
'#description' => $description,
];
}
FORM_ID Ersätts med maskin-namnet på formuläret, i detta fallet "form_user_login".
/**
* Implements hook_theme().
*/
function example_templates_theme() {
return [
'example_theme_test' => [
'variables' => [
'text' => null,
],
];
};
Maskin-namn på vår template
Variabler som finns tillgängliga i vår template och som kan skickas in utifrån via en render array.
/**
* Implements hook_theme().
*/
function example_templates_theme() {
return [
'example_theme_test' => [
'variables' => [
'text' => null,
],
];
};
I hook_theme() definierar vi våran templates maskin-namn med understreck men vår template-fil ska ha bindestreck. Alla template filer i Drupal ska ha .html.twig på slutet.
{% if text %}
<div class="text-wrapper">
{{ text }}
</div>
{% endif %}
Variabeln vi definierade i vår hook_theme() tidigare.
/**
* Implements hook_theme().
*/
function example_templates_theme() {
return [
'example_theme_test' => [
'variables' => [
'text' => null,
],
];
};
{% if text %}
<div class="text-wrapper">
{{ text }}
</div>
{% endif %}
{% if colors %}
<ul class="colors">
{% for color in colors %}
<li class="color color-{{ color|lower }}">
{{ color }}
</li>
{% endfor %}
</ul>
{% endif %}
{{ text }}
Skriva ut en variabel
Statements
Loopar
http://twig.sensiolabs.org/documentation