Neues "MultiOnePage" - Plugin

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
olape
Posts: 1306
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Neues "MultiOnePage" - Plugin

Post by olape » Tue Sep 08, 2020 2:42 pm

frase wrote:
Tue Sep 08, 2020 2:10 pm
Der Weg ist erstmal geebnet - dank Olaf.
Ich verstehe hier zwar immer nur Bahnhof, da noch nie mit Onepager hantiert.
Aber du hast in der Abfrage die Klammern verändert, so ergibt das einen ganz anderen Sinn.
Aber, wenn es funktioniert.

frase
Posts: 3559
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Neues "MultiOnePage" - Plugin

Post by frase » Tue Sep 08, 2020 2:53 pm

olape wrote:
Tue Sep 08, 2020 2:42 pm
Aber, wenn es funktioniert.
Das tut es (zumindest im Moment).
Vielleicht wird diese Manipulation ja doch noch überflüssig?
Für ein besseres Verständnis müsstet ihr eigentlich sehen, was ich da treibe. Aber das dauert eben noch 'ne Weile. Is noch nicht zeigbar.

cmb
Posts: 13404
Joined: Tue Jun 21, 2011 11:04 am
Location: Mü-Sa, RLP, DE
Contact:

Re: Neues "MultiOnePage" - Plugin

Post by cmb » Tue Sep 08, 2020 4:37 pm

Holger wrote:
Tue Sep 08, 2020 1:40 pm
frase wrote:
Tue Sep 08, 2020 1:36 pm
Hm, ich glaube doch.
Stimmt. Eben nachgesehen. ... und nix kapiert :mrgreen: . Sicher, dass da z.B. class="onepage_page" mit in der Ausgabe ist?
Ich glaube nicht. Aber die speziellen Seiten, die CMSimple_XH selbst "anlegt", dürften für echte Onepager auch wenig sinnvoll sein. :)
Christoph M. Becker – Plugins for CMSimple_XH

frase
Posts: 3559
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Neues "MultiOnePage" - Plugin

Post by frase » Tue Sep 08, 2020 4:43 pm

cmb wrote:
Tue Sep 08, 2020 4:37 pm
Ich glaube nicht. Aber die speziellen Seiten, die CMSimple_XH selbst "anlegt", dürften für echte Onepager auch wenig sinnvoll sein. :)
Ja stimmt, und das schreibst du ja auch in der OnePage-Hilfe.
Aber zumindest auf der Seite "Logout" die für die meisten User nicht verzichtbar ist - ist das manchmal, unter bestimmten Umständen, na sagen wir mal, ungünstig.

Bei einem MultiOnePager sieht das aber alles anders aus.

frase
Posts: 3559
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Neues "MultiOnePage" - Plugin

Post by frase » Wed Sep 09, 2020 6:05 am

@Holger
Wir hatten uns hier vor einiger Zeit viele Gedanken zum Top-Link gemacht.
Herausgekommen ist deine geniale Idee, den Button mit zwei Parametern zu versehen, Linkziel und Bild. Auch "scrollTo" innerhalb einer Seite funktioniert.
Das ist alles richtig gut!

Jetzt aber, stehe ich vor einem Problem.
Da ich nun mal die irrwitzige Idee hatte, mein aktuelles Template in einigen Punkten konfigurierbar zu machen, komme ich mit dem TopLink nicht weiter. Im Moment habe ich ein kleines SVG im Einsatz.
Eine der Konfigurations-Optionen ist die Veränderung der Akzentfarbe. Wird zum Beispiel "red" gewählt, werden viele Elemente rot gefärbt. Z.B.: h1-Überschriften, <hr>s, current-Links im Menü usw. Der TopLink soll also auch eingefärbt werden können.
Das SVG kann ich natürlich so nicht umfärben (wenn es per src aufgerufen wird).
Nach einigem Überlegen bin ich zum Schluss gekommen, dass ich nun doch wieder gerne ein FA-Icon als TopLink hätte. Dieses könnte man auch dynamisch einfärben.
Mir ist da einfach nichts anderes als FA eingefallen (Schande über mich).
Ich hatte zwischenzeitlich auch schon einen händisch gesetzten TopLink (Fa, scrollTo), aber damit verliere ich ja die ganzen Vorteile des Buttons aus dem Plugin.
Wie stehen die Chancen, einen "umfärbbaren" TopLink-Button zu erhalten?

Holger
Site Admin
Posts: 3237
Joined: Mon May 19, 2008 7:10 pm
Location: Hessen, Germany
Contact:

Re: Neues "MultiOnePage" - Plugin

Post by Holger » Wed Sep 09, 2020 6:14 am

frase wrote:
Wed Sep 09, 2020 6:05 am
Wie stehen die Chancen, einen "umfärbbaren" TopLink-Button zu erhalten?
Sehr gut :) , denn du kannst dir ja eine geänderte Methode für den Toplink erstellen, genau wie für getContent(). Einfach eine Kopie von hier https://github.com/TN03/multionepage_xh ... r.php#L326 mit den gewünschten Änderungen machen usw.

frase
Posts: 3559
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Neues "MultiOnePage" - Plugin

Post by frase » Wed Sep 09, 2020 6:30 am

Holger wrote:
Wed Sep 09, 2020 6:14 am
... denn du kannst dir ja eine geänderte Methode für den Toplink erstellen, genau wie für getContent().
Hm, ähm, ja - wobei deine Formulierung "du kannst dir ja" außerordentlich optimistisch gewählt ist ;-)

Na gut, dann mach' ich mich mal drüber her.

frase
Posts: 3559
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Neues "MultiOnePage" - Plugin

Post by frase » Wed Sep 09, 2020 8:03 am

frase wrote:
Wed Sep 09, 2020 6:30 am
Na gut, dann mach' ich mich mal drüber her.
Wie erwartet: Nixe Schanze.
Den Controller (dort direkt) kann ich mir zurechtbasteln.
Das Ganze aber ins Temlpate zu setzen und an den Controller zurückgeben - keine Ahnung wie ich das machen soll.

Meine aktuelle Änderung direkt im Controller hier:

Code: Select all

//        return '<a id="onepage_toplink" href="#' . $id . '">'
//                . tag('img src="' . $image . '" alt="' . $alt . '"')
//                . '</a>';
        return '<a id="onepage_toplink" href="#' . $id . '" title="' . $alt . '"><span class="fa fa-angle-up"></span></a>';
Das funktioniert zwar, kann aber so nicht bleiben.

Holger
Site Admin
Posts: 3237
Joined: Mon May 19, 2008 7:10 pm
Location: Hessen, Germany
Contact:

Re: Neues "MultiOnePage" - Plugin

Post by Holger » Wed Sep 09, 2020 8:38 am

frase wrote:
Wed Sep 09, 2020 8:03 am
Wie erwartet: Nixe Schanze.
Den Controller (dort direkt) kann ich mir zurechtbasteln.
Das Ganze aber ins Temlpate zu setzen und an den Controller zurückgeben - keine Ahnung wie ich das machen soll.
Also, in deiner geänderten Controller-Klasse fügst du die angepasste renderTopLink($id, $imgfile) - Methode komplett vor der schließenden } ein.

Dann noch die Funktion für den Aufruf im Template:

Code: Select all

function Tplname_toplink($id = '', $imgfile = '') {
    return TplnameController::renderTopLink($id, $imgfile);
}

frase
Posts: 3559
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Neues "MultiOnePage" - Plugin

Post by frase » Wed Sep 09, 2020 9:31 am

Mein aktueller Code im Template (oben):

Code: Select all

class fhsOP3Controller extends Multionepage\Controller {
    
    public static function getContent($pages) {
        global $s, $o, $c, $edit, $plugin_cf, $pd_router;

        if (!($edit && XH_ADM) && $s > -1) {
            $contents = '';
            foreach ($pages as $i) {
                if ($plugin_cf['multionepage']['url_numeric']) {
                    $url = $i;
                } else {
                    $url = Multionepage\Urlify::makeUniqueUrl($i);
                }
                $pageData = $pd_router->find_page($i);
                $content = self::replaceAlternativeHeading($c[$i], $pageData);
                if (XH_ADM && !$edit) {
                    $content = self::renderEditlink($i) . $content;
                }
                $contents .= sprintf('
<section id="%s" class="onepage_page %s">
<div class="onepage_page-wrapper">%s
</div>
</section>
',
                    $url,
                    $pageData['multionepage_class'],
                    sprintf( '
<div class="%s">%s</div>',
                        $plugin_cf['multionepage']['inner_class'],
                        $content
                    )
                );
            }
            $o .= preg_replace('/#CMSimple (.*?)#/is', '', $contents);
        }
        return preg_replace('/<!--XH_ml[1-9]:.*?-->/is', '', $o);
    }

    public static function renderTopLink($id, $imgfile) {
        global $pth, $plugin_tx;

        if ($id != '' && $id[0] == '#') {
            $id = substr($id, 1);
        }
        $image = $pth['folder']['templateimages'] . $imgfile;
        if (!file_exists($image) || $imgfile == '') {
            $image = $pth['folder']['plugins'] . 'multionepage/images/up.png';
        }
        $alt = $plugin_tx['multionepage']['alt_toplink'];
        return '<a id="onepage_toplink" href="#' . $id . '" title="' . $alt . '"><span class="fa fa-angle-up"></span></a>';
    }
}

function fhsOP3_multionepage_content() {
    global $bjs, $edit, $l, $u, $s, $sn, $pd_router;

    if ($s > -1 && $l[$s] > 1 && (!XH_ADM || (XH_ADM && !$edit))) {
        $pageData = $pd_router->find_page($s);
        if ($pageData['multionepage_access']) {
            $bjs .= '<script>jQuery(".onepage_menu").hide();</script>';
            //return Multionepage\Controller::getContent(array($s));
            return fhsOP3Controller::getContent(array($s));
        }
        $t = Multionepage\Controller::getRoot($s);
        if (hide($t)) {
            return shead(404);
        } else {
            $path = $sn . '?' . $u[$t];
            header("Location: $path", true, 301);
            exit;
        }
    } else {
        $pages = Multionepage\Controller::getSubPages();
        return fhsOP3Controller::getContent($pages);
    }
}

function fhsOP3_toplink($id = '', $imgfile = '') {
    return fhsOP3Controller::renderTopLink($id, $imgfile);
}
Der Link-Aufruf im Template (unten) lautet immer noch:

Code: Select all

<div class="topLink"><?=multionepage_toplink('','to-top.svg')?></div>
Und: Es funktioniert nicht.
Es wird weiterhin das SVG verwendet.
Muss der Aufruf geändert werden? Oder steht der Code (oben) an der falschen Stelle? Oder ...?

Post Reply