Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Anfängerfragen ›

vor/zurück Navigation mit einer view als Sortierung - PHP?

Eingetragen von stixer (21)
am 30.09.2011 - 12:18 Uhr in
  • Anfängerfragen
  • Drupal 7.x

Hi.

Ich habe eine einfache vor/zurück Navigation in meinen Artikeln.

Im Menü habe ich einen link "Texte" der zu einer view (page) "Alle Artikel nach Einstellungsdatum sortiert" weist, also die neuesten 5 Artikelteaser werden unter "Texte" angezeigt.
Alle Artikel haben aber auch ein Feld mit einer Nummer, nach der die Artikel auch nach dieser Nummer sortiert werden können (die Nummer ist die eigentlich Chronologie, also so, wie die Artikel zusammen gehören).

Ein Beispiel: Die Artikel gehören so zusammen (das sind die Nummern aus "field_number"): "0001", "0002" "0003" etc.
Eingestellt werden sie aber z.B. so "0002", "0001", "0003".
Klicke ich jetzt auf "0002" und dann in die Navi "nächster Artikel", komme ich zu "0001", weil der Artikel ja danach erstellt wurde.
ich möchte aber statt dessen zu "0003" gelangen, weil das ja die eigentlich Reihenfolge ist.

Kann man folgendes script dementsprechend anpassen? Also die Daten aus dem Feld "field_number" als Sortierung nutzen?

Hier ist der Code:

<?php
function node_sibling($dir = 'next', $node, $next_node_text=NULL, $prepend_text=NULL, $append_text=NULL, $tid = FALSE){
  global
$language;

  if(
$tid){
   
$query = 'SELECT n.nid, n.title FROM {node} n INNER JOIN {term_node} tn ON n.nid=tn.nid WHERE '
          
. 'n.nid ' . ($dir == 'previous' ? '<' : '>') . ' :nid AND n.type = :type AND n.status=1 AND '
          
. 'AND tn.tid = :tid AND n.language = :language ORDER BY n.nid ' . ($dir == 'previous' ? 'DESC' : 'ASC');
   
//use fetchObject to fetch a single row
   
$row = db_query($query, array(':nid' => $node->nid, ':type' => $node->type, ':tid' => $tid, ':language' => $language->language))->fetchObject();
  }else{
   
$query = 'SELECT n.nid, n.title FROM {node} n WHERE '
          
. 'n.nid ' . ($dir == 'previous' ? '<' : '>') . ' :nid AND n.type = :type AND n.status=1 AND n.language = :language '
          
. 'ORDER BY n.nid ' . ($dir == 'previous' ? 'DESC' : 'ASC');
   
//use fetchObject to fetch a single row  
   
$row = db_query($query, array(':nid' => $node->nid, ':type' => $node->type, ':language' => $language->language))->fetchObject();
  }

  if(
$row) { 
   
$text = $next_node_text ? $next_node_text : $row->title;
    return
$prepend_text . l($text, 'node/'.$row->nid, array('rel' => $dir)) . $append_text;
  } else {
      return
FALSE;
  }
}
?>

Wahrscheinlich geht das auch einfacher, aber ich habe nichts entsprechendes gefunden... und bin bei php eher ahnungslos...
Ich habe auch schon versucht das über views zu machen, da kann ich ja die Felder als Sortierung nutzen, allerdings sollen ja die Teaser anders sortiert werden...

Vielen Dank für Hife!

‹ Inhalt hinzufügen->Artikel [gelöst] flash Datei in den Header verschieben ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, ich weiss jetzt

Eingetragen von Looman (6)
am 04.10.2011 - 10:53 Uhr

Hallo,

ich weiss jetzt nicht, aus welcher Datenbanktabelle dein Wert für field_number kommt, aber du musst deine query-variable so anpassen, dass du noch einen join auf die Tabelle machst, in der der Wert steht, und dann in der query die Order abändern kannst auf das field_number.

Irgend sowas in die Richtung:

$query = 'SELECT n.nid, n.title FROM {node} n INNER JOIN {term_node} tn ON n.nid=tn.nid  INNER JOIN {jeweilige_tabelle} jt on jt.nid = n.nid WHERE '
           . 'n.nid ' . ($dir == 'previous' ? '<' : '>') . ' :nid AND n.type = :type AND n.status=1 AND '
           . 'AND tn.tid = :tid AND n.language = :language ORDER BY jt.field_number ' . ($dir == 'previous' ? 'DESC' : 'ASC');

Für "jeweilige_tabelle" dann die entprechende tabelle in der "field_number" steht einsetzen.

Entsprechend müsstest du dass natürlich im else-Zweig machen.

Ich hoffe, das ist das, was du wolltest.

  • 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 8 Stunden
  • Vielen Dank für Ihren
    vor 4 Wochen 3 Tagen
  • Composer ist sehr ratsam
    vor 4 Wochen 5 Tagen
  • Vielen Dank für den
    vor 5 Wochen 12 Stunden
  • Die alten CMS Vergleiche von contentmanager.de
    vor 5 Wochen 1 Tag
  • Gut gemacht
    vor 5 Wochen 1 Tag
  • Layout Builder etc. z.B. für Landing Pages
    vor 5 Wochen 1 Tag
  • Links
    vor 5 Wochen 3 Tagen
  • Moin,wow, sehr gutes
    vor 5 Wochen 4 Tagen
  • Dass ist eine spannende
    vor 5 Wochen 4 Tagen

Statistik

Beiträge im Forum: 250316
Registrierte User: 20566

Neue User:

  • Robertspaft
  • drupalthemes
  • rofilm

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