Onepage_XH: (s)doc(s)

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
Post Reply
frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Onepage_XH: (s)doc(s)

Post by frase » Fri May 03, 2019 7:23 am

Hi,
ich habe in einem Onepager Seiten mit Unterseiten.
Ziel: Nicht nur Level1*-Seiten sollen per Menü anspringbar sein, sondern auch Level2* und Level3*.
Aktive Menüpunkte sollen hervorgehoben sein.

Issue 41 spricht ja schon einen Teil des Problems an - aber es gibt noch andere Probleme.

Bei Klick auf einen Level1*-Menüpunkt wird dorthin gescrollt und <li> erhält die Klasse "sdoc".
Bei Klick auf einen Level2*-Menüpunkt (oder Level3*) wird richtig gescrollt, <li> wird aber nicht gekennzeichnet.

Beim Scrollen werden ebenfalls immer nur die erreichten Level1*-Menüpunkte mit "sdoc" hervorgehoben (siehe Issue).

Ein weiteres Problem ist, dass "sdoc" immer auch auf alle folgenden Untermenüpunkte wirkt - egal, ob man "li.sdoc" oder "li.sdoc a" formatiert.

Ich habe mit der onepage.min.js aus Version 1.0beta3 und mit der Version aus dem Master getestet.

Gibt es irgendeine Abhilfe?

---
* hx geändert zu Level
Last edited by frase on Sun May 05, 2019 8:54 am, edited 1 time in total.

lck
Posts: 2955
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Onepage_XH: (s)doc(s)

Post by lck » Fri May 03, 2019 11:02 am

frase wrote:
Fri May 03, 2019 7:23 am
Ich habe mit der onepage.min.js aus Version 1.0beta3 und mit der Version aus dem Master getestet.

Gibt es irgendeine Abhilfe?
Ein anderes JS-Skript verwenden, das dies kann ;) . Weiß aber momentan auch keins, eventuell geht's mit Holgers jQuery-Version?

Aber eventuell reicht ja schon dieser kleine Code von Christoph aus, in Kombination mit Onepage_1.0beta3.
Siehe: viewtopic.php?f=16&t=14532&start=70

Code: Select all

function adjustMenuClasses() {
	$(".lck_nav .onepage_menu li").removeClass("iamselected");
	if (location.hash.length > 1) {
		$(".lck_nav .onepage_menu li a[href$='" + location.hash.substr(1) + "']").parent("li").addClass("iamselected");
	}
}
$(adjustMenuClasses);
$(window).on("hashchange", adjustMenuClasses);
.lck_nav ersetzen mit deiner Klasse oder ID und in der template.htm vor </body> als <script> einfügen.
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

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

Re: Onepage_XH: (s)doc(s)

Post by frase » Fri May 03, 2019 11:35 am

lck wrote:
Fri May 03, 2019 11:02 am
Aber eventuell reicht ja schon dieser kleine Code von Christoph aus, ...
Danke Ludwig.
Funktioniert nur, wenn man das onepage.js nicht verwendet.
Dann scrollt aber auch nichts mehr.
Mit Holgers JS klappt es auch nicht - es sind eben keine Level2-Seiten vorgesehen.

Ich habe versucht, die Diskussion nochmal Schritt für Schritt nachzuvollziehen - aber da verliert man den Überblick. Zu viel Information ... :roll:

Vielleicht muss ich in Christophs original-Script den Part mit "doc : sdoc" entfernen und das Snippet einfügen. Mal sehen.

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

Re: Onepage_XH: (s)doc(s)

Post by frase » Fri May 03, 2019 11:47 am

frase wrote:
Fri May 03, 2019 11:35 am
Vielleicht muss ich in Christophs original-Script den Part mit "doc : sdoc" entfernen und das Snippet einfügen. Mal sehen.
Dann klappt es bei Klick - aber nicht während des Scrollens.

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

Re: Onepage_XH: (s)doc(s)

Post by cmb » Sun May 05, 2019 10:04 pm

Spät und kurz -- sorry!
frase wrote:
Fri May 03, 2019 7:23 am
ich habe in einem Onepager Seiten mit Unterseiten.
Onepage_XH ist eigentlich nicht für Sites mit mehreren Menüebenen gedacht (zumindest nicht primär).
frase wrote:
Fri May 03, 2019 7:23 am
Issue 41 spricht ja schon einen Teil des Problems an - aber es gibt noch andere Probleme.
Dieses Ticket betrifft eigentlich nur die Dokumentation, wo explizit erwähnt werden sollte, dass onepage.js bei Positionsänderungen die .(s)doc(s) neu vergibt.
frase wrote:
Fri May 03, 2019 7:23 am
Bei Klick auf einen Level2*-Menüpunkt (oder Level3*) wird richtig gescrollt, <li> wird aber nicht gekennzeichnet.

Beim Scrollen werden ebenfalls immer nur die erreichten Level1*-Menüpunkte mit "sdoc" hervorgehoben (siehe Issue).
Hast du eine Demo online?
Christoph M. Becker – Plugins for CMSimple_XH

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

Re: Onepage_XH: (s)doc(s)

Post by frase » Mon May 06, 2019 6:42 am

cmb wrote:
Sun May 05, 2019 10:04 pm
Onepage_XH ist eigentlich nicht für Sites mit mehreren Menüebenen gedacht (zumindest nicht primär).
Ja. Das war klar - und bis vor Kurzem hätte ich das auch jedem gesagt, der mich danach gefragt hätte.
Jetzt aber tauchte eben genau diese Frage auf, ein Menü mit Unterpunkten zu haben und dennoch sollte es ein Onepager sein
cmb wrote:
Sun May 05, 2019 10:04 pm
Hast du eine Demo online?
Nein.
Bisher ist alles nur Test und Vorgeplänkel.
Vielleicht mache ich noch eine Online-Demo - mal sehen.
Im Moment ist es so, dass ich nur mit dem XH-Standard-Content probiere.
Die Level2-Seiten haben ordnungsgemäß die richtige ID und die Klassen "onepage_page" und "onepage_page_inner".
Das Problem ist, dass beim Scrollen beim Erreichen eines L1-Menüpunktes dieser die Klasse "sdoc" erhält.
Egal, ob man "li.sdoc" oder "li.sdoc a" für eine Hervorhebung formatiert - die Untermenüpunkte erhalten die Klasse nicht.
Also: Ist eine L1-Seite im sichtbaren Bereich, wirkt auf alle entsprechenden Menüpunkte "sdoc".
Geht es weiter zu einem L2-Bereich, wird im Menü gar nichts mehr hervorgehoben - sehr ungünstig.

Ich strebe an, nur das Original-Onepage-Plugin zu benutzen. Das zugehörige JS funktioniert ja auch in diesem Fall gut - nur eben bei L2 (und evtl. L3) nicht. Möglicherweise wäre da nur eine kleine Änderung nötig. Mit deinem stark in Kurzschreibweise verfassten JS (aktueller master) komme ich einfach nicht zurecht :oops:

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

Re: Onepage_XH: (s)doc(s)

Post by Holger » Mon May 06, 2019 9:16 am

Hmm, jetzt kapiere ich erst, um was es hier geht :? ...
Du möchtest also in etwa ein Menü wie es anchorific.js bereitstellt?
frase wrote:
Mon May 06, 2019 6:42 am
Ich strebe an, nur das Original-Onepage-Plugin zu benutzen. Das zugehörige JS funktioniert ja auch in diesem Fall gut - nur eben bei L2 (und evtl. L3) nicht. Möglicherweise wäre da nur eine kleine Änderung nötig.
Wenn ich es richtig überblicke, ist das nicht mit einer kleinen Änderung möglich. Der Code schaut nur nach den <li>s der ersten Ebene. Um alle Menüebenen abzudecken, müsste er rekursiv alle erlaubten Ebenen durchlaufen und die Klasse(n) entsprechend setzen. Und vermutlich muss dann auch noch an anderen Stellen nachgebessert werden.

BTW: wenn ich es richtig überblicke, könntest Du dann auch gleich anchorific.js nehmen und onepage_toc() nur als Fallback für abgeschaltetes Javascript anbieten. Es ist für OnePage_XH ja angedacht, dass per Template eine eigene JS-Datei geliefert werden kann.

Ich meine auch mich zu erinnern, dass es eine ähnliche Lösung im Thread "h2Onepagers" bzw. beim Achorific_Pure - Template gab.

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

Re: Onepage_XH: (s)doc(s)

Post by frase » Mon May 06, 2019 9:27 am

Holger wrote:
Mon May 06, 2019 9:16 am
BTW: wenn ich es richtig überblicke, könntest Du dann auch gleich anchorific.js nehmen und onepage_toc() nur als Fallback für abgeschaltetes Javascript anbieten. Es ist für OnePage_XH ja angedacht, dass per Template eine eigene JS-Datei geliefert werden kann.
Au ja, das ginge vielleicht sogar wirklich!
Der Witz ist, dass ich die Sticky-Funktion aus anchorific schon da drin habe. Das Menü zu verwenden kam mir nicht in den Sinn, da es ja für Einzelseiten gemacht war. In diesem Fall ist es ja ein Onepager - also auch eine Einzelseite.
Super-Idee Holger!
Da muss ich mal etwas rumexperimentieren - und ja, das hauseigene Script kann man ja schon ausschalten.

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

Re: Onepage_XH: (s)doc(s)

Post by frase » Mon May 06, 2019 10:19 am

Zwischenbericht:
Das scheint zu funktionieren.
(Einige Umbauten sind nötig: Selectoren usw.)

Danke Holger!

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

Re: Onepage_XH: (s)doc(s)

Post by frase » Mon May 06, 2019 3:40 pm

@Holger
Hm, so ganz wie gewollt klappt es doch nicht - siehe Bild.

op-anchotific.png

Problem:
Ganz gleich, welchen Tag man für die Seiten nimmt (div, section, article usw.),
im Menü erhalten die Menüpunkte immer nur data-tag="1".
Woher soll anchorific auch wissen, dass es Level2 (oder höher) gibt.
Mein Selektor für die Überschriften lautet übrigens:

Code: Select all

headers: '.onepage_page h1'
,
H2 kann ich nicht dazunehmen, weil die einzelnen Seiten ja jeweils mit h1 beginnen und diverse Unter-Überschriften haben - die ich gar nicht anspringen will.

Somit funktioniert zwar alles (srollen, hervorheben), aber man kann im Menü nicht mehr eine Seite als Level2 kennzeichnen. :cry:
"Start" und "Start [deutsch]" sind nicht mehr zu unterscheiden.

---
Prinzipiell könnte man alles nur mit anchorific machen - ohne Onepage-Plugin.
Dann wird die Bearbeitung im Editor allerdings u.U. zur Geduldsprobe: ewiges Scrollen.

Wahrscheinlich wird ein Fall mit solch spezieller Anforderung nicht gerade häufig vorkommen.
Schön wäre es eben gewesen, wenn onepage.js auch noch Seiten auf Level2 (und 3) berücksichtigen könnte.
You do not have the required permissions to view the files attached to this post.

Post Reply