netnode IT services GmbH
Mythenstrasse 7
6003 Luzern
041 450 10 66
Kontaktformular
Newsletter [neu]
Kürzlich hatte ich das Problem, eine E-Mail Adresse von einem Drupal Formular zu validieren. Dieser Codeschnipsel löst die Aufgabe sehr einfach und ist zudem flexibel erweiterbar. Falls der Regex nicht genügt, findet man auf
http://www.txt2re.com weitere Rexex Regeln.
<?php
function FROM_validate($form_id, $form_values) {
if (!preg_match('([\\w-]+(?:\\.[\\w-]+)*@(?:[\\w-]+\\.)+[a-zA-Z]{2,7})', $form_values['EMAILFIELD'])) {
form_set_error('', t('Bitte korrekte E-Mail Adresse angeben.'));
}
}
?>Update:
Ein typische Anwendung in CMS Administrationen ist das tabellarische Auflisten von Einträge. Das händische programmieren von Tabellen nimmt einem Drupal elegant ab.
<?php
// $nodes ist ein Node-Array
foreach ($nodes as $node) {
$rows[] = array('<a href="/node/'.$node->nid.'">'.$node->title.'</a>',
'<a href="/node/'.$node->nid.'/edit">Edit</a>');
}
$header = array('Titel', 'Option');
$output .= theme_table($header, $rows);
?>Es gibt immer wieder Situationen bei denen man die Filter Optionen von Drupal manuell ausführen muss. Das ist ganz einfach. Die Magie liegt im File filter.module (http://api.drupal.org/api/file/modules/filter/filter.module/5).
Die wichtigsten Funktionen:
_filter_url($text, $format), macht aus möglichen URLs klickbare Links, $format ist das Input-Filter-Format das beim Textfeld ausgewählt wurde. (1 = Filtered HTML, 2 PHP code, 3 = Full HTML)
_filter_autop($text), macht aus Newlines
's bzw.
's
Beispiel:
Der folgende Code einfach in den Headerbereich des HTML Dokumentes kopieren und schon werden alle externen Links mit dem Attribut "_blank" ergänzt. Wichtig, jquery muss included sein. (www.jquery.com)
<?php
$(function() {
$('a[@href^=http]').not('[@href*=netnode.ch]').addClass('external-link').click(function()
{
window.open(this.href, '_blank');
return false;
});
});
?>Falls die Funktion auch bei Content der via AJAX nachgeladen wird greifen sollte muss man auf den entsprechenden Event hören und die Methode nochmals ausführen.
<?php?>