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

Newbee >> Nodes-Template und Datenbeschaffung

Eingetragen von rethus (11)
am 01.04.2008 - 13:26 Uhr in
  • Themes & Theming

Ich bin absoluter Anfänger mit Drupal, habe aber schon mit diversen CMS-Systemen gearbeitet und mehr als 10 Jahre Berufserfahrung im Bereich Programmierung.. nur so als Background.

Ich habe nun ein bestehendes System vorgesetzt bekommen, in welchem ich Änderungen vornehmen soll.
Nun hab ich beispielsweise in der Datei template.php (im Theme-Ordner sites/all/ymeinTheme>/) ethliche Funktionen drin stehen.

In den Funktionen hab ich dann funktionsaufrufe wie: "views_theme_field", was meiner Meinung nach eine Drupal-Eigene Funktion sein müsste (oder?).

Meine Frage... in welchem Zusammenhang stehen die node-templates zu template.php. Und wie füttere ich die node-templates mit daten?

Hier: http://www.24ix.de/Drupal-Node-Templates.218.0.html hab ich schon gesehen, das es da standardisierte Platzhalter gibt... aber ich versteh noch nicht ganz, wo die die Daten hernehmen.

‹ aktuelle seite im code festlegen Brauche CSS Datei ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Die Datei "node.tpl.php" ist

Eingetragen von quiptime (4972)
am 01.04.2008 - 14:59 Uhr

Die Datei "node.tpl.php" ist die Mama aller anderen Node-Templates.

In der Regel gibt es verschieden Node-Typen. Die Inhaltausgabe der einzelnen Nodetypen kann mit einem entsprechenden Template angepasst werden.

Nodetyp: blabla -> Templatedatei: node-blabla.tpl.php
Nodetyp: meeting -> Templatedatei: node-meeting.tpl.php

Um mit den Templates fuer einzelne Nodetypen arbeiten zu koennen muessen die Templatedateien, der Namenskonvention folgend, einfach nur im Themeordner erstellt werden.
Bei einem neu erstellten Template fuer einen Nodetyp wird zunaechst der Code von der Mama, der Datei "node.tpl.php" eingefuegt.

Nun zur Datei "template.php"

Drupal hat in den einzelnen Modulen sogenannte Theme-Funktionen. Diese Theme-Funktionen Funktionalitaet ist ein Anstatz fuer das Erstellen von Templates, also Template-Dateien fuer spezielle Dinge. Eben dem Code der in einer solchen Theme-Funktion steckt.
In der Regel wird eine Theme-Funktion auch Inhalte ausgeben.

Beispiel:

Es gibt in einem Modul die Funktion function theme_node_add_list()

Um dafuer ein Template verwenden zu koennen muss in der "template.php" zusaetzlich eingefuegt werden:

function phptemplate_node_add_list($type = NULL) {
  return _phptemplate_callback('node_add_list', array('type' => $type));
}

Aus dem Namen der Theme-Funktion ergibt sich der Name fuer die Template-Datei:

Funktionsname: function theme_node_add_list() -> "template.php": function phptemplate_node_add_list()
Template-Datei: node_add_list.tpl.php

In der Template-Datei wird der Code aus der Funktion "function theme_node_add_list()" eingefuegt.

Meist gibt eine Theme-Funktion zuruck mit return $output. Dieses return muss im Code der Template-Datei geaendert werden in print $output!

Beispielcode einer "node_add_list.tpl.php" aus einem konkreten Beispiel welches ich verwende:

<?php /* $Id: node_add_list.tpl.php, v 1.0 2008/03/25 quiptime Exp $ */

/**
* Anzeige der Seite mit den möglichen zu erstellenden Inhalten (Link "Inhalt erstellen").
* Es wird geprüft ob ein Benutzer Adresse und Mitgliedsantrag erstellt hat.
* Wenn ja wird jeweils der Link zum Erstellen dieser Inhalte unterdrückt.
*/
 
$output = '';
  global
$user;
 
 
$roles = $user->roles;
 
$type_memberapp = 'memberapp';
 
$memberapp = nodeprofile_load($type_memberapp, $user->uid);
 
$type_address = 'address';
 
$address = nodeprofile_load($type_address, $user->uid);
 
 
$types = node_get_types();
 
$type = isset($type) ? str_replace('-', '_', $type) : NULL;
 
// If a node type has been specified, validate its existence.
 
...
  ...
  ...
    if (isset(
$item)) {
     
uksort($item, 'strnatcasecmp');
     
$output = t('Choose the appropriate item from the list:') .'<dl>'. implode('', $item) .'</dl>';
    }
    else {
     
$output = t('No content types available.');
    }
  }
  print
$output;
?>

Hier ist das "print $output" zu sehen. Zusaetzlich habe ich am Anfang des Templatecode "$output = ''; eingefuegt.

Hinweis:
Die Themefunktion in meinem Beispiel hier gibt es nicht wirklich. Sie wurde von mir im node.module erstellt um das Manko von Nodeprofile Nodes auszugleichen, das in der Liste "Inhalt erstellen" einem Benutzer noch die Links zum Erstellen von Nodeprofile Nodes angezeigt werden auch wenn er sie schon erstellt hat (Nodelimit 1).

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke schon mal für den

Eingetragen von rethus (11)
am 01.04.2008 - 17:25 Uhr

Danke schon mal für den kleinen Überblick.
Ich suche irgendwie noch den richtigen Ausgangspunkt.
Also ich habe jetzt ein Newsblog. Dafür ein Template "node-news.tpl.php".
Wenn ich dieses Template ändere, ändert sich die Darstellung des Newsbeitrag, wenn ich Ihn in Vollansicht anzeige.

Unter den Beiträgen kann man noch Kommentare zu den news abgeben, bzw. auch auf die Kommentare anderer Bernutzer antworten.
Diesen Komentarbereich will ich ändern. Und ich finde einfach nicht wo es geht. Im node-news.tpl.php endet der Code mit Darstellung der News...
Was ich suche ist ein Knotenpunkt, von dem aus ich mich in das System einarbeiten kann, um die Struktur zu verstehen.

Ich ziehe jedesmal den Falschen Faden scheint mir,

Gibt es keine Entwickler-Howto, die kurz die Rahmenbedingungen des CMS umreißt... also bezüge der Dateien und Verzeichnisse zueineader erklärt?

  • Anmelden oder Registrieren um Kommentare zu schreiben

api.drupal.org

Eingetragen von quiptime (4972)
am 01.04.2008 - 17:49 Uhr

Vermutlich gibst Du in Deinem Template den Code mit

Codeschnipsel:

<?php if ($links): ?>
      <div class="links"><?php print $links; ?></div>
    <?php endif; ?>

aus.

In $links steckt der Kommentarlink. Nun kommt es darauf an was Du mit dem Link machen willst.

Um die Links zu themen sehe Dir mal die Drupal API an

http://api.drupal.org

Speziell das hier:

http://api.drupal.org/api/function/theme_links/5

Daraus ergibt sich man kann ein Template mit der Datei "links.tpl.php" erstellen. Wie das geht steht in meiner Uebersicht.

Nur als Ansatz, in der "template.php" wuerde fuer die "links.tpl.php" stehen:

function phptemplate_links($links, $attributes = array('class' => 'links')) {
  return _phptemplate_callback('links', array('links' => $links, 'attributes' => $attributes));
}

 

Soviel noch zu meiner Uebersicht.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Soweit kann ich dir folgen,

Eingetragen von rethus (11)
am 02.04.2008 - 09:06 Uhr

Soweit kann ich dir folgen, es löst aber nicht mein Problem.

Genauer gesagt möchte ich die Funktion rausnehmen, das man auf den Kommentar eines anderen Useres Antworten kann, und der Titel bei den Kommentaren soll verschwinden (also so das nur die Komentartexte untereinander stehen).

Die theme.inc und die template.inc.php hab ich mir schon angeschaut, aber die scheinen nichts mit dieser Antwortfunktion zu tun zu haben.

Was mir bisher an Drupal fehlt ist die Möglichkeit, sich durch den Code durchzuhangeln... Also das man an einer Ecke anfängt, und dann über die funktionen usw. sich den Code erschließen kann.

Oder ich habe den richtigen Ansatzpunkt zum durchhangeln noch nicht gefunden.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ok, mein Problemchen ist

Eingetragen von rethus (11)
am 02.04.2008 - 10:44 Uhr

Ok, mein Problemchen ist gelöst.
Wenn man weiß wo man suchen muss, geht es sicher einfacher von der Hand, aber als Newbee ist es der Horror sich in die Drupal strukturen einzuarbeiten.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Lass doch andere

Eingetragen von bv (3924)
am 02.04.2008 - 10:51 Uhr

Lass doch andere Hilfesuchende an Deinem neu gewonnenen Wissen teilhaben: Wie hast Du es denn gelöst?

--
bv - drupalcenter.de

  • 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 21 Stunden
  • Hey danke
    vor 2 Wochen 1 Tag
  • Update: jetzt gibt's ein
    vor 2 Wochen 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 6 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 4 Tagen
  • In der entsprechenden View
    vor 3 Wochen 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 4 Tagen
  • gelöst
    vor 6 Wochen 18 Stunden
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 1 Tag

Statistik

Beiträge im Forum: 250233
Registrierte User: 20453

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 24 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