Selektera meddelanden

Events happening in the community are now at Drupal community events on www.drupal.org.
orjantorang's picture

Var och hur tar man kontroll över vilka meddelanden som visas?
I min modul sätter jag ett meddelande med drupal_set_messages och med en egen typ vid en validering.

Jag vill kunna välja vilken typ av meddelanden som visas, exv ta bort en typ för en viss roll.

Har kikat på theme_status_messages(), men får inte grepp om hur det används.
Har någon nått tips?

Comments

Overrida temafunktioner

tobiassjosten's picture

Jag har inte själv använt funktionen men på dokumentationen verkar det rätt straight-forward. Om meddelandena renderas och visas med hjälp av funktionen theme_status_messages(), så kan den, av sin natur som temafunktion, tas över av din egen funktion med din egen logik.

Beroende på vad du vill göra kan du antingen ta över funktionen i temalagret eller med hjälp av en modul. Jag skulle rekommendera temalagret. Då öppnar du helt enkelt upp template.php i ditt tema (eller skapar den ifall den inte redan finns) och kopierar sedan in funktionen theme_status_messages(). Byt därefter namn på den till <temanamn>_status_messages. Rensa slutligen cachen för att få din override registrerad.

Nu kan du fritt laborera med funktionen och göra de ändringar du vill.

Hoppas det hjälper!


Tobias Sjösten | NodeOne

Tack Tobias!

orjantorang's picture

Tack Tobias!

Det fungerade utmärkt, så här tar jag bort meddelanden av typen 'error' som Drupal har skapat. Kanske inte att rekommendera att ta bort dessa meddelanden men i mitt fall är det en bra lösning, då vissa noder har referenser till filer som inte finns, pga ett arv från en tidigare databas. Vidare kommer jag att kunna lägga till egna meddelanden som är kundanpassade.

Koden finns i ett eget tema: sites/all/themes/atck/template.php

function atck_status_messages($display = NULL) {
  global $user;
  $output = '';
 
  foreach (drupal_get_messages($display) as $type => $messages) {
   
          if (!user_access('special_company_administration', $user) AND $type == 'error') {
             
           }else{
            
               $output .= "<div class=\"messages $type\">\n";
               if (count($messages) > 1) {
               $output .= " <ul>\n";
                  foreach ($messages as $message) {
                    $output .= '  <li>'. $message ."</li>\n";
                }
                  $output .= " </ul>\n";
               }
              else {
               $output .= $messages[0];
             }
              $output .= "</div>\n";     
          
           }
  }
  return $output;
}

Sweden

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: