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

  • Image Alt unD Image Titel
  • Probleme mit der darstellun der ogg:image Tags.
  • Drupal-Forks und ihre Schwächen/Stärken
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • Lokale Entwicklungsumgebung auf Windows
  • [gelöst]Abhängigkeiten zweier oder mehrerer Inhaltstypen
  • Drupalcenter tot?
  • Was kann ich gegen ständige Blutergüsse tun?
  • Mir gefällt die Drupal Symfony und deren Composer
  • Mir ist da was aufgefallen ;)
  • Matomo Installation
  • Verständnisfrage private_files in Drupal
Weiter

Neue Kommentare

  • Also bei mir bleibt da nix
    vor 11 Stunden 51 Minuten
  • Auch wenn deine Antwort nun
    vor 12 Stunden 56 Minuten
  • ich verwende 10.5.1
    vor 1 Tag 8 Stunden
  • sorry *g* vor lauter lauter
    vor 1 Tag 8 Stunden
  • Also der Token gehört schon
    vor 1 Tag 9 Stunden
  • nur die Erstinstallation
    vor 1 Tag 9 Stunden
  • Hm... Ich habe jetzt mal den
    vor 1 Tag 9 Stunden
  • Nicht nur Sicherheit, sondern auch Integrität Daten wichtig
    vor 1 Tag 10 Stunden
  • Ach was dass funktioniert
    vor 1 Tag 11 Stunden
  • Danke für die ausführliche
    vor 1 Tag 13 Stunden

Statistik

Beiträge im Forum: 250060
Registrierte User: 20368

Neue User:

  • Aspenflum
  • LilliNELP
  • Wavermype

» Alle User anzeigen

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