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

(Gelöst) In Content type ein Reihenfolge-Feld für Prev-Next-Buttons erstellen

Eingetragen von A. Winter (88)
am 06.06.2013 - 09:18 Uhr in
  • Module
  • Drupal 7.x

Hallo zusammen,
meine Frage bezieht sich nicht wirklich auf Module, ich fand aber auch kein anderes passendes Unterforenthema.

Ich zeige verschiedene Nodes mit Produktinformationen an, die auf einem eigens erstellten Content type basieren.
Auf einer Detailseite, also der Node, sollen Previous- bzw. Next-Buttons zu Nachbarnodes angezeigt werden.

Die Reihenfolge dieser Nodes würde ich gerne selbst steuern, sodass es intern (während des Erstellens einer Node)
die Möglichkeit gibt, der ersten erstellten Node z.B. den Reihenfolgenwert 10, der nächsten 20 zu geben usw. sodass
ich im Nachhinein die Reihenfolge noch verändern kann.

Eigentlich würde ich gerne so etwas nachbauen, was Drupal auch für das Sortieren der Felder auf der Seite
Felder verwalten (admin/structure/types/manage/type/fields) verwendet, allerdings
nicht für Felder, sondern für Nodes.

Eine vorläufige Version der Buttons hatte ich mir schon erarbeitet, allerdings habe ich hierzu die Node-ID herangezogen,
was eine nachträgliche Änderung der Reihenfolge nicht möglich macht:

<?php
$result
= db_query("SELECT nid FROM {node} WHERE nid < :nid AND type = :ntype AND status = 1 ORDER BY nid DESC LIMIT 1", array(':nid' => $node->nid, ':ntype' => $type));
foreach (
$result as $record) { if(!empty($record->nid)) $prev_id = $record->nid; else $prev_id = false; }

$result = db_query("SELECT nid FROM {node} WHERE nid > :nid AND type = :ntype AND status = 1 ORDER BY nid ASC LIMIT 1", array(':nid' => $node->nid, ':ntype' => $type));
foreach (
$result as $record) { if(!empty($record->nid)) $next_id = $record->nid; else $next_id = false; }
?>


<?php if ($prev_id): ?><a class="prev-example" href="<?php print url('node/'.$prev_id); ?>"></a><?php endif; ?>
<?php if ($next_id): ?><a class="next-example" href="<?php print url('node/'.$next_id); ?>"></a><?php endif; ?>

‹ TinyMCE und Silbentrennung (Gelöst) In Content type ein Reihenfolge-Feld für Prev-Next-Buttons erstellen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Für das manuelle Sortieren

Eingetragen von leda.ch (977)
am 07.06.2013 - 01:08 Uhr

Für das manuelle Sortieren von Nodes ist eigentlich das Modul weight gut geeignet. Ich verwende weight manchmal zusammen mit Views. Aber wie sich das dann im Node äussert, damit Du das im SQL als Sortierung verwenden kannst, weiss ich grad nicht. Ich würde mal eine View mit dieser Sortierung bauen und dann den SQL dazu inspizieren.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie leda.ch schon schrieb

Eingetragen von SteffenR@drupal.org (2262)
am 07.06.2013 - 22:30 Uhr

Wie leda.ch schon schrieb bietet sich hierfür das Modul [do:weight] oder draggableviews‎ an. Hiermit kannst du die Reihenfolge von Nodes einfach über einen View steuern. Die festgelegte Reihenfolge lässt sich dann natürlich auch als Sortierkriterium für die Ausgabe verwenden.

Als Pager bietet sich das Modul [do:custom_pagers] an - dies erlaubt es auch auf Grundlage von Views einen previous/next Pager zu erzeugen. Im Einsatz ist das Ganze bspw. hier: http://www.urlaub-gosch.de/ferienhaus/meerjungfrau (unter der Google Map)

SteffenR

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vielen Dank leda.ch und

Eingetragen von A. Winter (88)
am 11.06.2013 - 09:09 Uhr

Vielen Dank leda.ch und SteffenR@drupal.org für die Hinweise, die mir echt weitergeholfen haben und ich
somit das Problem lösen konnte.

Zum Einsatz ist das weight-Modul gekommen, mit dessen Hilfe ich jetzt jeder Node ein bestimmtes Gewicht
geben und dieses z.B. zur Sortierung verwenden konnte.

Darauf aufbauend konnte ich die Zurück- und Vor-Buttons dann selbst implementieren. Wen es interessiert,
hier der Code:

<?php
$result
= db_query("SELECT entity_id, weight FROM {weight_weights} WHERE `weight` < :weight_weight ORDER BY weight DESC LIMIT 1", array(':weight_weight' => $node->weight_weight));
foreach (
$result as $record) {
  if(!empty(
$record->entity_id)) $prev_id = $record->entity_id;
  else
$prev_id = false;
}

$result = db_query("SELECT entity_id, weight FROM {weight_weights} WHERE `weight` > :weight_weight ORDER BY weight ASC LIMIT 1", array(':weight_weight' => $node->weight_weight));
foreach (
$result as $record) {
  if(!empty(
$record->entity_id)) $next_id = $record->entity_id;
  else
$next_id = false;
}
?>


<?php if ($prev_id): ?><a class="prev-example" href="<?php print url('node/'.$prev_id); ?>" title="Previous example"></a><?php endif; ?>
<?php if ($next_id): ?><a class="next-example" href="<?php print url('node/'.$next_id); ?>" title="Next example"></a><?php endif; ?>

Vielen Dank nochmal!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wieso hast du die vor/ zurück

Eingetragen von SteffenR@drupal.org (2262)
am 14.06.2013 - 08:50 Uhr

Wieso hast du die vor/ zurück Buttons denn selbst implementiert?
Genau dies hättest du ohne eine einzige Zeile Code mit dem [do:custom_pagers] Modul auch erreichen können.

SteffenR

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Canvas Palette: Eine fertige Komponentenbibliothek für Drupal Canvas
  • Hilfe zu Updates oder Composer
  • Vergleich Drupal und Contao
  • [geloest] Blocks in Bootstrap nebeneinander darstellen und nicht untereinander
  • DrupalCamp Frankfurt 27-28 November 2026
  • Bitte mein Bentzerkonto löschen
  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
Weiter

Neue Kommentare

  • Danke ich werde mir die
    vor 4 Wochen 6 Tagen
  • Vielen Dank für Ihren
    vor 5 Wochen 1 Tag
  • Composer ist sehr ratsam
    vor 5 Wochen 3 Tagen
  • Vielen Dank für den
    vor 5 Wochen 6 Tagen
  • Die alten CMS Vergleiche von contentmanager.de
    vor 5 Wochen 6 Tagen
  • Gut gemacht
    vor 5 Wochen 6 Tagen
  • Layout Builder etc. z.B. für Landing Pages
    vor 5 Wochen 6 Tagen
  • Links
    vor 6 Wochen 2 Tagen
  • Moin,wow, sehr gutes
    vor 6 Wochen 3 Tagen
  • Dass ist eine spannende
    vor 6 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250316
Registrierte User: 20567

Neue User:

  • Philiphelve
  • Robertspaft
  • drupalthemes

» Alle User anzeigen

User nach Punkten sortiert:
wla9466
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 3 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