Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Anfängerfragen ›

[gelöst] Individuelle Bildausgabe in der page.tpl.php

Eingetragen von burfey (17)
am 14.09.2016 - 09:35 Uhr in
  • Anfängerfragen
  • Drupal 7.x oder neuer

Liebe Drupal Community,

zurzeit arbeite ich daran, ein bestimmtes Imagefield (field_bilder) ganz bestimmt in der page.tpl.php auszugeben. Ich möchte die Bilder, die ich dort hochlade in je ein Div Container packen um es in einen Imageslider zu stecken.

Dazu habe ich vorab folgendes in der page.tpl.php eingebaut.

...
<div id="header-image">
        <?php $field = field_view_field('node', $node, 'field_bilder', array('label'=>'hidden'));
        print
'<div class="swiper-container">';
        print
'<div class="swiper-wrapper">';
        print
render($field);
        print
'</div>';
        print
'<div class="swiper-pagination swiper-pagination-white"></div>';
        print
'</div>';
   
?>

</div>
...

Die entsprechende HTML Ausgabe sieht nun wie folgt aus:

...
<div id="header-image">
<div class="swiper-container">
<div class="swiper-wrapper">
<img typeof="foaf:Image" src="http://meinedomain.de/sites/default/files/bild_01.jpg" width="1280" height="700" alt="" />
<img typeof="foaf:Image" src="http://meinedomain..de/sites/default/files/bild_02.jpg" width="1280" height="700" alt="" />
<img typeof="foaf:Image" src="http://meinedomain..de/sites/default/files/bild_03.jpg" width="1280" height="700" alt="" />
</div>
<div class="swiper-pagination swiper-pagination-white"></div>
</div>
</div>
...

Soweit so gut, nur ist es so leider noch nicht ganz korrekt. Die images sollten nicht im img tag sondern sich in je einem div als background-image befinden.... also so

...
<div class="swiper-slide" style="background-image:url(http://meinedomain.de/sites/default/files/bild_01.jpg)"></div>
<div class="swiper-slide" style="background-image:url(http://meinedomain.de/sites/default/files/bild_02.jpg)"></div>
<div class="swiper-slide" style="background-image:url(http://meinedomain.de/sites/default/files/bild_03.jpg)"></div>
...

Leider weiß ich nicht, wie man die Bildausgabe so steuert und dem ganzen dazu noch einen vordefinierten Bildstil vergibt. Kann mir hier vielleicht jemand weiterhelfen?

Vielen Dank im voraus.

Mit besten Grüßen
Dennis

‹ Weiterleitung Slider durch Klicken auf Bild [gelöst] Individuelle Bildausgabe in der page.tpl.php ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

....

Eingetragen von caw (2762)
am 14.09.2016 - 11:06 Uhr

...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Baue ein Slidermodul ein

Eingetragen von ronald (3857)
am 14.09.2016 - 11:52 Uhr

und verwende es Drupalkonform.

Was du hier tust, geht komplett an Drupal vorbei, und wird unter Drupal8 nicht mehr funktionieren.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Es gibt kein passendes Modul,

Eingetragen von burfey (17)
am 14.09.2016 - 11:59 Uhr

Es gibt kein passendes Modul, was genau so funktioniert wie ich es mir vorstelle und es ist ja noch in Drupal 7.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nimm einen normalen Slider

Eingetragen von wla (9461)
am 14.09.2016 - 12:17 Uhr

Nimm einen normalen Slider wie jCarousell für Views und erstelle eine Ausgabe von Bild und Text zusammen. Dabei kannst Du die Struktur der Viewsausgabe so neu definieren, daß Dein Bild als Hintergrundbild verwendet wird oder Du setzt einfach Text auf das Bild, was mit ein bißchen CSS auch kein Problem sein sollte. Daraus machst Du einen Block und den kannst Du positionieren, wo Du es möchtest. Alles andere wird nur Gemurkse und Du bekommst die Verbindung zwischen den hochgeladenen Bildern und dem Platz für den Hintergrund nicht sauber gebaut.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das entspricht leider auch

Eingetragen von burfey (17)
am 14.09.2016 - 13:30 Uhr

Das entspricht leider auch nicht dem, was ich mir vorstelle. Ich hab vor, einen Inhaltstyp "Referenz" zu nutzen, den du mit den Feldern "Bilder" und "Projektbeschreibung" füllen kannst. Das Node dazu zeigt einen Full-Size Imageslider mit Fade-Effekt und dazu folgt im unteren Teil eine Projektbeschreibung. Daher möchte ich das direkt im page.tpl.php Dokument definieren, welche Inhalte wo platziert werden und wie diese dargestellt werden.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Jetzt wird klarer, was Du

Eingetragen von wla (9461)
am 14.09.2016 - 13:50 Uhr

Jetzt wird klarer, was Du willst. Nimm das Modul [do:viewfield] und integriere den View, der den Slider bildet, in der Ausgabe Deines Node-Types. Dafür mußt Du auch noch nicht in der page.tml.php ändern. Das ist in meinen Augen ohnehin die falsche Datei. Du möchtest doch nur die Ausgabe eines speziellen Inhaltstyps verändern. Also erstellst Du, wenn überhaupt, eine node--[typename].tpl.php. Wenn Du dazu spezeille Variablen benötigst, ist eine preprocess_node-Funktion in der template.php in Deinem Theme hilfreich. Vermutlich reicht Dir aber die Definition der Ausgabe Deines Inhalttyps.
Ich glaube auch immer noch nicht, daß man für Deine Aufgabenstellung programmieren müßte. In schwierigen Fällen kann man mit Panels die Ausgabe einer Seite aus mehreren Blöcken und Views aufbauen. Auch das ist reine Konfiguration.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Probier doch mal das: <div

Eingetragen von Stefan.Korn (286)
am 14.09.2016 - 15:06 Uhr

Probier doch mal das:

<div id="header-image">
        <?php
       
print '<div class="swiper-container">';
        print
'<div class="swiper-wrapper">';
        foreach(
$node->field_bilder['und'] as $image)
        {
          print
'<div class="swiper-slide" style="background-image:url('.image_style_url('dein_image_style', $image['uri']).')"></div>';
        }
        print
'</div>';
        print
'<div class="swiper-pagination swiper-pagination-white"></div>';
        print
'</div>';
       
?>

</div>

'dein_image_style' musst Du durch den Machine name des gewünschten Bildstils ersetzen

  • Anmelden oder Registrieren um Kommentare zu schreiben

Perfekt! Genau so sollte es

Eingetragen von burfey (17)
am 14.09.2016 - 16:18 Uhr

Perfekt! Genau so sollte es funktionieren.

Vielen Dank für eure Hilfe und euer Know-How!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Naja, eine Kleinigkeit gibt

Eingetragen von burfey (17)
am 15.09.2016 - 08:15 Uhr

Naja, eine Kleinigkeit gibt es doch noch :-/

Ich erhalte nun ab und zu folgende Fehlermeldung.

Notice: Undefined variable: node in include() (Zeile 77 von /mnt/webo/e0/55/54150555/htdocs/refresh/sites/all/themes/meintheme/templates/page.tpl.php).
Notice: Trying to get property of non-object in include() (Zeile 77 von /mnt/webo/e0/55/54150555/htdocs/refresh/sites/all/themes/meintheme/templates/page.tpl.php).
Warning: Invalid argument supplied for foreach() in include() (Zeile 77 von /mnt/webo/e0/55/54150555/htdocs/refresh/sites/all/themes/meintheme/templates/page.tpl.php).

und bezieht sich auf die Zeile

foreach($node->field_bilder['und'] as $image)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie ich schon schrieb, bist

Eingetragen von wla (9461)
am 15.09.2016 - 09:13 Uhr

Wie ich schon schrieb, bist Du im falschen template-File. Ein page.tpl.php weiß nicht von einem Node, denn er gilt für alle Seiten. Im node.tpl.php liegt die Node-Variable vor und auch in einem node--[nodetyp].tpl.php.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das kommt vermutlich auf

Eingetragen von Stefan.Korn (286)
am 15.09.2016 - 09:21 Uhr

Das kommt vermutlich auf "Nicht"-Node-Seiten.

Dann solltest du noch mit so was wie

if(isset($node))

abfangen ob die node-Variable überhaupt gesetzt ist und nur in diesem Fall Deinen Slider-code einbinden.

Oder Du verwendest statt page.tpl.php, page--node.tpl.php

Du wirst aber auch noch in den Fällen Probleme haben wo der Content Type "field_bilder" nicht enthält. Das solltest Du dann auch noch abfangen, z. B. mit if(isset($node->field_bilder)) oder mit Prüfung ob der Node vom passenden Content Type ist oder mit einer passenden Template Suggestion für page.tpl.php oder durch Verlagern des Codes in node.tpl.php bzw. einen Override von node.tpl.php ... Drupal hat auf jeden Fall viele Möglichkeiten.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zitat: Ein page.tpl.php weiß

Eingetragen von Stefan.Korn (286)
am 15.09.2016 - 09:26 Uhr
Zitat:

Ein page.tpl.php weiß nicht von einem Node, denn er gilt für alle Seiten

stimmt so nicht, page.tpl.php enthält das node-Objekt wenn es vorhanden ist, siehe https://api.drupal.org/api/drupal/includes%21theme.inc/function/template_preprocess_page/7.x

  if ($node = menu_get_object()) {
    $variables['node'] = $node;
  }

Prinzipiell geb ich Dir schon recht, dass der Code besser in node.tpl.php aufgehoben wäre, aber vielleicht will der TE es irgendwo platzieren wo er mit node.tpl.php nicht hinkommt.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Die Fehlermeldung ist

Eingetragen von burfey (17)
am 15.09.2016 - 17:08 Uhr

Die Fehlermeldung ist verschwunden.

Das hat nun geholfen Stefan, vielen Dank.

Ich werde später zudem eine page--referenz.tpl.php erzeugen, wo das Feld field_bilder ein Pflichtfeld wird. Dann sollte es keinerlei Probleme mehr geben.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vorsicht: Im Drupal-Standard

Eingetragen von Stefan.Korn (286)
am 15.09.2016 - 17:25 Uhr

Vorsicht: Im Drupal-Standard ist page--contenttype.tpl.php nicht definiert. Diese TEmplate Suggestion musst Du ggf. selbst erzeugen oder Dein Theme liefert es bereits.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Stimmt, das Problem hatte ich

Eingetragen von burfey (17)
am 16.09.2016 - 08:06 Uhr

Stimmt, das Problem hatte ich damals bereits. Hatte dazu aber einen guten Beitrag von hier gefunden http://www.drupalcenter.de/node/34210.

Das hat mir weitergeholfen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • 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
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
Weiter

Neue Kommentare

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

Statistik

Beiträge im Forum: 250237
Registrierte User: 20464

Neue User:

  • ocvk2810
  • marouane.blel
  • capilclinic

» 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 32 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