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

Im View feste Stelle für andere Inhalte vorhalten

Eingetragen von kale (19)
am 18.05.2015 - 11:08 Uhr in
  • Views
  • Drupal 7.x oder neuer

Hallo

ich habe eine News-View gebaut und will nun immer an Position X Werbung eingeblendet haben, die im selben Layout wie die Nachrricht erscheinen soll. Wie kann ich die Position X dafür belegen ohne das bei einer neuen News die Werbung mit nach hinten verschoben wird, sondern immer an selber Position bleibt?

Jemand eine Idee?

‹ CCK Listenwert in Views unter anderem Namen ausgeben.. Problem mit Draggable-Views. Reihenfolge wird nicht gespeichert. ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Du überschreibst am besten

Eingetragen von glycid (921)
am 18.05.2015 - 14:43 Uhr

Du überschreibst am besten die entsprechende views Template Datei mit einer fixen Position für den Ad Code. In diesem Beispiel wird der Custom String 'Mein ADCODE' an Position 3 innerhalb der View ausgegeben:

<?php if (!empty($title)): ?>
  <h3><?php print $title; ?></h3>
<?php endif; ?>
<?php foreach ($rows as $id => $row) : ?>
  <div<?php if ($classes_array[$id]) { print ' class="' . $classes_array[$id] .'"';  } ?>>
    <?php print $row; ?>
  </div>
  <?php if ($id == 1) :?>
   <div class="adcode">Mein ADCODE</div>
  <?php endif; ?>
<?php endforeach; ?>

Für Mein ADCODE kannst du einfach den Google Adsense Code Block oder was auch immer einsetzen. Willst du die Position ändern, passt du nur die Überprüfung des Wertes von $id an. Soll der Block an zweiter Stelle stehen, dann $id == 0, soll er an fünfter Stelle stehen, dann $id == 3 u.s.w.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Werbung

Eingetragen von stBorchert (6003)
am 19.05.2015 - 09:39 Uhr

Ganz so einfach nur über ein Template ist das leider nicht zu lösen.
Wenn man die Werbung auf jeder Seite (vorausgesetzt, man hat einen Pager) haben möchte, muss man tiefer in den Rendering-Prozess von Views eingreifen. Wir hatten das mal für eine größere Seite umgesetzt und das dort dann über eine eigene SearchApiViewsQuery, ein Row-Plugin, ein Style-Plugin und diverse alter-Hooks (z.B. hook_views_post_build() und hook_views_pre_render()) gelöst.
Über die Views-Plugins kann man die Werbung dann an einer beliebigen Position innerhalb der Ergebnisse ausgeben lassen (feste Position bzw. alle x Einträge).

Notwendig wurde der ganze Spass aus folgendem Grund:

* man möchte 10 Einträge pro Seite anzeigen und z.B. an der 5. Position in der Liste die Werbung
* bei weniger als 10 Ergebnissen hat man kein Problem
* bei 10 oder mehr Ergebnissen werden plötzlich 11 Elemente auf der Seite angezeigt, man muss also den Pager anpassen ...
* bei 20 oder mehr Ergebnissen hat man dann schon 2 zusätzliche Elemente, die Berechnung des Pagers durch Views passt also noch weniger :), usw. ...

Wenn Du damit leben kannst, dass durch die Werbung immer ein Eintrag pro Seite "zu viel" angezeigt wird, genügt eventuell das Template. Ansonsten wird es komplizierter.

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

stBorchert schrieb * bei 10

Eingetragen von glycid (921)
am 19.05.2015 - 14:10 Uhr
stBorchert schrieb

* bei 10 oder mehr Ergebnissen werden plötzlich 11 Elemente auf der Seite angezeigt, man muss also den Pager anpassen ...
* bei 20 oder mehr Ergebnissen hat man dann schon 2 zusätzliche Elemente, die Berechnung des Pagers durch Views passt also noch weniger :), usw. ...

Moin Stefan,

Ich habe dazu einen entsprechenden Test gemacht und kann diese Verschiebung nicht nachvollziehen. Durch die kleine Modifikation der views-view-unformatted--NAMEMEINERVIEW.tpl.php füge ich ja keine zusätzliche Zeile ein, sondern hänge den div- container innerhalb der Schleife lediglich an die Row mit dem entsprechenden Wert von $id an. Das funktioniert auf einer aktuellen D7 Testinstallation einwandfrei, egal wieviele Elemente ich pro Seite ausgeben lasse. Lasse ich mir die Werte von $id ausgeben, erhalte ich z.Bsp. bei 10 Rows / Seite für jede Pager- Site korrekterweise die Werte 0 - 9. Bei 5 pro Seite 0 - 4. Der Div Container mit dem Custom Code seht auf jeder Seite exakt an der richtigen Stelle.

Vielleicht waren bei eurem Projekt andere Gründe ursächlich, bei mir klappt das wie in meinem ersten Post beschrieben einwandfrei. Die View gibt mir insgesamt 74 Elemente aus, die ich nach Belieben aufteilen kann und der Custom Code steht immer an der gewünschten Position.

Gruss Guido

  • Anmelden oder Registrieren um Kommentare zu schreiben

glycid schrieb Ich habe dazu

Eingetragen von stBorchert (6003)
am 20.05.2015 - 05:46 Uhr
glycid schrieb

Ich habe dazu einen entsprechenden Test gemacht und kann diese Verschiebung nicht nachvollziehen. ... Der Div Container mit dem Custom Code seht auf jeder Seite exakt an der richtigen Stelle.

Ja, das ist korrekt. Allerdings überschreibst Du damit ein existierendes Ergebnis Deines Views. Und zwar genau das mit $id = 1 ;)

  • Anmelden oder Registrieren um Kommentare zu schreiben

stBorchert schriebAllerdings

Eingetragen von glycid (921)
am 20.05.2015 - 09:18 Uhr
stBorchert schrieb

Allerdings überschreibst Du damit ein existierendes Ergebnis Deines Views. Und zwar genau das mit $id = 1 ;)

Das wäre natürlich kompletter Unsinn und würde dem so sein, hätte ich dies der Threaderstellerin sicherlich nicht vorgeschlagen. Ich überschreibe jedoch kein View- Item, sondern hänge den div- Container an ein bestimmtes Element an. Hier das Ergebnis für <?php if ($id == 0) :?>:

Die erzeugte HTML Struktur:

Die ursprüngliche Struktur der View ändert sich durch die Änderung in der .tpl Datei nicht ;) Ohne die Modifikation habe ich exakt dieselbe Struktur vorliegen.

AnhangGröße
testview.png 12.98 KB
html-struktur-testview.png 152.53 KB
  • Anmelden oder Registrieren um Kommentare zu schreiben

glycid schrieb ...Ich

Eingetragen von stBorchert (6003)
am 20.05.2015 - 10:13 Uhr
glycid schrieb

...Ich überschreibe jedoch kein View- Item, sondern hänge den div- Container an ein bestimmtes Element an. ...

Ah stimmt, sorry. Da hatte ich mich verguckt und gedacht, Du gibst die Werbung anstelle des Ergebnisses mit der ID 1 aus. So bekommst Du jedoch einen View mit 11 Ergebnissen pro Seite (10 "normale Ergebnisse" + 1 Werbung).
In einer einfachen Liste funktioniert das noch, bei einem mehr oder weniger festem Grid führt das jedoch zu seltsamen Effekten.

Hier mal ein Beispiel, wie das auf der Seite dann aussieht: http://share.undpaul.de/bilder/sb/2015-05-20_11-11-38.png
Die Werbung wird auf jeder Seite des Views an der 5. Position ausgespielt.

Wenn einem egal ist, dass man pro Seite für jede Werbung ein zusätzliches Element hat, kann man das natürlich auch einfach über das Template lösen.

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

Statistik

Beiträge im Forum: 250233
Registrierte User: 20451

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