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.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie leda.ch schon schrieb

Eingetragen von SteffenR@drupal.org (2262)
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

  • 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 (2262)
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

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

Statistik

Beiträge im Forum: 250233
Registrierte User: 20450

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

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