npostnik.de

Bookmarken der Seite (ah_bookmark + realURL)

Die Extension ah_bookmark ist eigentlich ganz schick, um die Seite schnell zu den Favoriten hinzuzufügen, denn sie kümmert sichum die Browser-Abfrage, so dass es in FF und IE gleiche funktioniert. Es gibt da leider einige Probleme, vor allem im Zusammenhang mit RealURL.

Zunächst mal ein Beispiel, wie man die Extension ins Template einbauen kann (falls man den Bookmark-Link auf jeder Seite haben möchte). Hier habe ich ein Menü simuliert mit einigen manuell angelegten Links, die alle ein anderes Icon haben können. Der LocalLang Abschnitt sollte dafür sorgen, dass die nicht vorhandene Übersetzung der Extension nicht ins locallang.xml reingeschrieven werden muss.

lib.specialnavigation = COA
lib.specialnavigation {
[…]
39 = TEXT
39.value =

  • 40

    wrap =

      |

    Bei Anklicken des Links wurde man auf die Startseite weitergeleitet, weil RealURL eingesetzt worden ist. Ich hatte versucht ans Ende des Javascript-Aufrufs im Link ein „return false;“ dranzuhängen. Das hat aber irgendwie auch nichts genützt. Daher die elegante Lösung mit dem Link auf die aktuelle Seite. Dazu in der Datei class.tx_ahbookmark_pi1.php die switch-Anweisung suchen und die Links wie folgt ändern.

    switch ($agent[‚BROWSER‘]) {
    case ‚msie‘:
    case ’net‘:
    $content.= ‚pi_linkTP_keepPIvars_url().'“ onclick=“addBookmark“ rel=“sidebar“ title=“‚.$title.‘; return false;“ >‘.$linkText.‘‚;
    break;
    default:
    $content.= $this->pi_getLL(’noSupport‘,“);
    break;
    }

    Ein weiteres Problem ist, dass der Title der Seite nicht angezeigt, weil davon ausgegangen wird, dass $this->data in der Extension gefüllt wird. Außerdem muss im Template der Sitetitle gesetzt werden. Im schlimmsten Fall wird dann einfach nur ein : angezeigt, wenn man die Seite zu Favoriten hinzufügen möchte. Es gibt bestimmt eine bessere Möglichkeit, das zu lösen, aber weil ich grade sowieso in der php-Datei am Pfuschen war, dachte ich, könnte ich es auch gleich da ändern.

    Zunächst mal habe ich $this->data gesetzt, falls es nicht da ist. Der getFieldVal-Ausdruck hat immer noch nicht das gewünschte Ergebnis geliefert. Daher habe ich es einfach geändert.


    // direkt nach $this->pi_USER_INT = 1; einfügen
    if(!$this->data) {
    $this->data = $this->cObj->parentRecord[‚data‘];
    }
    if (!$conf[‚title‘]) {
    // no static title set so set it to title of current page
    //$title = $GLOBALS[‚TSFE‘]->tmpl->setup[’sitetitle‘].‘: ‚.$this->cObj->getFieldVal(’navtitle // title‘);
    $title = $GLOBALS[‚TSFE‘]->tmpl->setup[’sitetitle‘].‘: ‚.$this->data[‚title‘];
    } else {
    $title = $conf[‚title‘];
    }
    // dann kommt irgendwann die switch-Schleife

  • Die mobile Version verlassen