Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

If you've problems with unsupported - non official ;-) - functionalities use this forum please.
User avatar
Uwe367
Posts: 1206
Joined: Sat 15. Sep 2007, 07:19
Location: Koblenz

Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Uwe367 »

Navchdem ich nun schoin mehrmals sah daß die verschiedenen Navigationsscripte im Wiki, die Knut einst schrieb, alle nicht mit PHP 7 kompatibel sind würde ich mich freuen wenn sich das mal jemand anschauen könnte.
Die Funktion preg_replace sowie der Modifiere werden von PHP 7 nicht mehr unterstützt, stattdessen soll perg_replace_callback verwendet werden was ich auch versuchsweise machte.
Wenns denn auch so einfach wäre, aber Pustekuchen.
Nehme ich den Modifier raus und setzte perg_replace_callback an die entsprechende Stelle, so kommt eine Fehlermeldung:
Warning: preg_replace_callback(): Requires argument 2, 'buildNavi_vert("$1","0","$2"-1);', to be a valid callback in
Und schon stehe ich auf dem Schlauch.
Der Code, aus dem der Fehler kommt ist dieser:

Code: Select all

$content["all"] = preg_replace_callback('/\{NAV_VERT_FO:(.*?),(.*?)\}/','buildNavi_vert("$1","0","$2"-1);', $content["all"]);
Im Original sieht die Zeile so aus:

Code: Select all

$content["all"] = preg_replace('/\{NAV_VERT_FO:(.*?),(.*?)\}/e','buildNavi_vert("$1","0","$2"-1);', $content["all"]);
Für jemanden, der sich damit auskennt sicher ein leichtes Spiel und daher frage ich mal ganz freundlich unseren Oliver ob er sich das mal anschauen und vielleicht richten könnte :)
Eines der Scripte, die den Fehler verursachen liegt hier: https://wiki.phpwcms.org/doku.php/deuts ... v_horiz_dd

Die anderen Scripte werden ebenso den gleichen Fehler auslösen, aber ich traue mir zu diese nach einem vorhandenen Beispiel selbst zu korrigieren wenn ich ein Beispiel dafür bekomme.

Oliver... könntest du dir das mal anschauen und ein Beispiel dafür geben wie man das in Ordnung bringen kann?
Wäre wirklich toll und für viele, die diese Scripte noch nutzen, sehr hilfreich.
Vielen Dank.
User avatar
Oliver Georgi
Site Admin
Posts: 9888
Joined: Fri 3. Oct 2003, 22:22
Contact:

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Oliver Georgi »

Ich habe neulich erst die {NAV_HORIZ_DD} für einen Kunden umgebaut. Das ist ja die gleiche Geschichte. Die habe ich noch weiter aufgeräumt. Aber in der Hauptsache geht es um das Einführen einer Wrapper-Funktion.

Code: Select all

if(strpos($content["all"], '{NAV_VERT_FO') !== false) {
    $content["all"] = str_replace('{NAV_VERT_FO}', '{NAV_VERT_FO:0,100}', $content["all"]);
    $content["all"] = preg_replace_callback('/\{NAV_VERT_FO:(.*?)\}/i', 'buildNavi_vert_wrapper', $content["all"]);
}

function buildNavi_vert_wrapper($matches) {

    $start = 0;
    $counter = 0;
    $depth = 99;

    if (!isset($matches[1]) || empty($matches[1])) {
        return buildNavi_vert($start, $counter, $depth);
    }

    $value = explode(',', trim($matches[1]));

    $start = intval(trim($value[0]));
    if (isset($value[1])) {
        $depth = intval(trim($value[1]));
        if ($depth) {
            $depth = $depth - 1;
        }
    }

    return buildNavi_vert($start, $counter, $depth);
}
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон
User avatar
Uwe367
Posts: 1206
Joined: Sat 15. Sep 2007, 07:19
Location: Koblenz

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Uwe367 »

Danke Oliver :)
So wie ich das sehe müßte das ja eigentlich auf alle anderen Scripte, die eine ähnliche Navi erzeugen, anwendbar sein oder?
User avatar
Oliver Georgi
Site Admin
Posts: 9888
Joined: Fri 3. Oct 2003, 22:22
Contact:

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Oliver Georgi »

Ja, das Prinzip ist immer identisch.
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон
User avatar
Uwe367
Posts: 1206
Joined: Sat 15. Sep 2007, 07:19
Location: Koblenz

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Uwe367 »

Ok, Danke für den Hinweis.
Dann werde ich in den nächsten Tagen mal versuchen die Scripte aus dem Wiki enstsprechend zu bearbeiten so daß diese wieder lauffähig sind.
fhadmin
Posts: 2
Joined: Mon 12. Nov 2018, 21:40

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by fhadmin »

Oliver Georgi wrote: Sun 18. Nov 2018, 08:45 Ich habe neulich erst die {NAV_HORIZ_DD} für einen Kunden umgebaut. Das ist ja die gleiche Geschichte. Die habe ich noch weiter aufgeräumt. Aber in der Hauptsache geht es um das Einführen einer Wrapper-Funktion.

Code: Select all

if(strpos($content["all"], '{NAV_HORIZ_DD') !== false) {
    $content["all"] = str_replace('{NAV_HORIZ_DD}', '{NAV_HORIZ_DD:0,100}', $content["all"]);
    $content["all"] = preg_replace_callback('/\{NAV_VERT_FO:(.*?)\}/i', 'buildNavi_vert_wrapper', $content["all"]);
}

function buildNavi_vert_wrapper($matches) {

    $start = 0;
    $counter = 0;
    $depth = 99;

    if (!isset($matches[1]) || empty($matches[1])) {
        return buildNavi_vert($start, $counter, $depth);
    }

    $value = explode(',', trim($matches[1]));

    $start = intval(trim($value[0]));
    if (isset($value[1])) {
        $depth = intval(trim($value[1]));
        if ($depth) {
            $depth = $depth - 1;
        }
    }

    return buildNavi_vert($start, $counter, $depth);
}
Ich habe diesen Code in folgendem Script entsprechend eingebunden, doch das Horizontale Menü funkrioniert nicht.

horizontal drop-down with ID output -> NAVI HORIZONTAL DROP-DOWN (Version 1.01 04.09.2010 KH 25.07.07 Oliver Georgi )

Zu sehen hier: Problem: {NAV_HORIZ_DD:0,3} wird nicht angezeigt
http://new.schwarzwaldverein-rheinfelden.de/
Last edited by fhadmin on Mon 19. Nov 2018, 10:31, edited 1 time in total.
User avatar
Oliver Georgi
Site Admin
Posts: 9888
Joined: Fri 3. Oct 2003, 22:22
Contact:

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Oliver Georgi »

Genau schauen, das ist nur das Prinzip! Braucht Anpassung.

Da habe ich einiges gemixt in dem Beitrag. Habe es jetzt für die vertikale gefixt. Aber ich habe dieses so nicht getestet.

Habe hier nur das horizontale Script gefixt vorliegen. Das ist auch zusätzlich fehlerbereinigt, sodass es keinerlei Errormeldungen mehr wirft.
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон
Old Boy
Posts: 1203
Joined: Fri 23. Nov 2012, 13:52

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Old Boy »

Werden denn solche überarbeiteten RT-Scrips, die dann auch in Zukunft lauffähig sein werden, in das Standardpaket einfließen?
User avatar
Uwe367
Posts: 1206
Joined: Sat 15. Sep 2007, 07:19
Location: Koblenz

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Uwe367 »

Ich denke das werden externe Scripte bleiben oder aber Oliver nimmt sie, mit etwas Glück :wink: , ins Corepaket auf, überarbeitet sie und schiebt sie in Verzeichnis frontend_render/disabled bzw. frontend_init/disabled. Wäre mit Sicherheit die beste Lösung, aber ich gehe nicht davon aus daß das passiert.
User avatar
Oliver Georgi
Site Admin
Posts: 9888
Joined: Fri 3. Oct 2003, 22:22
Contact:

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Oliver Georgi »

diese Sachen fließen vermutlich nicht ein
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон
User avatar
Uwe367
Posts: 1206
Joined: Sat 15. Sep 2007, 07:19
Location: Koblenz

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Uwe367 »

Oliver Georgi wrote: Tue 25. Dec 2018, 17:49 diese Sachen fließen vermutlich nicht ein
Genau das dachte ich mir. Also werde ich versuchen das ganze entsprechend anzupassen und hoffe auf Hilfe falls ich es nicht hin bekomme.
User avatar
Uwe367
Posts: 1206
Joined: Sat 15. Sep 2007, 07:19
Location: Koblenz

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Uwe367 »

Wobei ich auf eine Lösung aufmerksam gemacht wurde, die unabhängig von einer PHP Version läuft. Nämlich das ganze nur rein auf NAV_LIST_UL basierend mit den Parametern, die das System im Core bietet und entsrechendes Javascript und CSS dazu. Wäre wohl zukunftsweisender als PHP Scripte die nach einer gewissen Zeit wieder angepasst werden müßten.

Bzw. um das ganze noch einfacher zu machen.. mit CSS Transitions arbeiten. Wären das Alternativen die man brauchbar umsetzen könnte?
Ähnlich diesem Beispiel: https://www.newmediacampaigns.com/blog/ ... ons-part-2
User avatar
Oliver Georgi
Site Admin
Posts: 9888
Joined: Fri 3. Oct 2003, 22:22
Contact:

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Oliver Georgi »

Transitions sind nur eine zusätzliche Option. Ich nutze häufiger dann animate.css.
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон
User avatar
Uwe367
Posts: 1206
Joined: Sat 15. Sep 2007, 07:19
Location: Koblenz

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Uwe367 »

Oliver Georgi wrote: Thu 27. Dec 2018, 07:16 Transitions sind nur eine zusätzliche Option. Ich nutze häufiger dann animate.css.
Ok... Danke für den Hinweis.
Aber um nochmal auf die JS-Nutzung in Verbindung mit NAV_LIST_UL zurückzukommen. Wäre das vielleicht sinnvoller als PHP Script?
Der einfache User mag mit JS noch einiges hinbekommen, aber bei PHP hörts bei vielen auf da man dazu mehr oder weniger den Core des Systems kennen muß bzw. wie das System arbeitet. Mit JS kann ich mir die Klassen im Quellcode suchen und gezielt darauf triggern.
User avatar
Oliver Georgi
Site Admin
Posts: 9888
Joined: Fri 3. Oct 2003, 22:22
Contact:

Re: Navi Script {NAV_VERT_FO:ID,Depth} nicht mit PHP 7 kompatibel

Post by Oliver Georgi »

mit der NAV_LIST_UL ist es eigentlich nicht nötig, zusätzlich zu programmieren. Dieses Teil kann sehr vieles von Haus aus. Im Endeffekt ist das Thema Navigation fast erschöpft, seit Mobile first greift. Hamburgermenü und fertig.
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон
Post Reply