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 - 11: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 - 09: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

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

Statistik

Beiträge im Forum: 250233
Registrierte User: 20451

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

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