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

  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
  • Vergabe von Berechtigungen für bestimmte Rollen; mir fehlt der Haken bzw. das „Veröffentlicht“
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • Rolle erstellen nicht zu finden
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
Weiter

Neue Kommentare

  • Was für einen Server benutzt
    vor 1 Woche 2 Tagen
  • Wenn die Subdomain auf
    vor 1 Woche 4 Tagen
  • ordnerstruktur
    vor 1 Woche 4 Tagen
  • Die Subdomain muß auf den
    vor 1 Woche 6 Tagen
  • Verwende doch das Tag dafür,
    vor 5 Wochen 1 Tag
  • Guckst du hier: step by step
    vor 5 Wochen 1 Tag
  • Guckst du hier: step by step
    vor 5 Wochen 1 Tag
  • Ich habe ja keine Angst vor
    vor 6 Wochen 3 Tagen
  • Ist grundsätzlichmachbar – aber nichts für „einfach mal schnell“
    vor 6 Wochen 5 Tagen
  • Vielen Dank erst einmal, aber
    vor 7 Wochen 15 Stunden

Statistik

Beiträge im Forum: 250289
Registrierte User: 20518

Neue User:

  • Wolf Dab
  • Scottteday
  • MichaelPeeno

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