Frage: submenu() einer bestimmten Seite zeigen

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

Re: Frage: submenu() einer bestimmten Seite zeigen

Post by olape » Wed Aug 19, 2020 8:18 am

frase wrote:
Wed Aug 19, 2020 6:43 am
Falls es keine News gibt, dann die <h3> gar nicht anzeigen und der Bereich bleibt leer?
Teste mal!

Code: Select all

$sub_menu_of = submenuof('Templates');
if ($sub_menu_of != '') {
echo '<h3>' . $tx['template']['text1'] . '</h3>';
echo $sub_menu_of;
}
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

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

Re: Frage: submenu() einer bestimmten Seite zeigen

Post by frase » Wed Aug 19, 2020 8:31 am

olape wrote:
Wed Aug 19, 2020 8:18 am
Teste mal!
Boing!
Da entwickelt sich ja ein kleines Christoffelchen :D

Das funktioniert - aber nur, wenn ich die letzte Zeile weglasse (echo $sub_menu_of;).
Denn sonst gibt er das Menü auf den anderen Seiten doppelt aus.
Super. Daaanke!

olape
Posts: 2731
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Frage: submenu() einer bestimmten Seite zeigen

Post by olape » Wed Aug 19, 2020 8:38 am

frase wrote:
Wed Aug 19, 2020 8:31 am
Da entwickelt sich ja ein kleines Christoffelchen
Davon sind wir noch weit weg.
frase wrote:
Wed Aug 19, 2020 8:31 am
Das funktioniert - aber nur, wenn ich die letzte Zeile weglasse (echo $sub_menu_of;).
Denn sonst gibt er das Menü auf den anderen Seiten doppelt aus.
Ja, den alten Eintrag <?=submenuof('Templates')?> hättest du ganz weglassen können/müssen.
Sonst rufst du die Funktion zwei Mal auf. Das wird zwar nicht so viel Zeit beanspruchen und Last erzeugen, aber muss ja nicht sein.
Könnte höchstens ein, das du die Zeile echo $sub_menu_of; noch um <nav>..</nav> ergänzen musst.
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

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

Re: Frage: submenu() einer bestimmten Seite zeigen

Post by frase » Wed Aug 19, 2020 8:47 am

olape wrote:
Wed Aug 19, 2020 8:38 am
Ja, den alten Eintrag <?=submenuof('Templates')?> hättest du ganz weglassen können/müssen.
Ich habe in einer Newsbox im Content den Aufruf {{{submenuof('News')}}}.
Deshalb musste ich echo $sub_menu_of; streichen.
Ich bin sehr begeistert.

Und jetzt, da ich das hier schreibe, bemerke ich, dass ich ja dort auch eine Überschrift davor hätte setzten können - ich Dummer ich.
Aber, gut. So erspart man dem News-Tipper etwas Tipp-Arbeit ;-)

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Frage: submenu() einer bestimmten Seite zeigen

Post by cmb » Wed Aug 19, 2020 9:56 pm

frase wrote:
Wed Aug 19, 2020 3:49 am
Mein lieber Christoph. Du hast wieder mal den Vogel abgeschossen!
Oh, das wollte ich nicht. Tut mir leid um das arme Tier. ;)
olape wrote:
Wed Aug 19, 2020 4:48 am
Christoph weiß die vorhandenen Dinge einzusetzen. Da kann ich leider nicht mit :(
Ist zwar nicht richtig gut, aber doch hilfreich (ich schaue immer mal wieder rein): https://dev-doc.cmsimple-xh.org/

Und in diesem Fall: wenn man Code schreibt, der $h, $l, $u auf nicht triviale Weise verwendet, dann sollte man die Verwendung von XH\Pages in Erwägung ziehen. Die API habe ich zwar ziemlich vergeigt, aber für viele Fälle immer noch um einiges einfacher als direkt mit diesen globalen Variablen zu arbeiten.
frase wrote:
Wed Aug 19, 2020 8:47 am
Und jetzt, da ich das hier schreibe, bemerke ich, dass ich ja dort auch eine Überschrift davor hätte setzten können - ich Dummer ich.
Aber, gut. So erspart man dem News-Tipper etwas Tipp-Arbeit
Du könntest die Überschrift auch von der Funktion generieren lassen, etwa:

Code: Select all

<?php
function submenuof($heading)
{
    global $tx;

    $pages = new XH\Pages;

    $newspage = $pages->pageWithHeading($heading);
    $indexes = $pages->children($newspage);

    return '<h3>' . $tx['template']['text1'] . '</h3>'
        . li($indexes, 'submenu');
}
Das macht submenu() ja auch so. Und bei Bedarf analog zu submenu() einen $html Parameter unterstützen (in der Art "<h3>%s</h3>").
Christoph M. Becker – Plugins for CMSimple_XH

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

Re: Frage: submenu() einer bestimmten Seite zeigen

Post by frase » Thu Aug 20, 2020 1:21 am

cmb wrote:
Wed Aug 19, 2020 9:56 pm
Du könntest die Überschrift auch von der Funktion generieren lassen, etwa:
Gut zu wissen, wie das gehen könnte.
Olafs letzter Code-Vorschlag zeigt aber die <h3> eben nur an, wenn es tatsächlich News (-Unterseiten) gibt.
Im Moment bin ich mit der Lösung sehr zufrieden und werde es erstmal so lassen.
Es ist nicht wirklich robust. Denn: was passiert, wenn die News mal nicht mehr in allen 3 Sprachen "News" heißen sollten?
Dann wird man wohl doch auf ein News-System zurückgreifen müssen.

olape
Posts: 2731
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Frage: submenu() einer bestimmten Seite zeigen

Post by olape » Thu Aug 20, 2020 4:33 am

frase wrote:
Thu Aug 20, 2020 1:21 am
Denn: was passiert, wenn die News mal nicht mehr in allen 3 Sprachen "News" heißen sollten?
Dann könnte man den ganzen Aufruf der Funktion sprachabhängig machen.
Etwa so:

Code: Select all

<?php
If ($sl == ´dé)  {
   echo submenuof('Templates');
} elseif ($sl == ˋenˋ {
    ....
Aber hattest du nicht geschrieben, du hast den Aufruf in einer Newsbox?
Da kannst du doch eh für jede Sprache einen anderen Aufruf machen.
Und den Aufruf der Überschrift im Template abhängig nach Sprachen.
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

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

Re: Frage: submenu() einer bestimmten Seite zeigen

Post by frase » Thu Aug 20, 2020 4:55 am

olape wrote:
Thu Aug 20, 2020 4:33 am
Dann könnte man den ganzen Aufruf der Funktion sprachabhängig machen.
Etwa so:
Ach Quatsch :oops:
Das funktioniert ja jetzt schon sprachabhängig.
Das hatte ich nicht bedacht.
Im Content steht momentan in allen drei Sprachen der Aufruf

Code: Select all

{{{submenuof('News')}}}
Das kann man ja entsprechend ändern, falls es mal in Deutsch "Neuigkeiten" oder so heißen sollte.
Und die h3 kommt sowieso aus der Sprachdatei.
Das sollte also jetzt schon alles passen.

Post Reply