Anpassung einer Funktion zum Vor und Zurück Blättern in Artikeln
Eingetragen von holger@drupal.org (544)
am 17.12.2008 - 12:08 Uhr in
am 17.12.2008 - 12:08 Uhr in
Hallo allerseits,
ich nutze auf meiner Seite in den Artikeln eine Funktion um zwischen den Beiträgen zu blättern (previous node - next node) Das Ganze basiert auf der Anleitung auf http://drupal.org/node/117140
Funktionieren tut das soweit aber eine Frage dazu habe ich:
Wie kann man den Title Tag (title="") bei mouseover da noch einbringen?
Realisiert ist das alles über die template.php des Themes und Contemplate.
Der Code aus der template.php:
function next_prev_same_type($nid=null, $path=null, $direction=null)
{
if($nid){
// gather some node information
$node = node_load($nid);
$type = $node->type;
$created = $node->created;
// retrieve all node ids of this nodes' translations
$translation_ids = array();
foreach($node->translation as $translation) {
if($translation->status == 1){
$translation_ids[$key] = $translation->nid;
}
}
// switch some vars depending on direction
switch ($direction){
case 'next':
$modifier = ">";
$order = "ASC";
$link_str = " Zum nächsten Beitrag ››";
break;
case 'prev':
default:
$modifier = "<";
$order = "DESC";
$link_str = "‹‹ Zum vorherigen Beitrag ";
}
// get next / prev element from database
$query = db_query('select nid from {node} where type=\'%s\' AND status=1 AND nid!=%d AND created'.$modifier.'%d ORDER BY created %s, nid %s Limit 1',$type,$nid,$created,$order,$order);
while ($item = db_fetch_object($query)){
if($item->nid!=$nid && !in_array($item->nid,$translation_ids)){
$nav_nid = $item->nid;
}else{
// skip element, if it is a translation of the current node
return next_prev_same_type($item->nid,$path,$direction);
}
}
if($nav_nid){
return l(t($link_str),$path."/".$nav_nid);;
}
}
}
und der Code aus Contemplate:
<?php
print next_prev_same_type($node->nid, "node", "prev"); ?> |
<?php
print next_prev_same_type($node->nid, "node", "next");
?>
Weiß jemand wie ich den title-tag da einbringen kann um bessere Validität zu erzeugen?
Danke
- Anmelden oder Registrieren um Kommentare zu schreiben
ich vermute mal das dies
am 17.12.2008 - 23:05 Uhr
ich vermute mal das dies irgendwie im Bereich
return l(t($link_str),$path."/".$nav_nid);;
angepasst wird oder?
Auf Drupal.org hab ich da auch schon gesucht, aber zu $link_str hab ich da auch nichts effektives gefunden.
Beste Grüße, Holger
---
IT-News und IT-Jobs auf w3Projekt.com
Ist es nicht einfacher das
am 18.12.2008 - 07:29 Uhr
Ist es nicht einfacher das book Modul zu nutzen?
theme?
am 18.12.2008 - 08:53 Uhr
Moin Holger,
vllt. hilft dir ja das Überschreiben der Theme Funktion weiter: http://api.drupal.org/api/function/theme_links/6
Alternativ kannst du der l() Funktion auch attribute übergeben, die dann an den Link angehängt werden. Javascript müsste eigentlich auch gehen: http://api.drupal.org/api/function/l/6
Viel Erfolg,
Mirko
Anpassung einer Funktion
am 18.12.2008 - 10:08 Uhr
Ich habe jetzt mal versuch folgendes im oben genannten Code zu ändern:
return l(t($link_str), $link['title'],$path."/".$nav_nid);;
Dann bekomm ich leider nur eine weiße Seite zu sehen.
Ich habe mir auch mal die Codes wie im Buchmodul und Pager angesehen, fie Funktion ist ansich ja änlich, aber dort werden die Links mit
<a href ....
dann im Theme eingebracht, was in meinem Code ja nicht der Fall ist.Warscheinlich ist die Lösung mal wieder echt einfach aber ich bin nunmal kein Programmierer ;-)
Beste Grüße, Holger
---
IT-News und IT-Jobs auf w3Projekt.com
Fehler: Wrong parameter count for in_array()
am 20.12.2008 - 12:58 Uhr
Ich hab das Ganze jetzt zwar so hinbekommen, das es auf der Seite für den User sichtbar funktioniert, aber in den Logs kommt folgender Fehler
Wrong parameter count for in_array() in /web/1/000/014/453/10569/htdocs/drupal/themes/garland/template.php in Zeile 164.
Die Zeile 164 in meiner template.php sieht so aus:
if($item->nid!=$nid && !in_array($item->nid)){
und hier nochmal die komplette Funktion in der template.php
/** Vor- und Zurück Navi im Artikel**/
function next_prev_same_type($nid=null, $path=null, $direction=null)
{
if($nid){
// gather some node information
$node = node_load($nid);
$type = $node->type;
$created = $node->created;
// switch some vars depending on direction
switch ($direction){
case 'next':
$modifier = ">";
$order = "ASC";
$link_str = " Zum nächsten Beitrag ››";
break;
case 'prev':
default:
$modifier = "<";
$order = "DESC";
$link_str = "‹‹ Zum vorherigen Beitrag ";
}
// get next / prev element from database
$query = db_query('select nid from {node} where type=\'%s\' AND status=1 AND nid!=%d AND created'.$modifier.'%d ORDER BY created %s, nid %s Limit 1',$type,$nid,$created,$order,$order);
while ($item = db_fetch_object($query)){
if($item->nid!=$nid && !in_array($item->nid)){
$nav_nid = $item->nid;
}else{
// skip element, if it is a translation of the current node
return next_prev_same_type($item->nid,$path,$direction);
}
}
if($nav_nid){
return l(t($link_str),$path."/".$nav_nid);;
}
}
}
Auf Drupal.org habe ich dazu leider nichts gefunden, weiß da jemand Rat?
Beste Grüße, Holger
---
IT-News und IT-Jobs auf w3Projekt.com
Einfach und modifizierbar:
am 20.12.2008 - 19:37 Uhr
Einfach und modifizierbar: Custom Pagers
Anpassung einer Funktion zum Vor und Zurück Blättern in Artikeln
am 20.12.2008 - 22:00 Uhr
Danke für den Hinweis japanitrat aber das beantwortet ja die Frage nicht ;-)
Custom Pager hatte ich schonmal angesehen aber das Modul ist wenn ich es nicht falsch verstehe ja ehr dafür gedacht wenn man einen node auf mehrere Seiten verteilt oder?
Die Funktion welche bei mir nicht funktioniert ist ein blättern zwischen den Artikeln (Story).
Bis auf den oben benannten Fehler funktionierts ja bereits nur was ist am Code falsch das diese Fehlermeldung kommt?
Beste Grüße, Holger
---
IT-News und IT-Jobs auf w3Projekt.com
oeh, also das modul ist
am 21.12.2008 - 07:52 Uhr
oeh, also das modul ist dafür da, dass du auf node-views (also voll ansicht einer node) zus#tzlich einen vor/zurueck pager hast, der aus einer View berechnet wirst.
Bsp.: du hast Blogartikelt und willlst bei der Vollansicht zwei Links haben, die auf den Blogpost dafvor und danach zeigen. dafür musst du nur eine View erstellen, die dir alle Blogposts in einer bestimmten Reihenfolge gibt und diese in den Custom Pagers Settings angeben. Das Modul lädt diese View immer, wenn eine bestimmte Condition für die URL zutrifft (in der UI ist es standardmäßig der Nodetyp, aber du kannst auch eine PHP condition einfügen) und sucht dann die beiden Einträge raus, die davor/danach liegen. Du kannst diese Links wahlweise im Content-bereich der Node, oder in einem Block dann ausgeben.
Furthermore, statt "previous/next" kannst du mit ein wenig PHP code auch die Seitentitel einblenden. Einfach mal drupal.org und die Projekseite von Custom Pagers anchecken, ich glaube, das is genau das, was du brauchst :)
Error! Wrong parameter count for in_array()
am 23.12.2008 - 20:04 Uhr
Der Code den ich momentan nutze funktioniert ja - nur das eben in den Logs immer die benannte Fehlermeldung steht. Ich weiß nicht ob das irgendwo schädlich ist, auf die Funktion der Seite hat es soweit ichs sehe keinen Einfluss.
Hat niemand eine Idee was im Code geändert werden muss damit der PHP-Fehler behoben wird?
Kurz noch zu CustomPager: ich nutze Contemplate und damit scheinzt sich das Modul nicht zu vertragen bzw. da wird kein Pager angezeigt. Das war allerdings nicht meine Frage. Danke trotzdem
Beste Grüße, Holger
---
IT-News und IT-Jobs auf w3Projekt.com
"in_array" erwartet zwei
am 24.12.2008 - 19:54 Uhr
"in_array" erwartet zwei parameter: den array in dem du suchen möchtest (haystack) und das element nach dem du suchst (needle) ..
in deiner variante uebergibst du aber nur einen parameter, die node-id ... worin soll er also danach suchen?
in_array - welcher Parameter fehlt?
am 18.01.2009 - 11:07 Uhr
Mag ja sein, aber für mich bleibt die Frage, welcher Parameter fehlt???
In den Artikeln wird das Script ja korrekt dargestellt und auch das vorblättern und zurückblättern klappt. Nur ist eben bei jeder Aktion eines Users dieser Warnhinweis in den Logs.
Beste Grüße, Holger
---
IT-News und IT-Jobs auf w3Projekt.com
suchte zufällig zu dem
am 18.01.2009 - 13:17 Uhr
suchte zufällig zu dem thema gerade - danke für die ausführliche behandlung ...
sg ds
noch nicht ganz gelöst
am 18.01.2009 - 13:33 Uhr
Das Ganze funktioniert zwar aber die benannte Fehlermeldung in den Logs ist trotzdem da.
Ich bin kein Programmierer und suche mir Lösungen auch immer üner Postings auf Drupal.org oder Drupalcenter zusammen.
Leider sind hier die beschriebenen Hinweise oft so geschrieben, das vorausgesetzt wird, dass man entspechende Kenntnisse in Sachen Programmierung hat. Wünschenswert wäre es, wenn die Fragen allgemeinverständlicher beantwortet werden würden.
Beste Grüße, Holger
---
IT-News und IT-Jobs auf w3Projekt.com