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

Anzeigen von bestimmten Inhalten an beliebigen stellen im eigenen Theme

Eingetragen von Eduard (6)
am 14.02.2013 - 13:22 Uhr in
  • Themes & Theming
  • Drupal 7.x

Ich bin ein Drupal-Einsteiger und habe einige Grundlegende Fragen. Habe zu dem Thema leider nichts gefunden da sich die meisten Tutorials entweder an "Enduser" richten oder bestimmte Module behandeln – sich somit auf der Drupal-Oberfläche abspielen.

Kurz zu meinem Background…
Ich bin Designer und Frontend-Entwickler mit rech guten Kenntnisse in HTML, CSS und JS. Meine CMS-Erfahrungen beschränken sich auf Wordpress. Jeder Inhalt (in WP, "Artikel") bekommt da eine ID (kann man auch selber vergeben). Mit Hilfe dieser ID kann man diese Inhalte überall und sooft man will anzeigen. Das ganz sieht da etwas so aus…

//p=71 steht hier für einen Post mit der Nummer 71 – also ein ganz bestimmter Inhalt

<?php
query_posts
('p=71');
?>

<?php
while (have_posts()) : the_post();
?>

<?php
the_content
();
?>

<?php
endwhile;
?>

Nun suche ich seit Tagen verzweifelt nach ähnlichen PHP-Befehlen für Drupal (7) und komme keinen Schritt weiter. Konkret brauche ich die Möglichkeit bestimmte Inhalte und Inhaltsteile (also Drupal-Seiten und Felder) direkt in meinem Theme anzuzeigen. Sodass z.B. auch die Möglichkeit besteht die Inhalte mehrere Seiten auf einer Seite anzuzeigen. Ohne Module wie "Panel" oder "Single Page" zu nutzen – ich möchte die grundlegenden Zugriffsmöglichkeiten verstehen und das Layouten selber übernehmen. Gibt es vielleicht eine Referenz mit möglichen Zugriffsbefehlen (inkl. Syntax)?
Wäre für Hinweise und Tipps sehr dankbar.

‹ Bartik Weiterlesen Link CSS Theme erstellen aus static page ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Die Drupal-API unterscheidet

Eingetragen von Genesis (597)
am 14.02.2013 - 13:34 Uhr

Die Drupal-API unterscheidet sich in weiten Teilen von der Wordpress-API, da auch die Zielsetzung und Systematik beider Systeme eine andere ist. Da muss man etwas umdenken, bzw. sich einfach beides aneignen. Während du bei Wordpress eben mit dem Loop arbeiten kannst, um z.B. bestimmte Kategorien oder Tags aufzulisten, musst, bzw. solltest du bei Drupal etwas anders vorgehen. Dabei sollte man immer bedenken, dass Drupal ein modulares System ist, wobei man die Module nicht unbedingt mit Plugins von Wordpress gleichsetzen kann. Wo Plugins z.B. neue Widgets oder breitgefächerte Funktionen, wie Galerien mit sich bringen können, da sind Module bei Drupal nicht selten schon deswegen wichtig um bestimmte (Grund)Funktionalitäten bereit zu stellen.

Um einen ähnlichen Effekt wie den Loop aus Wordpress zu erreichen würde ich mich an deiner Stelle mit dem Modul Views beschäftigen, eines der, wenn nicht sogar das essentielle Modul für Drupal. Mittels Views stellst du Datenbankabfragen und eben auch Auflistungen bereit, und kannst so z.B. verschiedene Inhalte und Inhaltstypen auflisten und zusammen fassen, z.B. als Teaser, nur mit Titeln, oder auch ganze Nodes und Node-Teile. Diese Views kannst du dann als Seite, oder eben als Block ausgeben. Den Block kannst du dir dann so vorstellen wie ein Widget in Wordpress, dass du in die Sidebar, oder eben eine der Sidebars packst, wenn es mehrere gibt. Nur dass das, was bei Wordpress auf die Sidebar beschränkt ist, bei Drupal eben überall möglich ist, vorausgesetzt es gibt eine Region, wo der Block abgelegt werden kann. Diese Regionen kannst du selbst definieren und dort platzieren wo du willst.

Ich selbst bin auch eher Designer, und Drupal bietet dir da wirklich alle Möglichkeiten, weit ausgeprägter als Wordpress, aber es ist eben auch deutlich komplexer. Außerdem wird Drupal maßgeblich von Codern entwickelt, und Coder haben oft kein Gespür für Design und nicht selten nicht einmal für Usability und Enduser-Nutzung. Du musst dich da also rein fuchsen, aber Drupal geht dafür eben auch erst da los, wo Wordpress aufhört. Zwar kannst du einen Loop in Wordpress anpassen, aber einen View in Drupal kannst du noch viel ausgeprägter anpassen, wenn denn nötig. Ich arbeite selbst auch mit beiden Systemen, lande aber immer wieder bei Drupal, da es mir eben mehr Freiraum gibt als Designer.

Ich hoffe, das konnte dir irgendwie helfen. :)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke, das bringt mich etwas weiter...

Eingetragen von Eduard (6)
am 14.02.2013 - 14:35 Uhr

... jetzt weiß ich, dass ich mir "View" anschauen muss (dachte bisher es stellt lediglich ein neue Navibar im Adminbereich zur Verfügung).

Aber was genau ist ein "Node" im Drupalkontext? Ist es gleichzusetzen mit "Feld" innerhalb eines "Inhalttyps"? (habe die Deutsche Version)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Eduard schriebAber was genau

Eingetragen von Genesis (597)
am 14.02.2013 - 14:50 Uhr
Eduard schrieb

Aber was genau ist ein "Node" im Drupalkontext? Ist es gleichzusetzen mit "Feld" innerhalb eines "Inhalttyps"? (habe die Deutsche Version)

Eine Node ist nicht zu verwechseln mit z.B. node.js, weswegen der Context wirklich wichtig ist.

Eine Node kann man sich als Behälter vorstellen. Stelle dir deine Seite als Schrank mit ganz vielen Schubladen vor, was damit die Page ist. Jede der Schubladen ist nun eine Node, und in jeder dieser Schubladen kann sich verschiedener Inhalt befinden, z.B. ein Post, ein Profil, oder eben ganz verschiedene Dinge. Die Node ist also der Teil, wo auf einer Seite Inhalt dargestellt wird. Das ist etwas knifflig, da es nicht bedeutet, dass nur in Nodes Contet dargestellt werden kann, natürlich kann die Page, quasi der Rahmen um die Node, auch Content enthalten, wobei das eher das grundsätzliche Gerüst der Seite, also dein Markup nebst Navigation, usw. wäre. Inhalte der Node ändern sich also von Node zu Node (nicht zwingend das Design), die der Page bleiben in aller Regel gleich. Wobei Drupal auch Möglichkeiten bietet, dass je nach Bedingung zu ändern.

Die Node stellt also die Struktur und das Design, als auch die Daten der Node selbst dar.

Generell ist der Aufbau hierarchisch page.tpl.php > node,tpl.php > body (content)/fields (Enitäten, usw.)

Schau dir hierzu mal: Overview of theme files an.

Das Feld in einem Inhaltstypen wird also in der Node ausgegeben, wobei die Node generell sein kann (node.tpl.php), oder z.B. dem Inhaltstypen entsprechend (node--inhaltstyp.tpl.php), oder auch der einzelnen Node (nid) angepasst (node--26.tpl.php). Hierzu empfehle ich als Stichwort "template suggestions", siehe auch: Drupal 7 Template (Theme Hook) Suggestions. Das bietet insgesamt die Möglichkeit das Design des Inhalts, nicht der gesamten Seite, je nach Inhaltstyp anzupassen, vor allem auch vom Design und der Struktur her.

Ich hoffe, ich konnte das bildlich darstellen, und habe nicht zu viel Verwirrung gestiftet. :)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Für jemand, der vielleicht

Eingetragen von wla (9461)
am 14.02.2013 - 14:53 Uhr

Für jemand, der vielleicht schon einmal mit dem Programm Excel oder ähnlichen gearbeitet hat kann man den Datentyp und den Node auch so erklären:

  • der Datentyp beschreibt, wie die Felder in der Tabelle heißen und was für Typen es sind (Text, Zahlen, ....)
  • Ein Node ist jetzt eine Zeile der Tabelle

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke ist jetzt etwas klarer...

Eingetragen von Eduard (6)
am 14.02.2013 - 15:50 Uhr

... wobei ich schätze, dass es wohl eins dieser Dinge ist, die man erst richtig versteht, wenn man was man damit gemacht hat.

Aber um mal meine ursprüngliche Frage etwas zu präzisieren, ein Beispiel....

Wenn ich in meiner page.tpl.php

<?php
print $logo;
?>
eingebe wird die URL zur Logo-Datei ausgegeben.
Jetzt habe ich eine Seite angelegt (Name: testseite, Inhaltstyp: Einfache Seite, keine Menueintrag, Inhalt: Beispieltext)
Kann ich jetzt genauso direkt diese Seite innhalb der page.tpl.php einbinden? Etwa so:

<?php
print 'testseite';
?>

Und wenn ja, wie sehe dann die Syntax aus?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du meinst, ob du den

Eingetragen von Genesis (597)
am 14.02.2013 - 16:01 Uhr

Du meinst, ob du den Seiteninhalt direkt ausgeben kannst?

Wie gesagt, das geschieht über die node. Dazu wird in der node.tpl.php

<?php
 
print render($content); 
?>

ausgegeben, was alle Inhalte der Node darstellt, also alle Felder, nebst body. Siehe dazu auch: node.tpl.php documentation

Es gibt sicherlich Wege Inhalte eines Inhaltstypes auch direkt in der page.tpl.php auszugeben, aber in 99% der Fälle macht das einfach keinen Sinn, zumindest so unmittelbar, und entspricht auch nicht der Systematik von Drupal. Oder hast du da konkrete Fallbeispiele, dessen was du realisieren willst?

Und ja, das lernt man alles primär wenn man damit Arbeit, dann wird einem die Systematik und Hierarchie recht schnell verständlich. Mein Tipp - Kleine Schritte. Nicht alles durcheinander und auf einmal, das kann nur schief gehen. :)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Es gibt ein grobes

Eingetragen von Eduard (6)
am 14.02.2013 - 16:20 Uhr

Es gibt ein grobes Fallbeispiel...
Es soll eine Single Page Seite sein. Sprich es gibt nur eine Seite mit unterschiedlichen Inhalten. Diese Inhalte werden mit Drupal gepflegt (jeder Inhalt eine Seite oder vielleicht ein Block? oder ein View?). Im Theme muss ich dann die einzelnen Inhalt direkt ansprechen um sie erstmal mit CSS zu positionieren und zu "stylen" und um sie schließlich mit JQuery von links nach rechts usw. animieren zu können.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das machst du über Views.

Eingetragen von Genesis (597)
am 14.02.2013 - 16:57 Uhr

Das machst du über Views. Nehmen wir mal an du hast:

Inhaltstyp I (Kuchen)
Inhaltstyp II (Pommes)

Nun legst du verschiedene Inhalte an, also Nodes. Danach hast du die Inhalte:

Kuchen A, Kuchen B, Kuchen C
Pommes A, Pommes B, Pommes C

Nun erstellst du einen View (Ansicht), und listest z.B. alle Inhalte, oder nur die Titel des Inhaltstypen Kuchen auf. Du hast dann also eine Liste aus

Kuchen A,
Kuchen B,
Kuchen C

Gleiches machst du mit Pommes, oder du mischt beide, dann hast du z.B.

Kuchen A,
Pommes A,
Kuchen B,
Pommes B,
Kuchen C,
Pommes C

Das gibst du dann als Block aus. Jeder View ein Block.

Blöcke werden wie oben schon erwähnt in Regionen gelagert, und Regionen liegen normalerweise in der page und nicht der node, wobei auch letzteres möglich ist.

Wenn du nur eine Seite darstellen willst, dann ist das ja eigentlich die Front. Da kennt Drupal z.B. die suggestion page--front.tpl.php.

Danach legst du dann in deiner info-datei in deinem Theme-Ordner Regionen an, z.B.:

Zitat:

regions[pommes] = Pommes View

Diese Region kannst du dann in deiner Page ausgeben, via:

<?php
print render($page['pommes']);
?>

Wenn du nun den Cache der Seite leerst, und danach in deine Block-Verwaltung im Adminbereich gehst, dann findest du dort deine per View angelegten Blöcke. Diese kannst du dann auf den zuvor erstellten Regionen platzieren, und danach sollte die entsprechende Liste angezeigt werden.

Wie gesagt, dass sind jetzt "very basics". Das geht alles noch im Detail. Dem View kannst du z.B. noch CSS-Klassen mitgeben, oder du themest den View, indem du ein template anlegst, z.B. via views-view-fields--deinviewname.tpl.php, und dann gibst du die einzelnen Infos und Felder direkt aus, und kannst unmittelbar Einfluss auf Positionierung oder das Markup nehmen.

Da nun aber ins Detail zu gehen würde hier den Rahmen wirklich sprengen. Das muss man sowieso selbst lernen, weil man es einfach nicht im Detail erklären kann, ohne das man dafür ein Buch schreiben müsste. :) Das hört sich jetzt alles wahnsinnig komplex an, ist es aber eigentlich gar nicht. Man muss es nur einmal wissen!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vielen Dank!

Eingetragen von Eduard (6)
am 14.02.2013 - 17:23 Uhr

Das:

<?php
print render($page['pommes']);
?>

ist im Prinzip das worauf ich hinaus wollte.
Und jetzt weiß ich auch, dass View und Blöcke der Schlüssel ist.
Ich werde das mal morgen im Detail durcharbeiten.

Vielen herzlichen Dank!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke nochmal

Eingetragen von Eduard (6)
am 15.02.2013 - 16:20 Uhr

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

Statistik

Beiträge im Forum: 250233
Registrierte User: 20450

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» 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 1 Benutzer und 7 Gäste online.

Benutzer online

  • dinmikkith

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