Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Drupalcenter.de › Module ›

Modul-Entwicklung

Fragen und Tipps zur Entwicklung eigener Drupal-Module.

Aktuelles Entwicklerhandbuch / Videotraining?

Eingetragen von darkangel (14) am 10.12.2011 - 17:01 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x oder neuer

Hallo miteinander,

da ich nun auch gern etwas für Drupal entwickeln möchte bin ich derzeit auf der Suche nach allen möglichen Informationen die mir bei der Entwicklung eigener Module behilflich sein könnten.

  • 2 Kommentare
  • Weiterlesen

Günstiges Git-Deployment auf Hosteurope

Eingetragen von Peter Majmesku (656) am 05.12.2011 - 23:35 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x

Hallo,

ich bin auf Hosteurope's FAQ-Seite unter http://faq.hosteurope.de/index.php?cpid=17810 gestossen. Hier wird gezeigt, dass die (preiswerten) VServer von Hosteurope auch Git beherrschen. Ich habe das Ganze einmal durchgespielt. Nach dem push auf des Git-Remote Repo (der V-Server von Hosteurope), genügt es dort

git checkout

  • 3 Kommentare
  • Weiterlesen

Kommentar in einem Nodetyp automatisch freischalten per Hook

Eingetragen von NightWalker (36) am 30.11.2011 - 22:38 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x

Hallo zusammen,

ich möchte, dass auf meine Seite alle Kommentare für fast alle Nodetypes per Hand frei geschaltet werden bis auf einen Nodetyp, bei diesem soll keine Freischaltung erforderlich sein.
Da ich noch kein 7er Modul dazu gefunden hab, versuche ich es selbst zu lösen.
Nach meinem verständnis sollte ich einfach den hook_comment_presave überschreiben können damit die Kommentare automatisch frei geschaltet werden.

Dazu habe ich in mein template.php folgenden Code eingefügt:

<?php

function meintheme_comment_presave($comment){
    if (
$comment->node_type=="commentlist_node"){
       
$comment->status=1;
    }
     
$comment->subject = trim($comment->subject);
}


?>

meintheme natürlich durch den namen von meinem theme ersetzt.

Habe ich mir das zu einfach vorgestellt oder irgendwo einen fehler?

Danke schon mal im Voraus

  • Anmelden oder Registrieren um Kommentare zu schreiben

[Gelöst] Formular erscheint nicht

Eingetragen von Peter Majmesku (656) am 27.11.2011 - 02:44 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Will mit meinem Mini-Modul die Anzeige eines weiteren Formulars erreichen. Hierzu habe ich mir andere Module angesehen, die per FAPI ein Formular mitbringen. Erhalte jedoch im Frontend keinerlei Ausgabe. Fällt jemandem zu Folgendem etwas ein?

<?php
function uc_auction_instant_buy_form(&$form_state, $node, $teaser) {
 
$form = array(
   
'#node' => $node,
   
'#teaser' => $teaser,
   
'#theme' => 'uc_auction_instant_buy',
   
'foobar' => array(
     
'#title' => t('High bid'),
     
'#type' => 'item',
     
'#value' => 1,
     
'#weight' => 2,
    ),
  );
   
$form['submit'] = array(
       
'#type' => 'submit',
       
'#value' => 1,
       
'#description' => 'foobar',
       
'#weight' => 8,
    );

  return
$form;
}

function
uc_auction_instant_buy_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
    if (
$op === 'view' && isset($node->uc_auction)) {
       
$node->content['uc_auction_instant_buy'] = array(
           
'#value' => drupal_get_form('uc_auction_instant_buy_form', $node, $a3),
           
'#weight' => 0,
        );
    }
}

/**
* Implementation of hook_theme().
*/
function uc_auction_instant_buy_theme($existing, $type, $theme, $path) {
  return array(
   
'uc_auction_instant_buy' => array(
     
'arguments' => array('form' => NULL),
    ),
  );
}


/**
* Implementation of hook_form_alter().
*/
function uc_auction_instant_buy_form_alter(&$form, $form_state, $form_id) {

  if (
user_access('create auctions') && $form_id == 'product_node_form') {

           
$instant_buy_price = array(
                   
'instant_buy_price' => array(
                       
// This weird #type thing is explained below.
                       
'#type' => 'textfield',
                       
'#title' => t('Instant buy price'),
                       
'#description' => t('Type in the price, for which the customer should by the product directly.'),
                       
'#field_suffix' => '€',
                       
'#size' => 12,
                       
'#weight' => 5,
          ),
      );

           
array_push($form['base']['auction'], $instant_buy_price);

           
$form['#submit'][] = 'uc_auction_instant_buy_submit';
           
$form['#validate'][] = 'uc_auction_instant_buy_validate';
    }

}


function
uc_auction_instant_buy_submit(&$form, &$form_state) {

   
$record = array(
           
'nid' => $form_state['values']['nid'],
           
'amount' => str_replace(',', '.', $form_state['values']['instant_buy_price']),
    );

   
drupal_write_record('uc_auction_instant_buy', $record, 'nid');

}


/**
* Validate new auction creation.
*/

function uc_auction_instant_buy_validate($form, &$form_state) {
  if (!
is_numeric(str_replace(',', '.', $form_state['values']['instant_buy_price']))) {
       
form_set_error('instant_buy_price', t('Please check the instant buy price.'));
    }
}
?>

  • 4 Kommentare

Eigene Fields definieren oder bestehende Fields verwenden?

Eingetragen von cjoy (4) am 26.11.2011 - 01:42 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x oder neuer

Nachdem ich im IRC unterschiedliche Auskünfte auf die Frage erhalten habe, probiere ich es noch einmal hier im Forum.
Meine Frage ist nicht so sehr, wie man ein eigenes Field via module definiert (das ist prima dokumentiert), sondern wann es Sinn macht und welche Alternativen ggf. zu nutzen wären.

  • Anmelden oder Registrieren um Kommentare zu schreiben
  • Weiterlesen

[gelöst] hook_theme() Funktion

Eingetragen von DragWyatt (3) am 24.11.2011 - 19:20 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x oder neuer

Hallo,
ich programmiere mit Drupal erst seit ein paar Tagen Module, und bin noch ein totaler Anfänger.
Ich möchte gerne eine art "Neuigkeiten" - Funktion programmieren wie es sie bei Facebook gibt. Also der Nutzer kann in ein Textfeld reinschreiben was er z.B. gerade macht und daunter sollten die Meldungen von ihm oder anderen Nutzern dann angezeigt werde.

Nun habe ich es soweit geschafft das ein Textfeld angezeigt wird und die dort reingeschrieben sachen in einer Datenbank gespeichert werden. Nur hab ich ein Problem mit der Ausgaben, untzwar sollten unter dem Textfeld dann die Meldungen aus der Datenbank ausgelesen werde. Dafür habe ich eigentlich gedacht ich mache das mit der hook_theme() Funktion, und lasse dann die Datensätze in einer tpl Datei auslesen und unterdem texfeld anzeigen. Allerdings wird mir nichts angezeigt. Ich bekomme es nichtmal hin einen einfachen Satz auszugeben. Hier mein Code:

<?php
function stream_menu() {
 
$items['stream'] = array(
   
'title' => 'Stream',
   
'page callback'    => 'drupal_get_form',
   
'page arguments'   => array('stream_form'),
   
'access arguments' => array('use_stream'),

  );

  return
$items;

}




function
stream_theme() {
  return array(
   
'stream_form'  => array(
     
'arguments' => array('form' => NULL),
     
'render element' => 'form',
     
'template' => 'stream-form',
    ),
   
   
'stream_view' => array(
     
'arguments' => array('var' => NULL),
     
'template' => 'stream-view',
      ),
    );
}

function
stream_form($form, &$form_state) {
 
$form['text'] = array(
   
'#type' => 'textfield',
   
'#title' => t('Please input something!'),
   
'#required' => TRUE,
  );
 
$form['submit'] = array(
   
'#type' => 'submit',
   
'#value' => t('Go'),
  );

  return
$form;
}

function
stream_view($var){

}

function
stream_form_submit($form, &$form_state) {
// hier wird die Eingabe in der Datenbank gespeichert
}



function
template_preprocess_stream_form(&$variables) {
 
$variables['text_form_content'] = array();
 
$text_form_hidden = array();
  foreach (
element_children($variables['form']) as $key) {
   
$type = $variables['form'][$key]['#type'];
    if (
$type == 'hidden' || $type == 'token') {
     
$text_form_hidden[] = drupal_render($variables['form'][$key]);
    }
    else {
     
$variables['text_form_content'][$key] = drupal_render($variables['form'][$key]);
    }
  }

 
$variables['text_form_content']['hidden'] = implode($text_form_hidden);

 
$variables['text_form'] = implode($variables['text_form_content']);
}
?>

Was muss ich nun in die Funktion stream_view schreiben, damit das ganze angezeigt wird.

Vielen dank schonmal ;)
lg, DragWyatt

  • 4 Kommentare

[GELÖST] Form API: Nach hook_form_validate(); Formularwerte in Datenbank speichern

Eingetragen von Peter Majmesku (656) am 23.11.2011 - 20:44 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Welcher Hook wird nach hook_form_validate(); aufgerufen, von dem aus man kontrollierte Daten nochmals bearbeiten kann?

Gelöst, siehe: http://www.drupalcenter.de/node/38506.

  • Anmelden oder Registrieren um Kommentare zu schreiben

[GELÖST] Speicherung in Datenbank durch Formular

Eingetragen von Peter Majmesku (656) am 23.11.2011 - 20:43 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Hallo,

habe ein Mini-Modul programmiert und ein Schema für die Datenbank in der .install-Datei angelegt:

<?php
function uc_auction_time_controlled_publish_schema() {
  return array(
   
'uc_auction_time_controlled_publish' => array(
     
'description' => 'Information about time controlled publish.',
     
'fields' => array(
       
'nid' => array(
         
'description' => 'The {node}.nid of the product.',
         
'type' => 'int',
         
'unsigned' => TRUE,
         
'not null' => TRUE,
         
'default' => 0,
        ),
       
'publish' => array(
         
'description' => 'The time when this auction should be published.',
         
'type' => 'int',
         
'unsigned' => TRUE,
         
'not null' => TRUE,
         
'default' => 0,
        ),
      ),
     
'primary key' => array('nid'),
     
'indexes' => array(
       
'publish' => array('publish'),
      ),
    ),
  );
}
?>

Dadurch wird bei der Installation es Moduls in der Datenbank eine eigene Tabelle erstellt. Prima.

Durch

<?php

$auction_publish
= array(
       
'publish' => array(
         
'#type' => 'date_popup',
         
'#title' => t('Publishing date and time'),
         
'#description' => t('Select a date and time when this auction will be published (relative to the server&rsquo;s local time).'),
         
'#default_value' => format_date(time(), 'custom', 'Y-m-d H:i:s'),
         
'#weight' => 10,
        ),
      );
array_push($form['base']['auction'], $auction_publish);
?>

erscheint auch mein Feld im Formular, welches bis nach hook_form_validate(); einen Wert bringen kann, den ich gerne in der zuvor angelegten DB-Tabelle abspeichern will.

Leider wird dieser Wert nicht gespeichert. Ich kenne auch sonst keinen Hook, welcher nach hook_form_validate(); kommt und mit welchem ich per SQL-Query meinen Wert in die Datenbank befördern kann. Hat jemand eine Idee?

  • 4 Kommentare

Modul zur Anbindung von geotoad (Caches-Abfrage auf geocaching.com)

Eingetragen von ab_connor (20) am 20.11.2011 - 21:52 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Liebe Wissende,

ich möchte die Entwicklung eines Moduls zur Anbindung von geotoad initiieren. Folgender Hintergrund:

  • 3 Kommentare
  • Weiterlesen

[gelöst] Probleme mit $form_state beim ahah-helper

Eingetragen von Flyentology (2) am 13.11.2011 - 21:05 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Hey,
Bin relativ neu mit Drupal unterwegs, aber ich stecke fest und finde nichts was mir irgendwie weiterhilft.. (ahah-helper seiten von drupal, andere Beispielcodes und so weiter..)

Ich habe mehrere Textfelder. Die Eingaben sollen eine vorher nicht sichtbare Tabelle erscheinen lassen (langfristiges Ziel: Datenbankvergleich und die Treffer in der Tabelle ausgeben). Aber langsam, im Moment will ich lediglich die $form_state['values'] benutzen, was nicht klappt, so als ob formstate leer wäre

Nur um nochmal kurz den größeren Zusammenhang zu erklären, ich möchte also Eingaben machen, auf den Button klicken, dann eine Tabelle erhalten mit allen Treffern aus der Datenbank.. Theoretisch dachte ich mir, dass ich genau diese $form_state['values'] eben bei der Datenbankabfrage später entsprechend vergleiche.
Wie im Titel erwähnt, benutze ich den AHAH-Helper und der gekürzte Code sieht folgendermaßen aus:

<?php
function aebuisadmin_form($formstate) {
   
   
$form = array();                           
   
ahah_helper_register($form, $form_state);

   
$form['workspace'] = array(
           
'#type' => 'fieldset',
           
'#title' => t('Eingabe'),
           
'#collapsible' => TRUE,
           
'#collapsed' => FALSE,
           
'#tree' => TRUE,
           
'#prefix' => '<div id="display-wrapper">',
           
'#suffix' => '</div>',
  );

    
$form['workspace']['id'] = array(
           
'#type' => 'textfield',
           
'#title' => t('ID'),
           
'#default_value' => $form_state['values']['workspace']['id'],
           
'#size' => 30,
           
'#maxlength' => 30,
           
'#weight' => 1,
           
 
);

   
$form['workspace']['display'] = array(
           
'#type' => 'submit' ,
           
'#value' => t('Display'),
           
'#weight' => 7,
           
'#tree' => TRUE,
         
// wrapper eigenschaften:
           
'#ahah' => array( 
               
'event' => 'click',
               
'path' => ahah_helper_path(array('workspace')),
               
'wrapper' => 'display-wrapper',
               
'effect' => 'fade',
               
'method' => 'replace',
               
'progress' => array('type' => 'bar', 'message' => t('Loading...'))             
                 ),
       
);

if(
$form_state['values']['workspace']['id'] != '')  { // habs auch mit if(isset...) versucht, aber das geht auch nicht

           
$id = $form_state['values']['workspace']['id'];

           
//das soll mal die Tabelle werden.. über 'item' kann man sich sicher streiten, darum solls aber nich gehen
           
$form['workspace']['tabelle'] = array(
               
'#type' => 'item',
               
'#title' => t('Tabelle'),
               
'#weight' => 13,
               
'#value' => $id,
              
            );  
       }
   
    return
$form;
}



function
aebuisadmin_form_submit($form, $form_state){   
  
// hier hab ich testweise verschiedene drupal_set_messages gesetzt, um zu überprüfen, ob hier die $form_state['values'] erkannt werden
   // und das werden sie auch
   // ich lass mir halt die eingetrage ID als Drupal_message ausgeben
  
}

?>

Folgendes Problem: Ich verstehe einfach nicht, wieso die if-verzweigung vor meinem item den $form_state von meinem ID-Feld nicht erkennt..

So wie ich den AHAH-Helper verstanden habe, müsste er beim Klick auf den Button den eingetragen Wert aus dem Textfeld in $form_state['values']['workspace']['id'] speichern und nach dem Wrappen eben in sofern benutzen, dass die Tabelle überhaupt erstmal erscheint.. oder irgendwie so

Habs auch mit devel + dpm($form_state); versucht..wurde nicht schlau draus..weil rein gar nichts angezeigt wird
Und sicherlich gibts für mein Anliegen auch andere, bessere und elegantere Lösungen, aber mittlerweile gehts ums Prinzip :)

Hat jemand einen Denkanstoss? Ich glaube ich hab die Logik des wrappers irgendwie einfach nich verstanden..

Gruß

  • 2 Kommentare
  • « erste Seite
  • ‹ vorherige Seite
  • …
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • …
  • nächste Seite ›
  • letzte Seite »

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • lstin tombent homophonic wikke
  • Rolle erstellen nicht zu finden
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
Weiter

Neue Kommentare

  • Rollen
    vor 2 Tagen 11 Stunden
  • Inzwischen sind wir bei
    vor 1 Woche 6 Tagen
  • Migrieren von D7 auf D8/ D10/ D11
    vor 1 Woche 6 Tagen
  • melde mich mal wieder, da ich
    vor 9 Wochen 4 Tagen
  • Hey danke
    vor 9 Wochen 4 Tagen
  • Update: jetzt gibt's ein
    vor 9 Wochen 5 Tagen
  • Hallo, im Prinzip habe ich
    vor 10 Wochen 2 Tagen
  • Da scheint die Terminologie
    vor 10 Wochen 3 Tagen
  • Kannst doch auch alles direkt
    vor 11 Wochen 7 Stunden
  • In der entsprechenden View
    vor 11 Wochen 7 Stunden

Statistik

Beiträge im Forum: 250238
Registrierte User: 20466

Neue User:

  • StevenEness
  • FoxPiola
  • ocvk2810

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 14 Gäste online.

Drupal Security

  • Login Disable - Less critical - Access bypass - SA-CONTRIB-2026-008
  • Central Authentication System (CAS) Server - Less critical - XML Element Injection - SA-CONTRIB-2026-007
  • Drupal Canvas - Moderately critical - Access bypass - SA-CONTRIB-2026-006
  • Microsoft Entra ID SSO Login - Critical - Access bypass - SA-CONTRIB-2026-005
  • AT Internet Piano Analytics - Moderately critical - Cross-site Scripting - SA-CONTRIB-2026-004
Weiter

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association