Posted by ChristianP on October 15, 2010 at 9:36am
Hej, jag har ett problem. Det är såhär att om jag lägger till en ny function för t.ex. "function theme_form" och det redan finns en som heter "function theme_form" som gör en annan grej så blir det såklart konflikter eftersom functions måste vara unika. Men jag måste få till detta för att kunna ändra på 2 olika ställen på 2 olika forms. Hur ska man bära sig åt då? Att klippa ut själva php-koden ur funktionen och lägga in i den andra under "function theme_form" fungerade inte.
Comments
Om du vill ändra på två olika
Om du vill ändra på två olika forms så kan du ha två funktioner, som du döper efter respektive form. T.ex.
theme_comment_form
theme_blog_entry_node_form
Byt ut theme mot namnet på ditt tema.
Du kan också använda hook_form_alter och göra olika saker beroende på vilket id formuläret har.
function theme_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'comment_form') {
// do your thing
}
if ($form_id == 'blog_entry_node_form') {
// do some other thing
}
}
Men om jag vill ändra på alla
Men om jag vill ändra på alla forms på hela sidan, och så finns det redan en function för "theme_form" som gör andra saker, hur gör jag då? Säg att den redan existerande funktionen gör så att alla Fält i webbformuläret som har "?" tar bort ":" efter sig, och så vill man ju ha på hela sidan. Och så gör den andra funktionen någon helt annan grej, men den ska också påverka alla kontaktformulär på sidan. :/
Du har en funktion
Du har en funktion "theme_form" som ska göra en sak på alla dina formulär. Du vill ha en till funktion som också påverkar alla formulär, lägg då den koden i samma "theme_form". Funktionen behöver inte bara ta bort ":" utan kan göra en mängd saker.
Om du sedan vill tema enbart comment_form så kan du använda theme_comment_form.
Om du använder modulen Theme developer så kan du se vilka funktioner som påverkar din output. Då kan du t.ex. se att först körs theme_form därefter theme_comment_form etc. Se exemplet här
//Pontus Nilsson, Digitalist