Neu Eigene Seite - Teil der URL als Parameter

G. Pilz

Mitglied
3. November 2022
66
5
Bergneustadt
Hallo zusammen,

Frage an die "technisch Bewanderten" unter euch.
Folgendes würde ich gerne (mit möglichst geringem Aufwand) erreichen:
Ich habe im Shop (5.2.1) eine eigene Seite "Videos", die auch problemlos unter example.com/Videos aufgerufen werden kann.

Jetzt verwenden wir u.a. auf Flyern auch QR-Codes, die auf ein konkretes Video verlinken (wobei der Link selber erst mal auf eine Subdomain verweist und nur den Namen des Videos ohne Dateiendung enthält). Von da aus leiten wir dann auf die Shop-Seite weiter.
Meine momentane (und funktionierende) Lösung ist, dass ich in der .htaccess vom Shop, alles hinter /Video/ abschneide und als Query String anhänge.
Also aus: example.com/Videos/Mein-Beispielvideo
wird: example.com/Videos?v=Mein-Beispielvideo

In der Datei /layout/index.tpl fange ich dann die entsprechenden Seitenaufrufe ab, und binde dann (für den Content-Bereich) meine eigene Template-Datei ein.

Da ich diese Variante mit dem Query String allerdings "optisch" sehr unschön finde, hätte ich lieber, dass die URL unverändert bleibt, also: example.com/Videos/Mein-Beispielvideo

Das Problem, welches ich dabei habe ist, dass das "Abfangen" der Seitenaufrufe dann in der index.tpl zu spät ist, da das Shop-Script da schon nach einer Seite "Mein-Beispielvideo" unter "Videos" sucht, die es natürlich nicht finden kann, und intern dann bereits von einem 404-Fall ausgeht.

Leider habe ich bisher auch nicht rausfinden können, in welcher Reihenfolge und in welchen Dateien jedwede Requests abgearbeitet werden.
Wenn mir hier jemand weiterhelfen könnte?

Ich verwende ein komplett eigenes Template, insofern kann ich die Dateien auch direkt nach "meinen Wünschen" anpassen.

Zumindest in meiner gedanklichen Vorstellung wäre es (vermutlich) am "einfachsten", wenn ich JTL Shop dazu bringen könnte, jeden Aufruf, der mit "example.com/Videos" beginnt, auf die Seite "/Videos" zu routen, egal ob und was noch danach folgt.
Jemand eine Idee, wie ich das bewerkstelligen könnte?

Oder hat sogar jemand schon so etwas "gebastelt/ im Einsatz"?

Bin natürlich auch für jeden anderen (zielführenden) Vorschlag offen.

Für eure Unterstützung meinen besten Dank im Voraus.

VG
Gunther

PS: Was ich nach Möglichkeit gerne vermeiden würde ist, ein komplettes Plugin dafür zu coden. Aber rein aus Interesse - was wäre denn ggf. ein passender Hook, um einen Seitenaufruf rechtzeitig abzufangen und zu "manipulieren"?
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.638
1.583
Berlin
Das wäre mittels Plugin am Sinnvollsten, das muss ja in deinem Fall auch gar nicht viel können.

wenn du z.B.: hier schaust, dann ist die einzige Seite die existiert diese hier https://www.alexmo-cosmetics.de/Rezeptwelt

Alles andere was dann kommt sind virtuelle Seiten, genutzt wurde dazu der Hook https://jtl-devguide.readthedocs.io...ins/hook_descriptions/hook_index_seo_404.html

Wenn der Shop also keine Url findet wie z.B: /Rezeptwelt/Tattoo-Protect-726 dann landet er im Plugin, welches dann alles auseinander nimmt und den entsprechenden Inhalt ausgibt.
 

G. Pilz

Mitglied
3. November 2022
66
5
Bergneustadt
Das wäre mittels Plugin am Sinnvollsten, das muss ja in deinem Fall auch gar nicht viel können.
OK, verstehe ich.
Habe mir jetzt mal ein "Plugin-Grundgerüst" erstellt, genauer gesagt eine info.xml und hook.php
In der info.xml jetzt meine hook.php für den Hook 146 registriert:
XML:
<Install>
        <Hooks>
            <Hook id="146" priority="99">hook.php</Hook>  <!-- HOOK_INDEX_SEO_404 -->
        </Hooks>
</Install>

wenn du z.B.: hier schaust, dann ist die einzige Seite die existiert diese hier https://www.alexmo-cosmetics.de/Rezeptwelt
Alles andere was dann kommt sind virtuelle Seiten,
Danke für das Beispiel - ist exakt das, was ich auch erreichen möchte.
Aber als Seitenbesucher kann ich doch gar nicht "erkennen", ob es sich um eine "real" existierende Seite im Shop, oder um eine per Plugin "zusammengebastelte" Seite handelt.

Wenn der Shop also keine Url findet wie z.B: /Rezeptwelt/Tattoo-Protect-726 dann landet er im Plugin, welches dann alles auseinander nimmt und den entsprechenden Inhalt ausgibt.
Haha .., ja genau - "welches dann alles auseinander nimmt und den entsprechenden Inhalt ausgibt". Einfacher geschrieben als umgesetzt.
Hier bräuchte ich bitte nochmal Hilfe.
Ich möchte ja an dieser Stelle quasi meine real existierende Seite "Videos" ausgeben (Header, Footer etc. vom Shop inklusive). Auf der Seite "Videos" binde ich meine eigene Template-Datei ein. In dieser bräuchte ich dann halt eine Variable, die entweder die komplette aufgerufene URL enthält, oder den Teil hinter "/Videos" (falls vorhanden).
Und im Breadcrumb soll natürlich auch nicht "404" stehen, sondern bspw. "Startseite / Videos / Mein Beispiel-Video".

Also mein aktueller Stand ist, dass ich, wenn JTL die aufgerufene Seite nicht finden kann, dann in meiner "hook.php" lande. Aber an der Stelle bin ich jetzt etwas "ratlos", wie und was ich jetzt weiter machen muss, damit JTL "davon ausgeht", dass eigentlich die Seite "Videos" aufgerufen wurde, die URL in der Adresszeile aber unverändert bleibt ("example.com/Videos/Mein-Beispiel-Video")?

Bei einem "tatsächlichen" 404er beende ich mein Script einfach mit return.

Würde mich über einen kleinen "Denkanstoß" freuen - vielen Dank im Voraus.

Gruß
Gunther
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.638
1.583
Berlin
mit dem 404er Hook schaue ich zuerst ob es Inhalte gibt die für mich hinterlegt sind, Aufruf ist also videos/was_auch_immer, ich nehme mir von der 404er Url den basename, der steht ja in meiner eignen Datenbank als Seolink.

Da du über die XML in deinem Plugin ja eine eigene Seite angelegt hast (das ist die Grundvoraussetzung) kannst du den Link davon über die Datenbank holen.

Wenn also in meiner DB steht das es inhalte mit der SEO Url gibt, dann nehme ich den Link der Seite videos und übergebe die ID dem Shop

Beispielhaft (in der DB erkennst du deinen Link über die ID des Plugins und dem Namen den du in der xml dafür vergeben hast):

Code:
            $obj = $db->select("tlink",array('kPlugin','cName'),array(self::$_plugin->getID(),'blog'));
            Shop::$kLink = (int) $obj->kLink;

Nun ruft der Shop von sich aus die zu diesem Link zugheörige php Seite (die du dafür bereitgestellt hast) auf und in der schaust du dann nach deinem Inhalt und gibst Ihn darin aus.

Hier zum Verständnis die komplette 404er Funktion von mir:
Wenn ich in meiner DB keinen Inhalt finde der zu dem Link videos passt, mache ich gar nichts, ansonsten gebe ich dem Shop eben die ID des reinen video Links.

PHP:
    public function hookIndexSeo404($data) {
        $db = parent::getDB();
        self::$_blogContent = $db->query("select * from css_blogLanguage where seoLink='".$db->escape(trim(basename($data['seo']),"/"))."'",1);
        if(self::$_blogContent !== false) {
            $obj = $db->select("tlink",array('kPlugin','cName'),array(self::$_plugin->getID(),'blog'));
            Shop::$kLink = (int) $obj->kLink;
        }
    }

Hier der Link, wie man eigene Seiten über ein Plugin erstellt:
https://jtl-devguide.readthedocs.io...test/shop_plugins/infoxml.html#frontend-links
 
  • Gefällt mir
Reaktionen: Xantiva

G. Pilz

Mitglied
3. November 2022
66
5
Bergneustadt
Hallo,

erst mal schon vielen Dank für die Rückmeldung.
Eine Frage vorab: Bist du sicher, dass das so auch mit dem Shop 5.2 funktioniert?

mit dem 404er Hook schaue ich zuerst ob es Inhalte gibt die für mich hinterlegt sind, Aufruf ist also videos/was_auch_immer, ich nehme mir von der 404er Url den basename, der steht ja in meiner eignen Datenbank als Seolink.

Da du über die XML in deinem Plugin ja eine eigene Seite angelegt hast (das ist die Grundvoraussetzung) kannst du den Link davon über die Datenbank holen.
Ich habe die Seite "ganz normal" über eine Linkgruppe im Shop angelegt. Die ID ist in meinem Fall bspw. 97.

Wenn also in meiner DB steht das es inhalte mit der SEO Url gibt, dann nehme ich den Link der Seite videos und übergebe die ID dem Shop
...
Nun ruft der Shop von sich aus die zu diesem Link zugheörige php Seite (die du dafür bereitgestellt hast) auf und in der schaust du dann nach deinem Inhalt und gibst Ihn darin aus.
An diesem Punkt "scheitere" ich aktuell.
Ich habe mir in meiner 'hook.php' auch mal per
PHP:
$all_tpl_vars = $smarty->get_template_vars();
print_r($all_tpl_vars);
alle Smarty Variablen ausgeben lassen. Da "taucht" AFAIS überhaupt nichts auf, was ansatzweise irgendetwas mit der Link-ID zu tun hat.

AFAIS brauche ich das ja nicht, da die Seite als solche ja bereits existiert, oder?

Also soweit ich das bis jetzt verstanden habe, "könnte" man dem Script sagen, dass es (ungeachtet der sonstigen Werte/ Parameter) eine bestimmte Seite laden soll, und zwar indem man die entsprechende Link-ID übergibt - soweit richtig?
Dann müsste ich jetzt halt "nur noch" herausfinden, wie ich meine Link-ID (97) übergebe?

Wenn du mir hier nochmal auf die Sprünge helfen könntest? Vielen Dank!

Gruß
Gunther
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.638
1.583
Berlin
erst mal schon vielen Dank für die Rückmeldung.
Eine Frage vorab: Bist du sicher, dass das so auch mit dem Shop 5.2 funktioniert?
Ja es sollte keinen Grund geben das es da nicht geht (schreibe mein Blog Plugin gerade für den 5.2er um).

nach diesem Hook wird Shop::$kLink abgefragt, wenn das nicht 0 ist, dann ruft er die entsprechende Seite auf und ich setze das ja im Hook, wenn das im 5.2er nicht geht dann würde der ganze Hook keinen Sinn mehr machen.

Ich bin in meinem Plugin noch nicht an diesem Punkt.


Ich habe die Seite "ganz normal" über eine Linkgruppe im Shop angelegt. Die ID ist in meinem Fall bspw. 97.
Genau das sollst du nicht, die Seite muss über das Plugin angelegt werden, damit du es in der Linkliste findest, dann ist es am Ende auch egal wie die Url dafür ist weil du ja über den Namen und die ID des Plugins nach der kLink ID suchst.

AFAIS brauche ich das ja nicht, da die Seite als solche ja bereits existiert, oder?
Schrieb ich gerade, das Plugin soll seine eigene Seite mitbringen und anlegen.

Also soweit ich das bis jetzt verstanden habe, "könnte" man dem Script sagen, dass es (ungeachtet der sonstigen Werte/ Parameter) eine bestimmte Seite laden soll, und zwar indem man die entsprechende Link-ID übergibt - soweit richtig?
Dann müsste ich jetzt halt "nur noch" herausfinden, wie ich meine Link-ID (97) übergebe?
ja und erledigt sich mit dem anlegen der Seite übers Plugin.

Man macht keinen MIX aus statisch angelegten Seiten und dem was du da machen möchtest.

Beispiel von meinem Plugin:
So legst du die Seite an, in blog.php was im frontend ordner liegt machst du dann alles was dafür zu tun ist um den Inhalt der Seite aufzubereiten, da kannst du auch mit $smarty arbeiten.
in frontend/template/ liegt dann eine blog.tpl

XML:
        <FrontendLink>
        <Link>
            <Filename>blog.php</Filename>
            <Name>cssBlog</Name>
            <Template>blog.tpl</Template>
            <VisibleAfterLogin>N</VisibleAfterLogin>
            <PrintButton>N</PrintButton>
            <NoFollow>Y</NoFollow>
            <SSL>0</SSL>
            <LinkLanguage iso="GER">
                <Seo>cssBlog</Seo>
                <Name>cssBlog</Name>
                <Title>cssBlog</Title>
                <MetaTitle>cssBlog</MetaTitle>
                <MetaKeywords>cssBlog</MetaKeywords>
                <MetaDescription>cssBlog</MetaDescription>
            </LinkLanguage>
        </Link>
        </FrontendLink>
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.638
1.583
Berlin
OK, im 4er und 5.1er geht das noch im 5.2er muss das anders gemacht werden.

du musst mit den beiden Hooks arbeiten

HOOK_INDEX_SEO_404
HOOK_PAGE_NOT_FOUND_PRE_INCLUDE

Ich hab das mal ganz schnell in meinem Plugin quick&Dirty eingebaut um das zu testen, das kann ich für den 500er auch komplett so umbauen, egal ob 5.1 oder 5.2


der HOOK_INDEX_SEO_404 macht jetzt nichts anderes mehr als sich den aufgerufenen Link zu speichern:

Code:
    public function hookIndexSeo404($data) {
        Shop::set(self::$_plugin->getPluginID()."_seo",$data['seo']);
}

und in dem Hook HOOK_PAGE_NOT_FOUND_PRE_INCLUDE mache ich die Abfrage die ich vorher hatte

Code:
    public function hookPageNotFoundPreInclude($data) {
        $seo = Shop::get(self::$_plugin->getPluginID()."_seo",$data['seo']);
        $db = parent::getDB();
        self::$_blogContent = $db->query("select * from css_blogLanguage where seoLink='".$db->escape(trim(basename($seo),"/"))."'",1);
        if(self::$_blogContent !== false) {
            $obj = $db->select("tlink",array('kPlugin','cName'),array(self::$_plugin->getID(),'blog'));
            $data['isFileNotFound'] = 0;
            $data['kLink'] = (int) $obj->kLink;
        }

    }

dann geht das, dann kommt das hier dabei raus und er nimmt meinen Inhalt den ich dafür in meinem Plugin hinterlegt habe, weil des den zweiten Hook in allen 5er Versionen gibt.
in meinem Blog modifiziere ich wie du siehst auch die Breadcrumb....

Ist nur heute abrufbar weil ich daran noch arbeite:

Blogseite direkt -> https://jtl52.dateispeicher.de/520/cssBlog
Kategorieübersicht -> https://jtl52.dateispeicher.de/520/cssBlog/hans
Eintrag in der Kategorie -> https://jtl52.dateispeicher.de/520/cssBlog/mein-Eintrag

das wird dann nicht gefunden weil es ja nicht vorhanden ist -> https://jtl52.dateispeicher.de/520/cssBlog/hansel
 

G. Pilz

Mitglied
3. November 2022
66
5
Bergneustadt
OK, im 4er und 5.1er geht das noch im 5.2er muss das anders gemacht werden.

du musst mit den beiden Hooks arbeiten

HOOK_INDEX_SEO_404
HOOK_PAGE_NOT_FOUND_PRE_INCLUDE
Das klappt leider nicht.
AFAIS gibt es den HOOK 146 HOOK_INDEX_SEO_404 überhaupt nicht mehr - jedenfalls nicht in der Datei 'Redirect.php'.

Und auch der HOOK 164 HOOK_PAGE_NOT_FOUND_PRE_INCLUDE bewirkt bei Änderung der Daten rein gar nichts. Habe es sogar probiert, die gewünschten Daten direkt in der Datei nach dem Aufruf des Hooks zu setzen - kein Resultat.

und in dem Hook HOOK_PAGE_NOT_FOUND_PRE_INCLUDE mache ich die Abfrage die ich vorher hatte

IMHO ist das auch viel zu spät im Ablauf. Ich habe ja im Prinzip eine Seite hinter der URL liegen, die bei Aufruf von '.../Videos' angezeigt werden soll.
Ich müsste also "möglichst früh" den (internen) Link bspw. von '.../Videos/Mein-Beispiel-Video' entsprechend auf '.../Videos' ändern und den (optionalen) Teil dahinter dann als Smarty Variable einfügen.

Suche noch nach dem "passenden" Hook, bzw. der passenden Stelle. Denn soweit ich das bisher gesehen habe, hat JTL keinen "passenden" Hook. Und ich befürchte, dass wenn das Skript erst mal der Meinung ist, dass es sich um einen 404er handelt, alles nur unnötig kompliziert wird ... 😜.
in meinem Blog modifiziere ich wie du siehst auch die Breadcrumb....
Ich hoffe, dass wenn ich den (internen) Link "rechtzeitig" genug im Ablauf korrigieren kann, der Breadcrumb dann "nur noch" ggf. um den letzten Teil ergänzt werden muss.


Ich bedanke mich schon mal recht herzlich für die tolle Hilfe :thumbsup:!

Gruß
Gunther
 
Zuletzt bearbeitet:

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.638
1.583
Berlin
Du solltest schon den ungefähren Weg gehen den ich aufgezeigt habe.
die Breadcrumb Navigation kannst du über den Hook HOOK_TOOLSGLOBAL_INC_SWITCH_CREATENAVIGATION manipulieren.

Code:
public function hookToolsglobalIncSwitchCreatenavigation($args) {
   // entfernt den Eintrag 404
    array_pop($args['navigation']);

    $obj          = new NavigationEntry();
    $obj->setName("name1");
    $obj->setURL("link1");
    $obj->setURLFull("fullurl1");
    $obj->setHasChild(true);
    $args['navigation'][] = $obj;

    $obj          = new NavigationEntry();
    $obj->setName("name2");
    $obj->setURL("link2");
    $obj->setURLFull("fullurl2");
    $obj->setHasChild(false);
    $args['navigation'][] = $obj;

}
 

G. Pilz

Mitglied
3. November 2022
66
5
Bergneustadt
Du solltest schon den ungefähren Weg gehen den ich aufgezeigt habe.
Also ich gehe jetzt genau den aufgezeigten Weg.
Erstelle jetzt über mein Plugin den Frontend-Link "Videos" und nutze den Hook 164.
Aber "irgendetwas" habe ich entweder "vergessen/ übsersehen" oder falsch gemacht. Denn obwohl ich in meiner Hook-Datei die Werte für 'kLink' und 'isFileNotFound' (in meinem Fall sind das '135' und '0') entsprechend ändere, hat das keinerlei Auswirkungen!?
Heißt es wird nach wie vor das 404er Template mit der Sitemap ausgegeben.

Hier die "Kontroll-Ausgaben" aus meiner Hook-Datei und der Redirect.php:
Code:
URI: /Videos/Test-Video
Array ( [0] => 164 [isFileNotFound] => 0 [kLink] => 135 )
Code:
Array ( [key] => kLink [value] => 135 [isFileNotFound] => 0 )
Mal eine andere Frage: Du hast ja eine "public function" gepostet. Wo liegt die denn und wie rufst du die auf?
Wenn ich die in meine Hook-Datei packe kriege ich einen 500er Error.
(Zur Erklärung: Kenne mich zwar gut mit PHP aus, aber nur mit prozeduraler Programmierung - mit OOP stehe ich auf "Kriegsfuß", bzw. habe da als Autodidakt so meine Verständnisprobleme)

die Breadcrumb Navigation kannst du über den Hook HOOK_TOOLSGLOBAL_INC_SWITCH_CREATENAVIGATION manipulieren.

Code:
public function hookToolsglobalIncSwitchCreatenavigation($args) {
   // entfernt den Eintrag 404
    array_pop($args['navigation']);

    $obj          = new NavigationEntry();
    $obj->setName("name1");
    $obj->setURL("link1");
    $obj->setURLFull("fullurl1");
    $obj->setHasChild(true);
    $args['navigation'][] = $obj;

    $obj          = new NavigationEntry();
    $obj->setName("name2");
    $obj->setURL("link2");
    $obj->setURLFull("fullurl2");
    $obj->setHasChild(false);
    $args['navigation'][] = $obj;

}
Danke, das werde ich dann anschließend in Angriff nehmen, wenn die andere Geschichte "funktioniert".

PS: Ich halte diesen Weg aber immer noch für eine "Notlösung/ Krücke", denn er hat den gravierenden Nachteil, dass bei den Anfragen immer ein 404 Response Header gesendet wird.
Code:
Anfrage-URL: https://example.com/123/cssBlog/mein-Eintrag
Anfragemethode: GET
Statuscode: 404

Von daher würde ich die bereits von mir angesprochene Variante bevorzugen, den angeforderten URI "frühzeitig" abzufangen und entsprechend zu ändern, bevor das Skript überhaupt der Meinung ist, dass es sich um einen 404er handelt.

Gruß
Gunther
 
Zuletzt bearbeitet:

G. Pilz

Mitglied
3. November 2022
66
5
Bergneustadt
Hallo nochmal,

ich habe mich jetzt für eine "einfachere" Lösung entschieden.
Da ich bis jetzt nur ein Video-Link/URL habe, und es auch in absehbarer Zeit nicht viel mehr werden, habe ich jetzt über das Plugin einen weiteren Frontend Link angelegt (den ich in der Linkgruppe "Hidden" belasse).
Auf die Art & Weise vermeide ich die 404er Problematik.

Lediglich den Breadcrumb muss ich noch entsprechend anpassen.
Ich verwende den von dir genannten Hook 101 "HOOK_TOOLSGLOBAL_INC_SWITCH_CREATENAVIGATION".

Folgendes muss ich erreichen:
Beim Aufruf hat das Array 'navigation' 2 Elemente (Startseite + Mein-Video). Dazwischen muss ich jetzt noch den Eintrag 'Videos' bekommen.

Mein Ansatz bisher ist, dass ich im ersten Schritt einfach den aktuell letzten Eintrag als Kopie an das Array anhänge:
PHP:
array_push($args_arr['navigation'], $args_arr['navigation'][1]);

Soweit so gut, aber jetzt muss ich die Werte von dem mittleren Array-Element ändern. Und hieran scheitere ich im Moment noch.
Da ich einen Hook (in der info.xml angegeben) verwende, der eine PHP Datei in meinem Plugin-Verzeichnis aufruft, "funktioniert" das leider nicht so, wie du das in deinem Posting geschrieben hast.

Kann ich das auch so in meiner Hook-Datei irgendwie bewerkstelligen, oder was muss ich machen?

Gruß
Gunther
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.638
1.583
Berlin
ich habe mich jetzt für eine "einfachere" Lösung entschieden.
Da ich bis jetzt nur ein Video-Link/URL habe, und es auch in absehbarer Zeit nicht viel mehr werden, habe ich jetzt über das Plugin einen weiteren Frontend Link angelegt (den ich in der Linkgruppe "Hidden" belasse).
Auf die Art & Weise vermeide ich die 404er Problematik.
Da warst du nun schon fast am Ziel und hast dafür gesorgt das ich mich direkt mit meinem Plugin beschäftigt habe um aufzugeben?

S: Ich halte diesen Weg aber immer noch für eine "Notlösung/ Krücke", denn er hat den gravierenden Nachteil, dass bei den Anfragen immer ein 404 Response Header gesendet wird.
Ich sagte ja, ich bin da noch am bauen, ist aber auch geregelt und gibt nun keinen 404er mehr zurück. Das Problem war etwas schwer zu beheben aber am Ende mit einem zweizeiler erledigt.

Das was ich da Poste sind ja Auszüge aus meiner Klasse in der das alles passiert, daher sind das public Funktionen, die sind ja nur als Anhaltspunkt wie es in etwa geht und musst das für dich verwenden.
Soweit so gut, aber jetzt muss ich die Werte von dem mittleren Array-Element ändern. Und hieran scheitere ich im Moment noch.
Da ich einen Hook (in der info.xml angegeben) verwende, der eine PHP Datei in meinem Plugin-Verzeichnis aufruft, "funktioniert" das leider nicht so, wie du das in deinem Posting geschrieben hast.

Wo das aufgerufen wird ist am Ende egal, du solltest bei 5er Plugins nicht über die Hooks sondern wie angedacht über den dispatcher gehen, wer weiß wie lange die Hooks noch gehen.
Nichts hindert dich daran, in diesem Hook die Breadcrumb komplett neu aufzubauen.
 

G. Pilz

Mitglied
3. November 2022
66
5
Bergneustadt
Da warst du nun schon fast am Ziel und hast dafür gesorgt das ich mich direkt mit meinem Plugin beschäftigt habe um aufzugeben?
Nein, von Aufgeben ist keine Rede ;) - nur "vertagt". Ich brauche jetzt erst mal eine "funktionierende" Variante - wie ist dabei (erst mal) zweitrangig.
Und da ich bisher "nicht nachvollziehen" konnte, warum meine Änderungen, die ich in der aufgerufenen Hook-Datei vorgenommen habe, keine Wirkung zeigen, habe ich nach einem anderen Weg gesucht.

Mir sind in den letzten Jahrzehnten ja schon die verschiedensten CMS u.ä. begegnet, aber in keinem davon war es derart "umständlich" etwas eigentlich so Simples wie eine "interne Pfadänderung" vorzunehmen - zumal wenn es schon ein "Hook-System" gibt!
Fühlt sich (bisher zumindest) wie "von hinten durch die Brust ins Auge" an :rolleyes:.

Ich sagte ja, ich bin da noch am bauen, ist aber auch geregelt und gibt nun keinen 404er mehr zurück. Das Problem war etwas schwer zu beheben aber am Ende mit einem Zweizeiler erledigt.
Na ja, also wenn das schon für dich als Profi und JTL Shop Skript Kenner "etwas schwer" zu beheben war ...!

Das was ich da Poste sind ja Auszüge aus meiner Klasse in der das alles passiert, daher sind das public Funktionen, die sind ja nur als Anhaltspunkt wie es in etwa geht und musst das für dich verwenden.
Ja, schon klar. Aber wie bereits erwähnt stehe ich mit OOP leider auf Kriegsfuß, bzw. kenne mich damit nicht wirklich aus. Ich habe deinen "Auszügen" entnommen, dass es (interne) Funktionen gibt, mittels derer die Werte für die Objekte gesetzt werden können.
Aktuell scheitere ich aber daran, diese in meiner Hook-Datei verwenden zu können.

Wo das aufgerufen wird ist am Ende egal, du solltest bei 5er Plugins nicht über die Hooks sondern wie angedacht über den Dispatcher gehen, wer weiß wie lange die Hooks noch gehen.
Nichts hindert dich daran, in diesem Hook die Breadcrumb komplett neu aufzubauen.
Ja, habe ich mir auch schon angeguckt, allerdings noch nicht vollends verstanden. Was ich (glaube) bisher verstanden zu haben ist, dass man die Hooks über den Dispatcher registriert, anstatt über die <HOOK> Einträge in der info.xml. Was ich noch nicht ganz kapiert habe ist, wie und wo ich dann eine entsprechende Datei/ Funktion aufrufen kann, um auf den Hook zu reagieren?

Zitat aus der JTL Doku:
Dies hat den Vorteil, dass der Listener in Abhängigkeit einer Plugin-Option registriert werden kann. Somit wird der Hook, anders als bei statischen Hooks, die in der info.xml registriert wurden, nicht immer ausgeführt. Auch muss so der objektorientierte Kontext des Bootstrappers nicht verlassen werden, während Hooks jeweils nur PHP-Dateien mit funktionalem Code aufrufen können.
Muss mich also zuerst noch mit dem Event-Dispatcher beschäftigen und gucken, dass ich das von den <HOOK>'s entsprechend umgestellt kriege.
Meine Hoffnung ist ja, dass ich dann im "objektorientierte Kontext des Bootstrappers" auch die entsprechenden Funktionen/ Methoden (u.a. die aus deinen Beispielen) verwenden kann.

Gibt ja nichts Unbefriedigenderes als wenn man den Weg eigentlich schon kennt, und trotzdem nicht ans Ziel kommt, nur weil man kurz vor Schluss die nötigen Anpassungen nicht hinkriegt.

Aber wie gesagt, ich gebe (zumindest noch) nicht auf, aber ich habe aktuell noch eine Reihe anderer Baustellen im Shop, die momentan wichtiger sind.

Nochmals besten Dank für deine Hilfe und Unterstützung.

Gruß
Gunther
 
Zuletzt bearbeitet:
Ähnliche Themen
Titel Forum Antworten Datum
Neu Eigene Seite sichern Allgemeine Fragen zu JTL-Shop 1
Neu Eigene Felder Checkbox Inhalt bzw. Text bei Mouseover anzeigen JTL-Wawi - Ideen, Lob und Kritik 0
Neu Eigene Seiten mit Plugin erstellen Technische Fragen zu Plugins und Templates 0
Neu Eigene Felder Lieferschein User helfen Usern - Fragen zu JTL-Wawi 0
Neu Eigene Felder (Kunde) in csv-Datei per Ausgabe (Auftrag oder Lieferschein) Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Eigene Felder des Auftrages in der Druckvorlage Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Eigene Felder für Ebay-Listings verwenden JTL-Wawi 1.8 0
Neu Eigene Felder im Verkauf als Spalten anzeigen User helfen Usern - Fragen zu JTL-Wawi 4
Eigene Felder in alte Vorlagen JTL-Wawi 1.8 5
In Diskussion eigene CustomWorkflows anlegen JTL-Workflows - Ideen, Lob und Kritik 1
Neu Artikel - Sprachen - Alle eigene SEO URL? Smalltalk 1
Neu Barcode Anpassung in Artikeletikett anhand Eigene Felder Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Neu Eigene Übersicht Artikel - Zulaufsübersicht - Stückliste Eigene Übersichten in der JTL-Wawi 0
Neu Eigene Übersichten, Artikelhistorie Eigene Übersichten in der JTL-Wawi 1
Neu Sind eigene Felder im Artikel in einer neueren Wawi-Version von Anfang an sichtbar? User helfen Usern - Fragen zu JTL-Wawi 8
Eigene Auswertung JTL-Wawi 1.8 1
Neu Eigene Seiten Priority in der Sitemap ändern Allgemeine Fragen zu JTL-Shop 5
Neu Wie importiere ich die Zahlungs-ID für meine eigene benutzerdefinierte Zahlung, wie es andere Anbieter wie Paypal und Molli Payments in Shopware 6? Onlineshop-Anbindung 0
Neu Eigene Übersicht im Verkauf zu einem ausgewähltem Auftrag: Kundenattribut Anmerkungen Eigene Übersichten in der JTL-Wawi 4
Neu Weiße Seite nach Update Shop 5.1.5. auf 5.2.4 Installation / Updates von JTL-Shop 24
Neu Menüleiste wird plötzlich in der Mitte von der Seite angezeigt Allgemeine Fragen zu JTL-Shop 0
Neu Vorlagen: Formel um Textfeld nur auf der letzten Seite der Rechnung darzustellen Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Neu Suche Seite 2 gibt falsche URL aus JTL-Shop - Fehler und Bugs 4
Neu wenn abweichende Adresse dann nur weiße Seite? JTL-Shop - Fehler und Bugs 7
Neu Alle Artikel auf einer Seite im Shop anzeigen Allgemeine Fragen zu JTL-Shop 2
Neu Subdomain für eine Seite erstellen Allgemeine Fragen zu JTL-Shop 0
Neu Nach Import von Kundendaten aus SW5 Umleitung nach Login und weiße Seite JTL-Shop - Fehler und Bugs 5
Neu OnPage Compaser Seite wird nicht angezeigt Allgemeine Fragen zu JTL-Shop 2
JTL WaWi 1.7.13.1 - Pickliste, alle Artikel auf eine Seite JTL-Wawi 1.7 1

Ähnliche Themen