Hulp gevraagd ivm hooking

Ik heb enige tijd geleden twee boeken aangeschaft:
⦁ "Drupal 7 Themes" (Rick Shreves)
⦁ "Programmer's Guide to Drupal" (Jennifer Hodgdon)

Via het eerstse boek ben ik er al in geslaagd om een subthema te maken en de styling van mijn website naar mijn hand te zetten.

Nu wil ik dus wat experimenteren met 'hooking'.

Ik wou eenvoudig beginnen, nl. het wijzigen van de tekst op de submit-knop van het inlog-blok.
Nu staat daar 'Inloggen' en ik zou dat willen vervangen door 'Aanmelden'.
In de module User heb ik de functie 'user_login_block($form)' gevonden, met daarin de regel:
"$form['actions']['submit'] = array('#type' => 'submit',
'#value' => t('Log in'),
);"
Als ik daarin "t('Log in')" wijzig in "t('Aanmelden') krijg ik het gewenste resultaat.
Hiermee zou het opgelost zijn, maar het rechtstreeks wijzigen van een module is natuurlijk vloeken tegen alle principes van Drupal. Bij de eerstvolgende update zou die wijziging terug overschreven worden.
Nee, ik wil het op de goede manier doen, maar dat lukt me dus niet.
Hoe meer ik erover lees, zowel in het tweede bovengenaamde boek als op Drupal.org, hoe meer bomen en hoe minder bos ik zie. Voor een thema kun je een onderliggend subthema maken, via 'base theme = ', maar voor modules is dat blijkbaar niet mogelijk?

Wat ik al gedaan heb:
Een nieuwe map'mijnhooks' gemaakt in sites/all/modules, met twee bestanden:
* mijnhooks.info:

name = MijnHooks
description = Mijn hooks
core = 7.x
files[] = mijnhooks.module

* mijnhooks.module:

<?php

function mijnhooks_user_login_block($form) {
$form['#action'] = url(current_path(), array('query' => drupal_get_destination(), 'external' => FALSE));
$form['#id'] = 'user-login-form';
$form['#validate'] = user_login_default_validators();
$form['#submit'][] = 'user_login_submit';
$form['name'] = array('#type' => 'textfield',
'#title' => t('Username'),
'#maxlength' => USERNAME_MAX_LENGTH,
'#size' => 15,
'#required' => TRUE,
);
$form['pass'] = array('#type' => 'password',
'#title' => t('Password'),
'#size' => 15,
'#required' => TRUE,
);
$form['actions'] = array('#type' => 'actions');
$form['actions']['submit'] = array('#type' => 'submit',
'#value' => t('Aanmelden'),
);
$items = array();
if (variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL)) {
$items[] = l(t('Create new account'), 'user/register', array('attributes' => array('title' => t('Create a new user account.'))));
}
$items[] = l(t('Request new password'), 'user/password', array('attributes' => array('title' => t('Request new password via e-mail.'))));
$form['links'] = array('#markup' => theme('item_list', array('items' => $items)));
return $form;
}

Ik heb uiteraard ook de module 'enabled' ,caches geledigd, afgemeld en terug aangemeld, maar de tekst op de knop was nog steeds dezelfde.

Wie kan mij zeggen wat ik verkeerd deed of wat ik bijkomend nog moet doen?
Dank u,
Gust

Drupalversie: 
7.x
Auteur: 
Gust Van Mierlo
afbeelding van be-web
Door be-web op 30 augustus, 2016 - 09:20

Tekst in de t-functie t() is standaard Engelse tekst. Als je een website in een andere taal hebt, wordt die tekst vertaald naar die taal. De tekst "log in" is bij deze website vertaald in "inloggen". Eigenlijk wil je dus alleen de vertaling aanpassen. Ga daarvoor naar /admin/config/regional/translate/translate. Zoek met de zoekfuncite naar "Log in", zonder quotes, wel hoofd- en kleine letters precies overnemen als in de bron. Klik achter het resultaat op bewerken en pas de tekst daar aan.

-----
Met vriendelijke groet,
Hans Kuiters
BE-WEB

Door Gust Van Mierlo op 5 september, 2016 - 13:48

Hallo Hans,
Ik weet dat het op die manier kan, maar ik heb zou wat meer inzicht willen krijgen in het hooking mechanisme van Drupal. Het is mij hier dus niet om de oplossing van dit taalprobleem te doen maar wel: hoe moet ik een bepaalde functie aanpassen en waar moet ik ze plaatsen, zodat ze niet verdwijnt bij een update van Drupal of de betreffende module.

afbeelding van be-web
Door be-web op 5 september, 2016 - 14:26

-----
Met vriendelijke groet,
Hans Kuiters
BE-WEB

Door Gust Van Mierlo op 6 september, 2016 - 10:00

GELUKT!

Dank u Hans,
Gust

Bookmark and Share

Drupal is een geregistreerd merk van Dries Buytaert. | Powered by Pantheon.

Drupal.be/Drupal.nl is de website van de Nederlandstalige Drupalgemeenschap.