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

[gelöst] Mit Modul in verschiedenen Inhaltstypen Ausgabe verändern

Eingetragen von Exterior (2903)
am 15.12.2009 - 12:48 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Hallo Leute,


Ich habe vor, bei bestimmten Inhaltstypen die Ausgabe zu ändern (ich will ein kleines Formular mittels der Form API direkt unter dem Node ausgeben).


Ich könnte zwar den ganzen Code direkt in eine node-typ.tpl.php schreiben, aber das möchte ich eigentlich nicht machen, weil:


- das die node-typ.tpl.php ziemlich aufbläht, weil da schon einige andere Funktionen von mir drin stehen.

- ich diese Funktionalität in mehreren Inhaltstypen benötige. Das heißt, ich müsste mindestens 3 neue node-typ.tpl.php anlegen, welche alle den gleichen Code enthalten und dann bei Änderungen immer alle diese Dateien bearbeiten.


Deswegen dachte ich mir, es wäre wesentlich praktischer, wenn ich die Funktionalität in ein Modul packe.


Also muss mein Modul beim Aufrufen eines Nodes prüfen, ob es zu einem entsprechenden Typ gehört und dann das Formular basteln.


Allerdings wirft das noch ein paar Fragen für mich auf (die Entwicklung eigener Module steckt bei mir leider noch in den Kinderschuhen):


Wie bekomme ich es hin, dass der Node überprüft wird? Das Formular soll nur bei bestimmten Inhaltstypen ausgegeben werden, also muss ich ja bei jedem Nodeaufruf den Typ prüfen, oder? Aber wie kann ich immer dann, wenn ein Node aufgerufen wird, diesen überprüfen?
Das Problem ist weniger das Prüfen des Typs, das kann ich ja mittels der NID machen ($node->type).
Die Frage ist eher, wie ich diese Prüfung immer dann machen kann, wenn ein Node aufgerufen wird.


Ich bin mir leider nicht so ganz darüber im Klaren, wie ich es einrichten kann, dass meine Funktion immer dann aufgerufen wird, wenn ein Node angezeigt werden soll.


Die nächste Frage wäre: Wie bekomme ich das Formular dann in den Node?
Eigentlich soll das Modul ja nicht einfach HTML-Code ausspucken. Aer wie bekomme ich das ganze jetzt dort rein? Ich weiß zwar, dass es die theme()-Funktion gibt, habe aber leider nicht hundertprozentig verstanden, wie ich das benutzen kann/muss =( Muss ich dafür meine Funktionen in der node.tpl.php aufrufen bzw. geht das ohne weiteres?


Wie gesagt, ich stehe leider noch am Anfang und bin mir nicht ganz sicher, wie ich dieses Formular ordentlich ausgeben kann =(


Ich hoffe, ihr könnt mir helfen.
mfg Exterior

‹ Node und Taxonomy Tab-Menu Item ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Das kannst Du doch auch im

Eingetragen von wla (9461)
am 15.12.2009 - 13:12 Uhr

Das kannst Du doch auch im node.tpl.php machen. Wenn Du nicht 3 gleiche node-typ.tpl.php Files anlegen willst (was Drupal ziemlich egal ist) oder Du den Code nicht 3 mal pflegen willst, wie wäre es mit Templates für Deine Node-Typen, die über include sich den Teil, der gleich ist, reinziehen. Den brauchst Du dann wieder nur einfach zu pflegen. Die andere Möglichkeit wäre ein switch statement im node.tpl.php, das auf den typ prüft und dann eine Function aufruft für den gleichen Code-Anteil. Diese Funktion würde man im template.php File des Themes unterbringen.
Das erscheint mir einfacher als ein eigenes Modul für die Prüfung des Typs.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mmmh, die Idee ist auch

Eingetragen von Exterior (2903)
am 15.12.2009 - 13:39 Uhr

Mmmh, die Idee ist auch nicht schlecht, werde ich mir bis nachher mal überlegen =)


Mal noch eine andere Frage:


Wenn ich mir ein Formular mit der Form API baue, wie kann ich dann Elemente nebeneinander anzeigen?


Beispiel:
Ich habe ein Form-Element vom Typ "radios" und das Options-Array enthält 6 Elemente.
Diese 6 Elemente würden ja einfach untereinander angezeigt.
Wie kann ich es aber einrichten, dass diese 6 Elemente zum Beispiel in zwei Zeilen zu je 3 Elementen angezeigt werden?
Geht das?


mfg Exterior

  • Anmelden oder Registrieren um Kommentare zu schreiben

CSS

Eingetragen von wla (9461)
am 15.12.2009 - 14:02 Uhr

Da wirst Du Dich in die Tiefen des CSS begeben müssen. Mit #prefix und #suffix kannst Du das Formelement ja mit zusätzlichen divs samt einer Klasse umrahmen. Mit display:inline bekommst Du die Element hintereinander (in eine Zeile). 3 oben und 3 darunter ist etwas schwieriger, dann mußt Du der Div-Box eine feste Breite geben, damit der Umbruch passiert.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

So, ich habe jetzt mal zum

Eingetragen von Exterior (2903)
am 15.12.2009 - 21:18 Uhr

So, ich habe jetzt mal zum Testen mit diesem Code eine RadioGroup erstellt:

$options = array('Option 1', 'Option 2', 'Option 3');

//Radiobuttons erstellen
$form['test']['optionen'] = array(
'#type' => 'radios',
'#title' => t('Radio-Buttons'),
'#prefix' => '<div class="test-form" style="display:inline;">',
'#suffix' => '</div>',
'#options' => $options,
'#default_value' => variable_get('optionen', $wert),
'#description' => 'Hier siehst du Radio-Buttons',
);

Leider werden die Radio-Buttons immer noch untereinander angezeigt, anstatt nebeneinander.
Habe mich bisher leider noch nicht so viel mit CSS auseinandergesetzt =(

Muss ich die Klasse "test-form" vorher irgendwo näher definieren, damit das klappt? Wenn ja, wo und wie, hab davon leider noch nicht so viel Ahnung =(

  • Anmelden oder Registrieren um Kommentare zu schreiben

Den style solltest Du wieder

Eingetragen von wla (9461)
am 15.12.2009 - 21:30 Uhr

Den style solltest Du wieder rausnehmen. Das packt man in das Stylesheet seines Themes (heißt meistens style.css). Nimm Dir den Firefox mit dem Plugin Firebug und probiere aus, welche Style Definitionen dafür verantwortlich sind. Du kannst auch im Firebug ausprobieren, was wie wirkt.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Den style solltest Du wieder

Eingetragen von wla (9461)
am 15.12.2009 - 21:34 Uhr

Den style solltest Du wieder rausnehmen. Das packt man in das Stylesheet seines Themes (heißt meistens style.css). Nimm Dir den Firefox mit dem Plugin Firebug und probiere aus, welche Style Definitionen dafür verantwortlich sind. Du kannst auch im Firebug ausprobieren, was wie wirkt.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Den style solltest Du wieder

Eingetragen von wla (9461)
am 15.12.2009 - 21:35 Uhr

Den style solltest Du wieder rausnehmen. Das packt man in das Stylesheet seines Themes (heißt meistens style.css). Nimm Dir den Firefox mit dem Plugin Firebug und probiere aus, welche Style Definitionen dafür verantwortlich sind. Du kannst auch im Firebug ausprobieren, was wie wirkt.
Ohne Einarbeitung in CSS wirst Du das Aussehen Deiner Webseite aber nicht richtig in den Griff bekommen.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nimm Dir den Firefox mit dem

Eingetragen von Exterior (2903)
am 15.12.2009 - 22:19 Uhr
Zitat:

Nimm Dir den Firefox mit dem Plugin Firebug

Darüber habe ich schon oft nachgedacht, aber leider lehnt mein Notebook den Feuerfuchs ab, warum auch immer, den kann ich einfach nicht starten, hab ich mich schon lange mit auseinander gesetzt. Allerdings kann ich mal Opera Dragonfly verwenden, dass dürfte so ähnlich sein wie Firebug.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Geschafft =)

Eingetragen von Exterior (2903)
am 17.12.2009 - 15:05 Uhr

Hey, die neueste Firefox-Version funktioniert auf meinem Laptop =) Ich hab bisher immer mal wieder versucht, die aktuelle Version zu installieren (eben weil ich Firebug mal probieren wollte), aber bisher hat keine funktioniert, mit der aktuellen klappt es =)

Leider habe ich immer noch nicht besonders viel Ahnung von CSS =( Sowas lernt man eben auch nicht über nacht -,-'

Allerdings habe ich mein Problem trotzdem lösen können :)
Die Optionen für die Radio-Buttons (bzw. habe ich jetzt Checkboxen genommen) müssen dynamisch aus gegebenen Daten erzeugt werden. Also habe ich einzelne Checkboxen als Typ genommen und erzeuge mit einer Schleife die nötige Anzahl mit fortlaufender Nummerierung.
Und für jede Checkbox setze ich Prefix und Suffix mittels einer Funktion.
So sieht mein Code dafür aus:

<?php
function empfang_prefix($uid, $spalten){
if (
$uid == '1'){
return
'<table><tr><td>';}

else{
if(
$spalten == 1){
return
'<tr><td>';}

else{
return
'<td>';}

}
}

function
empfang_suffix($spalten){
if (
$spalten == 3){
return
'</td></tr>';}

else{
return
'</td>';}
}
.
[....]
.
$userindex = 1;
$spalte = 1;
.
while (
$row = db_fetch_object($erg)){
$uid = $row->uid;
$myuser = user_load(array('uid' => $uid));
profile_load_profile($myuser);
$username = $myuser->profile_vorname . ' ' . $myuser->profile_nachname;
.
$form['email']['empfang']['user'.$userindex] = array(
'#type' => 'checkbox',
'#title' => $username,
'#prefix' => empfang_prefix($userindex, $spalte),
'#suffix' => empfang_suffix($spalte),
'#return_value' => $row->mail,
);
.
$userindex++;
.
if (
$spalte == 3){
$spalte = 1;}
.
else{
$spalte++;}
}
.
$anzahl = $userindex-1;
.
$form['email']['empfang']['user'.$anzahl]['#suffix'] = '</td></tr></table>';
?>


(Die Punkte zwischen den Zeilen dienen nur als Abstandhalter, ich habe noch nicht herausgefunden, wie ich hier im Forum Leerzeilen in den Quelltext einfügen kann und ohne diese Zwischenräume wäre es zu unübersichtlich -,-' Vielleicht kann mir mal jemand verraten, wie das geht ;) )

Ich weiß jetzt nicht, ob die CSS-erfahrenen Leute unter euch mich für diese Lösung auslachen werden ;) Aber sie funktioniert recht gut, ich kann schnell mal die gewünschte Spaltenzahl ändern, die Ausgabe ist schön geordnet, so wie ich sie haben will und ich musste nicht versuchen, unbeholfen im CSS rum zu pfuschen, ohne die nötigen Kenntnisse zu besitzen. Wenn ich mich mal mit CSS beschäftigt habe, kann ich das immer noch ändern :P

Außerdem bin ich den Weg gegangen, dass ichdas ganze in eine eigene Datei gepackt und per Include eingefügt habe. Vielen Dank für den Tip, wla, hat super geklappt =)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • 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
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 13 Minuten
  • Hey danke
    vor 2 Wochen 18 Stunden
  • Update: jetzt gibt's ein
    vor 2 Wochen 1 Tag
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 5 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 3 Tagen
  • In der entsprechenden View
    vor 3 Wochen 3 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 3 Tagen
  • gelöst
    vor 5 Wochen 6 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 19 Stunden

Statistik

Beiträge im Forum: 250233
Registrierte User: 20452

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» 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 26 Gäste online.

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