Zum Inhalt springen

eigene Extension mit pageid => RealURL-Url (pagepath)

Erstellt am 23. September 2014 · 4 Antworten · letzte Antwort am 29. September 2014

Tags: Extbase, RealURL, Frage

chrisi51 ·

Hallo,

ich schreibe gerade eine Extension bei der ich zwischdurch die sprechende URL von realURL für eine gegebene PageID brauche.

Ich habe nun schon gefunden, dass eigens dafür die Extension pagepath entwickelt wurde, welche eine API für eigene Extensions bietet.

Die große Frage ist nun: wie nutzt man diese?

meine Classe sieht derzeit so aus:

class myEXT extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {

        protected $myEXTRepository = NULL;

        public function initializeAction() {
        }

        /**
         * action showScript
         *
         * @return void
         */
        public function showScriptAction() {
                $pagesearchid = $this->settings['which_pages'];
                if (!$pagesearchid) $pagesearchid=0;
                $honorLanguage = $this->settings['honor_language'];
                if (!$honorLanguage) $honorLanguage = 0;

                if($honorLanguage == 1) $parameters = array("L" => $GLOBALS['TSFE']->sys_page->sys_language_uidi);
                else $parameters = "";

                $pagepath = tx_pagepath_api::getPagePath($pagesearchid, $parameters);

                $this->view->assign('pageurl', $pagepath);
                $this->view->assign('pagesearchid', $pagesearchid);
                $this->view->assign('honorLanguage', $honorLanguage);
        }

Beim Aufruf einer Seite mit eingebunder Extension jammert PHP:

Fatal error: Class '.....\Controller\tx_pagepath_api' not found in ...../ext/myEXT/Classes/Controller/myEXTController.php on line 22

Mache ich irgendwas grundsätzlich falsch?

Viele Grüße
Christian

jenses ·

Ich verstehe das Problem überhaupt nicht -
wenn du den Link zur gegebenen PageID per Typolink generierst,
wird er doch im Frontend als "sprechende Url" ausgegeben?

aemka ·

Erstens gibt das für mich gar keinen Sinn, für die URL Generierung gibt es doch Viewhelper in Fluid und die nutzen realurl automatisch, wenn es an ist.

Zweitens musste du, wenn du eine Klasse ohne Namespaces innerhalb einer Klasse mit Namespaces in php instanziieren oder statisch nutzen willst, diese mit vorangestelltem \ schreiben.

chrisi51 ·

Hey,

ich bin noch nicht wirklich tief in der Extensionentwicklung. =)

Die Generierung per Typolink klappt. Da wusste ich einfach nicht, dass es dafür ein pendant für PHP gibt und typoscript brachte mir an der Stelle ja nichts. Zudem war die Extension das erste was mich ansprang, als ich nach so etwas gegoogled hatte. Daher hatte ich fest angenommen, dass es der einzige Weg wäre - wozu sonst schreibt man denn auch eine Extension.

Wie ich das über das Template lösen sollte, verstehe ich nun gar nicht. Ein Viewhelper, der aus einer URL mittels id dann eine sprechende URL generiert, ist mir leider ebenso unbekannt.

Der Extension wird im Backend in Form eines CE's eine PageID zugewiesen und sie ruft im Frontend ein JavaScript auf, welches genau diese Seite lädt. Aus der Seite wird dann per Zufall ein CE ausgewählt und auf die Seite gestellt. Das Ganze hat den Hintergrund, dass er das möglichst gecached abwickeln soll. Da ich bisher keinen Weg kenne, wie es wirklich gescheit wäre, ein einzelnes CE nachzuladen, welches dann eben aus dem Cache kommt (ich könnte das nur per URL mit Parametern) lade ich nun stattdessen die gesamte Seite welche aufgrund der sprechenden URL nun auch von nc_staticfilecache abgelegt wird und somit einigermaßen superschnell lädt.

Da die Typolink-Variante nun zum Ziel fühlte und ich eigentlich in diesem Projekt nicht so viel Zeit über habe, werde ich den Viewhelper erst später recherchieren können.

Wenn du magst, aemka, könntest du vielleicht kurz notieren, wie der Viewhelper heißt, sofern das in meiner Konstellation tatsächlich in betracht gezogen werden kann. 🙂

Vielen dank für eure Hilfe!
Chris