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 - 08: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 - 00: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.

lg leda

"Du liebst es, Du brauchst es oder Du gibst es weg"

www.leda.ch

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie leda.ch schon schrieb

Eingetragen von SteffenR@drupal.org (2260)
am 07.06.2013 - 21: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

http://www.twitter.com/_steffenr
Drupal-Initiative e.V.

undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vielen Dank leda.ch und

Eingetragen von A. Winter (88)
am 11.06.2013 - 08: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 (2260)
am 14.06.2013 - 07: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

http://www.twitter.com/_steffenr
Drupal-Initiative e.V.

undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Drupal 8/9 SEO-Beratung/Coaching
  • Probleme beim Versand von Mails via Drupal 9
  • Drupal 9: Wie kommt der Inhalt eines selbst erstellten Feldes in page-title.html.twig
  • Drupal DACH Meetup - Donnerstag 4. März 2021, 19 Uhr
  • Layout-Builder hängt
  • Sollte das Forum vielleicht lieber offline gehen?
  • Hilfe zu Views und Filter?
  • Cronjob für Multisite
  • Drupal oder Symfony Web Entwickler (m/w/i*) in Hamburg
  • Problem mit Verschlüsselungsmodul Real AES: PHP-encryption library via Composer
  • [gelöst] nodeone Tutorials nicht mehr online?
  • Rolle -vorbestimmet Menue
Weiter

Neue Kommentare

  • Hallo, wir sind ein junges
    vor 10 Stunden 22 Minuten
  • SaarlandToday schrieb Moin
    vor 13 Stunden 48 Minuten
  • Hi manarak, Vielleicht haben
    vor 13 Stunden 51 Minuten
  • witzigerweise meldet sich
    vor 14 Stunden 4 Minuten
  • Das machst Du am besten mit
    vor 1 Tag 13 Stunden
  • Das ist bestimmt zu wenig php
    vor 2 Tagen 11 Stunden
  • Was gut wäre ...
    vor 2 Tagen 21 Stunden
  • Hallo Regina, vielen lieben
    vor 6 Tagen 8 Stunden
  • Ja genau, Deine Personen und
    vor 6 Tagen 14 Stunden
  • Da ist jetzt einfach Unix
    vor 6 Tagen 21 Stunden

Statistik

Beiträge im Forum: 246062
Registrierte User: 18883

Neue User:

  • xapizm
  • maklko
  • Tunngle

» Alle User anzeigen

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