Kompletten Inhalt von content.htm ausgeben - OnePage

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
Post Reply
knollsen
Posts: 459
Joined: Wed Nov 06, 2013 2:28 pm

Re: Kompletten Inhalt von content.htm ausgeben - OnePage

Post by knollsen » Sat Feb 07, 2015 6:26 pm

Deine Idee mit dem optionalen # nehme ich gerne noch mit, und werde das für Onepage_XH so machen
Super!
Großes Lob erstmal das das mit Firefox noch gefixt wird und auch die links sauber rüber kommen.
... onepage_toplink() zum Seitenanfang scrollen. Bei top() müsste ein fehlender Parameter aber zu #TOP springen.
mmm - das macht ja eigentlich das, was ich im Script dargestellt habe!
Eine Warning, wenn top() ohne Parameter aufgerufen wird, sollte bei Variablen nicht passieren! Aber ich schau mir das mal an, wenn ich wieder am Rechner bin (wie du das meinst). if (!$idtop) sollte das eigentlich abfangen.

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

Re: Kompletten Inhalt von content.htm ausgeben - OnePage

Post by cmb » Sat Feb 07, 2015 6:47 pm

knollsen wrote:
Deine Idee mit dem optionalen # nehme ich gerne noch mit, und werde das für Onepage_XH so machen
Super!
Großes Lob erstmal das das mit Firefox noch gefixt wird und auch die links sauber rüber kommen.
Gefixt ist schon: https://github.com/cmb69/onepage_xh/issues/2 und https://github.com/cmb69/onepage_xh/issues/3. :)
knollsen wrote:
... onepage_toplink() zum Seitenanfang scrollen. Bei top() müsste ein fehlender Parameter aber zu #TOP springen.
mmm - das macht ja eigentlich das, was ich im Script dargestellt habe!
Für top() schon. Bei onepage_toplink() ohne Argument würde ich aber ganz nach oben scrollen, und auch kein Fragment in der URL anzeigen. Also genauso, wie wenn man die Seite normalerweise das erste mal aufruft.
knollsen wrote:Eine Warning, wenn top() ohne Parameter aufgerufen wird, sollte bei Variablen nicht passieren! Aber ich schau mir das mal an, wenn ich wieder am Rechner bin (wie du das meinst). if (!$idtop) sollte das eigentlich abfangen.
Die Warning wird von PHP immer generiert, wenn eine Funktion mit weniger Argumenten aufgerufen wird, als Parameter definiert wurden (außer es sind optionale Parameter, also mit Default-Wert). Bei JavaScript passiert das übrigens nicht, weil es keine Default-Parameter gibt, und man diese so emulieren kann.
Christoph M. Becker – Plugins for CMSimple_XH

knollsen
Posts: 459
Joined: Wed Nov 06, 2013 2:28 pm

Re: Kompletten Inhalt von content.htm ausgeben - OnePage

Post by knollsen » Sun Feb 08, 2015 4:09 pm

Gefixt ist schon....
Habs mir mal angeschaut und in Firefox funzt es aber dafür nicht im IE mehr. Da hast Du bestimmt in der protected function anchor($i, $x) auch das urldecode vergessen. Doch dann geht die Bearbeitung der Seite nicht mehr wenn man im Admin ist. Das Ziel ist ja im selben Template zu bleiben, statt ein anderes. Die Vorschau würde dann ja auch nur murks mitbringen.

Wofür steht eigentlich XH_hsc? Reicht denn nicht einfach urldecode($u[$i]) in der Controller.php?
- eigentlich würde ja sinnigerweise $i als id für den div reichen, da es ja eindeutig für jede Seite ist! (dann auch in der Li.php <a href="' . $sn . $char . $i . $x . '">) funzt in jeden Browser als das komplette Menü zu übergeben.

Lösung würde so aussehen:
in der Controller.php statt XH_hsc(urldecode($u[$i])) einfach $i zu nehmen und in der
Li.php

Code: Select all

protected function anchor($i, $x)
    {
        global $sn, $u, $cf, $edit;

        if (XH_ADM || $edit) {
        $char = '?';
        return isset($u[$i])
            ? '<a href="' . $sn . $char . $u[$i] . $x . '">'
            : '<a href="' . $sn . $char . $x . '">';
        }else{
        $char = '#';
        return isset($u[$i])
            ? '<a href="' . $sn . $char . $i . $x . '">'
            : '<a href="' . $sn . $char . $x . '">';
        }
    }
passt und funzt sogar im Admin mit dem selben Template. In der Vorschau kann man zwar nicht zu den Seiten springen, aber das ist ja bei der OnePage unrelevant!
für onepage_toplink macht man einfach <body id="body"... und statt #Top halt #Body
Wofür ich noch keine Zeit hatte, warum dann gewisse Plugins wie z.Bsp. Flexslider nicht funktionieren dafür aber im Admin-Bereich
Edit: letzteres hatte sich erledigt hatte vor echo head <?php flexslider_init();?> gesetzt - funzt auch!

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

Re: Kompletten Inhalt von content.htm ausgeben - OnePage

Post by cmb » Sun Feb 08, 2015 4:36 pm

knollsen wrote:Habs mir mal angeschaut und in Firefox funzt es aber dafür nicht im IE mehr. Da hast Du bestimmt in der protected function anchor($i, $x) auch das urldecode vergessen.
Nein, das habe ich nicht vergessen: :)
cmb wrote:Also: zunächst einmal ist es so, dass "Sonderzeichen" (Umlaute etc.) auch in einem URI Fragment urlkodiert werden müssen.
Und:
cmb wrote:Ich habe gerade festgestellt, dass die Navigation in IE 11 und Chrome 40 nach dem Fix funktioniert, wenn man die URL direkt in Adressleiste des Browsers eingibt. Beim Klicken auf einen Link, der die gleiche URL erzeugt, passiert aber nichts. :shock:
Das sieht mir sehr nach einem Browser-Fehlverhalten aus.
knollsen wrote:Wofür steht eigentlich XH_hsc? Reicht denn nicht einfach urldecode($u[$i]) in der Controller.php?
XH_hsc() ist im Prinzip htmlspecialchars(), was Zeichen für die Ausgabe im HTML maskiert. Das hat mit url(en|de)code() nichts zu tun.
knollsen wrote:eigentlich würde ja sinnigerweise $i als id für den div reichen, da es ja eindeutig für jede Seite ist!
Interessante Idee. Das hat dann aber abgesehen von wenig aussagekräftigen URLs v.a. das Problem, dass Deep-Links nicht mehr richtig passen, wenn Seiten ergänzt oder entfernt werden.
knollsen wrote:Lösung würde so aussehen:
[ code ]
Schau ich mir noch mal genauer an.
knollsen wrote:Wofür ich noch keine Zeit hatte, warum dann gewisse Plugins wie z.Bsp. Flexslider nicht funktionieren dafür aber im Admin-Bereich
Ich vermute, dass liegt an der Routine die alle URLs, die auf die selbe Seite verweisen smooth scollen lässt (da wird dann einfach das onclick Attribut entsprechend gesetzt). Da werde ich wohl nachbessern müssen -- schau ich mir aber erst noch genauer an.
Christoph M. Becker – Plugins for CMSimple_XH

knollsen
Posts: 459
Joined: Wed Nov 06, 2013 2:28 pm

Re: Kompletten Inhalt von content.htm ausgeben - OnePage

Post by knollsen » Sun Feb 08, 2015 6:13 pm

Ich habe gerade festgestellt, dass die Navigation in IE 11 und Chrome 40 nach dem Fix funktioniert ...
Mög sein, doch getestet wird immer eine Browserversion niedriger (bei mir), da ja gerade Firmen nicht gerade auf den aktuellen Stand sind. Kenn einige Firmen die noch IE8 / IE9 haben. da sollte das natürlich auch perfekt funktionieren. Der Privat-Anwender spielt für mich nicht so die große Rolle!
XH_hsc() ist im Prinzip htmlspecialchars(), was Zeichen für die Ausgabe im HTML maskiert
Cool! Danke!
Das hat dann aber abgesehen von wenig aussagekräftigen URLs ...
Da gebe ich dir Recht! dafür könnte man aber die URL separat fixen, wenn gewünscht. Das mit der ID $i für die div's ist trotzdem für mich der bessere Weg!

Code: Select all

function top($id = false)
Ohne das = false gäbe es eine Warning....
Ist natürlich sauber gecodet! Vielleicht schläfst Du ja nochmal darüber über mein Vorschlag mit top("PARAMETER") und onepage_toplink("PARAMETER") dann halt sauber so:

Code: Select all

public static function renderTopLink($idtop = false) {...]
;) schönen Sonntag noch!

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

Re: Kompletten Inhalt von content.htm ausgeben - OnePage

Post by cmb » Sun Feb 08, 2015 8:42 pm

knollsen wrote:
Ich habe gerade festgestellt, dass die Navigation in IE 11 und Chrome 40 nach dem Fix funktioniert ...
Mög sein, doch getestet wird immer eine Browserversion niedriger (bei mir), da ja gerade Firmen nicht gerade auf den aktuellen Stand sind. Kenn einige Firmen die noch IE8 / IE9 haben. da sollte das natürlich auch perfekt funktionieren. Der Privat-Anwender spielt für mich nicht so die große Rolle!
Bzgl. älterer Browserversionen widme ich v.a. dem IE -- tatsächlich ist IE 8 noch sehr verbreitet, und selbst 7 und 6 sind wohl noch nicht wirklich ausgestorben. Bei Chrome und Firefox sehe ich das nicht unbedingt so eng; einerseits sind die Updates immer installierbar (anders als bei IE), und andererseits unterscheiden sich die Major-Versionen nicht so deutlich voneinander. Safari teste ich gar nicht, seit Apple diesen nur noch für das eigene OS anbietet. Andere Browser teste ich wenn überhaupt nur sporadisch (Opera 12.17 z.B.). Und ansonsten überlasse ich umfassende Tests dem QA Team -- also den Anwendern. :)

Hier ging es aber auch um keinen umfassenden Test, sondern lediglich um die Feststellung, dass IE 11 und Chrome 40 sich unterschiedlich verhalten, je nachdem ob man den Link anklickt oder die URL in die Adressleiste eintippt. Finde ich schon seltsam...
knollsen wrote:Vielleicht schläfst Du ja nochmal darüber über mein Vorschlag mit top("PARAMETER") und onepage_toplink("PARAMETER") dann halt sauber so:
Für onepage_toplink() habe ich das doch schon abgenickt (muss halt noch implementiert werden), und für top() setze ich es gleich auf die Roadmap (sonst vergess ich's vielleicht wieder -- danke für die Erinnerung).
Christoph M. Becker – Plugins for CMSimple_XH

smaxle
Posts: 31
Joined: Fri Jan 09, 2015 10:34 am
Location: GERMANY/BW

Re: Kompletten Inhalt von content.htm ausgeben - OnePage

Post by smaxle » Mon Feb 09, 2015 5:37 pm

Wollt einfach nur mal sagen: "Bin voll begeistert".
@ cmb SUPER Arbeit danke...... :D :D :D
Ich bin gespannt...wie die Entwicklung fortschreitet.

Bin dann mal wieder beim testen......

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

Re: Kompletten Inhalt von content.htm ausgeben - OnePage

Post by cmb » Tue Feb 10, 2015 7:31 pm

cmb wrote:
knollsen wrote:eigentlich würde ja sinnigerweise $i als id für den div reichen, da es ja eindeutig für jede Seite ist!
Interessante Idee. Das hat dann aber abgesehen von wenig aussagekräftigen URLs v.a. das Problem, dass Deep-Links nicht mehr richtig passen, wenn Seiten ergänzt oder entfernt werden.
Ich hab's jetzt doch mal implementiert -- kann per Konfiguration aktiviert werden.
cmb wrote:
knollsen wrote:Wofür ich noch keine Zeit hatte, warum dann gewisse Plugins wie z.Bsp. Flexslider nicht funktionieren dafür aber im Admin-Bereich
Ich vermute, dass liegt an der Routine die alle URLs, die auf die selbe Seite verweisen smooth scollen lässt (da wird dann einfach das onclick Attribut entsprechend gesetzt). Da werde ich wohl nachbessern müssen -- schau ich mir aber erst noch genauer an.
Ich habe das nun geändert, und Onepage_XH lässt die onclick Attribute anderer in Ruhe. Hier und da könnte es aber dennoch mal Probleme geben. Falls was auffällt, bitte melden.
smaxle wrote:Wollt einfach nur mal sagen: "Bin voll begeistert".
Freut mich. :)
smaxle wrote:Ich bin gespannt...wie die Entwicklung fortschreitet.
Konkret kannst Du jederzeit im Repo nachsehen. Allgemein hängt die Entwicklung aber gerade auch von Euren Ideen und Vorschlägen ab -- also immer raus damit!
smaxle wrote:Bin dann mal wieder beim testen......
Eventuelle Fehler bitte melden! :)
Christoph M. Becker – Plugins for CMSimple_XH

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

Re: Kompletten Inhalt von content.htm ausgeben - OnePage

Post by lck » Wed Feb 11, 2015 12:09 pm

cmb wrote:ich habe gerade Onepage_XH 1beta1 veröffentlicht.
Sehr schön.

Habs mal hochgeladen und getestet (@cmb: Link in der PM von gestern)
Jetzt funktioniert es wunderbar in Firefox, aber nicht mehr in den anderen Browsern, wenn ein Menüpunkt einen Untermenü enthält.
Erst wenn man in die Browserzeile klickt und einen Return macht scrollt die Page zum Anker, aber auch nicht sprungenau, in Firefox 35 wird das Ziel genau angescrollt, kann aber auch an meinem Template liegen.
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

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

Re: Kompletten Inhalt von content.htm ausgeben - OnePage

Post by cmb » Wed Feb 11, 2015 1:14 pm

Ludwig wrote:Jetzt funktioniert es wunderbar in Firefox, aber nicht mehr in den anderen Browsern, wenn ein Menüpunkt einen Untermenü enthält.
Erst wenn man in die Browserzeile klickt und einen Return macht scrollt die Page zum Anker, aber auch nicht sprungenau, in Firefox 35 wird das Ziel genau angescrollt, kann aber auch an meinem Template liegen.
Ich weiß, dass es diese Probleme gibt. Allerdings verhält sich, soweit ich es beurteilen kann, und soweit es überhaupt möglich ist, Onepage_XH mittlerweile korrekt. So wird z.B. versucht per #Templates-%26amp%3B-Plugins auf id="Menu-Levels-&-Headings" zu verweisen; im Quelltext wird das als id="id="Menu-Levels-&amp;-Headings" angegeben. Mir scheint, dass da diverse Browser mit diesen (Ausnahme-)Fällen Probleme haben; Umlaute in den Seitentiteln werden ja anscheinend von den diversen Browsern korrekt angesprungen.

Ich schlage vor, wie auch in der Hilfedatei erwähnt, wenigstens die & in Seitentiteln per uricharchar/org_new zu ersetzen: & -> und, oder & -> -. Alternativ kann man natürlich auch die numerischen URLs aktivieren -- damit sollte es keine Probleme beim Navigieren geben.

Warum die Browser nun manchmal genau zur Überschrift springen/scrollen, und manchmal nicht, ist mir im Detail noch nicht ganz klar. Es hängt auf jeden Fall mit Headern mit position:fixed zusammen. Diese dürften beim direkten Springen per Adresszeile oder Link (ohne JS) die Überschrift überlagern. Das Scrollen per JS berücksichtigt aber die Header, zumindest u.U. Da wird es nämlich knifflig; um die Zielposition zu ermitteln, wird nämlich bei manchen Browsern document.documentElement.scrollTop bei anderen aber document.body.scrollTop ausgewertet. Dummerweise ist diese Eigenschaft noch nicht standardisiert, und daher verhalten sich die Browser wohl etwas unterschiedlich, besonders in Bezug auf das Adminmenü, dass ja dem HTML Element einen margin-top zuweist. Insgesamt gibt es da ohnehin Problem mit dem Adminmenü und fix positionierten Headern im Template -- damit lässt sich eigentlich nicht arbeiten. Daher habe ich ja auch das alternative Admin-Template eingeführt, aber das darf eigentlich nur im Editmodus genutzt werden (sonst stimmt die Vorschau ja gar nicht), und damit ist es irgendwie sinnlos, weil die Pluginadministration immer im Ansichtsmodus aufgerufen wird.

Ich muss mir das ganze noch mal bei anderen Onepage-Websites anschauen. Auf jeden Fall ist es aber auch zu überlegen, dass man das Menü gar nicht als Header gestaltet, sondern an der Seite des Browserviewports positioniert -- das sollte zumindest die Probleme mit dem Adminmenü beheben, und kann durchaus auch sehr ansprechend aussehen: http://studiokraftwerk.com/, http://blog.iforex.com/water/.

PS: Ich habe gerade festgestellt, dass die Navigation auch bei den Seitentiteln mit & funktioniert, wenn ich JavaScript deaktiviere -- ist also ein Bug in Onepage_XH 1beta1 (bin aber noch nicht sicher, ob ich den beheben kann).

@Ludwig: bei dem besagten Template springen die Links (ohne JS) zu weit nach unten. Dem könnte man durch folgendes entgegenwirken:

Code: Select all

.onepage_page {padding-top: 160px}
Allerdings klappt das nicht bei schmalen Viewports, da dann das Menü umbricht, und man das padding-top entsprechend vergrößern müsste. Da müsste ggf. dynamisch per JS nachgebessert werden, falls keine bessere Lösung gefunden wird.
Christoph M. Becker – Plugins for CMSimple_XH

Post Reply