Onepage_XH: (s)doc(s)
Re: Onepage_XH: (s)doc(s)
Interessante Beobachtung:
Heute Update Firefox auf Version 67.0 (64) -> die Darstellung der diagonalen Linien (Hintergründe) ist ein Graus!
(ist im FF for Android übrigens ebenso)
Na ja, diese Linien waren für mich sowieso nie schön, da mach' ich mal irgendwann was anderes.
Heute Update Firefox auf Version 67.0 (64) -> die Darstellung der diagonalen Linien (Hintergründe) ist ein Graus!
(ist im FF for Android übrigens ebenso)
Na ja, diese Linien waren für mich sowieso nie schön, da mach' ich mal irgendwann was anderes.
Re: Onepage_XH: (s)doc(s)
Da ich am Sonnabend total vergessen habe, euch auf den "Towel Day" (Tag des Handtuchs) hinzuweisen, stelle ich heute mal eine Frage an Holger.
@Holger
Bin im Moment ziemlich begeistert von deiner Onepage-Version inklusive der Example-JS.
Ich frage mich allerdings, wie das nochmal war mit <article> und/oder <section> für die einzelnen Seiten
Solche Konstruktionen funktionieren wohl nicht mehr - oder?
@Holger
Bin im Moment ziemlich begeistert von deiner Onepage-Version inklusive der Example-JS.
Ich frage mich allerdings, wie das nochmal war mit <article> und/oder <section> für die einzelnen Seiten
Code: Select all
<?php $onepage_structure = '
<article id="%s" class="onepage_page">
<div class="container">%s</div>
</article>
';?>
<main>
<?php echo onepage_content()?>
</main>
Re: Onepage_XH: (s)doc(s)
Na ja, das mit der globalen Variable war eh Murks und daher kein Wunder, dass Christoph das diplomatisch unkommentiert gelassen hat.
Aber eigene Strukturen sind nach wie vor möglich. Der "richtige" Weg wäre eine eigene, den Wünschen entsprechend angepasste Methode für getContent(). Du solltest dabei aber beachten, dass eigentlich per Definition (bzw. Einigung im Thread damals) ein Div mit der Id "Seitenname" Voraussetzung zur Funktion der JavaScripte ist und deshalb zwingend am richtigen Platz enthalten sein sollte. Änderst du das <div> zu einem anderen Tag, könnte das Kompatibilitätsprobleme verursachen. Natürlich kannst du aber, wenn Du ein eigenes JS per Template auslieferst, an der Stelle entsprechend eingreifen.
Anbei mal ein kleines Beispiel als Basis für eigene Versuche (sollte ich vielleicht auch zu /examples auf GitHub kopieren?):
Code: Select all
<?php
class TPLNameController extends Onepage_Controller
{
/**
* @return string
*/
public function tplNamegetContent()
{
global $s, $o, $hc, $c, $u, $edit, $plugin_cf, $pd_router;
if (!($edit && XH_ADM) && $s > -1) {
$contents = '';
foreach ($hc as $i) {
if ($plugin_cf['onepage']['url_numeric']) {
$url = $i;
} else {
$url = Onepage\Urlify::makeUniqueUrl($i);
}
$pageData = $pd_router->find_page($i);
$content = self::replaceAlternativeHeading($c[$i], $pageData);
$contents .= sprintf(
'<div id="%s" class="onepage_page %s">%s</div>',
$url,
$pageData['onepage_class'],
sprintf(
'<article><div class="%s">%s</div></article>',
$plugin_cf['onepage']['inner_class'],
$content
)
);
}
$o .= preg_replace('/#CMSimple (.*?)#/is', '', $contents);
}
return preg_replace('/<!--XH_ml[1-9]:.*?-->/is', '', $o);
}
}
// Funktion zur Ausgabe im Template
function TplName_content()
{
$t = new TPLNameController();
return $t->tplNamegetContent();
}
Die einzige neue Methode darin ist tplNamegetContent(), in der wir die angepasste Struktur definieren. Es ist eine Kopie der getContent() - Methode aus der originalen Onepage\Controller - Klasse (/plugins/onepage/classes/Controller.php). Hier im Beispiel ist an der entsprechenden Stelle nur ein <article> ... </article> eingebaut. Du kannst so aber beliebige Strukturen realisieren.
Die Funktion außerhalb der Klasse dient dann zur Ausgabe der Inhalte im Template. Dort also echo onepage_content() mit echo TplName_content() ersetzen.
Den ganzen Code packst du dann zum Beispiel in eine Datei "tplfunctions.php" die du per include() oder require() am Anfang der template.htm einbindest. Das war's , bis auf TplName in obigem Code noch entsprechend mit einem eindeutigen Bezeichner ersetzen.
Auf diese Art kannst du ohne Eingriffe in den Plugin-Code, allein über das Template, die gewünschte Ausgabe-Struktur erzeugen.
Ein kleiner Fallstrick ist/war aber enthalten. Die neue Klasse zur Bereinigung der Ids wird nicht mehr gefunden.
Der statische Aufruf im Original
Code: Select all
$url = Urlify::makeUniqueUrl($i);
Code: Select all
$url = Onepage\Urlify::makeUniqueUrl($i);
Nun bin ich mal gespannt, was du daraus bastelst .
Re: Onepage_XH: (s)doc(s)
Korrektur, aus dem alten Thread:
Aber, wie schon gesagt, könnte es bei veränderter Struktur, bzw. einem anderen Blockelement als "div", Probleme geben. Mit einer eigenen onepage.js, die mit dem Template kommt, wäre das im Zweifelsfall zu berichtigen.Dieser <div> - Container, mit der Seiten-ID und der Klasse "onepage_page" ist Mindestvoraussetzung für die Funktion des Plugins.
Re: Onepage_XH: (s)doc(s)
Uff, schwerer Tobak am frühen Morgen.
Bin auch gespannt, denn ich handle ja eher so wie hier zitiert.
Ich melde mich dann später.
Vielen Dank!
Re: Onepage_XH: (s)doc(s)
Na, sooo schwerer Tobak war's gar nicht
Dank Holgers guter Erklärung: simple!
Es funktioniert. Jetzt sind meine Seitenbereiche <article>s.
Grooßen Dank!
Meine tplfunctions.php sieht so aus:
Die eigenartigen Einrückungen habe ich gemacht, damit die Ansicht des Seitenquelltextes etwas übersichtlicher wird. (Was bei Verwendung von CNC dann wieder zerstört wird -> nicht so wichtig.)
Wer es sehen will: bitte hier.
Der Download ist veraltet. Es wird in den nächsten Tagen wohl einen aktuelleren geben.
Ich muss mir noch überlegen, ob ich die Warnungen des Nu Html Checkers wegen der Verwendung der h1-Überschriften ignoriere - oder nicht. (Übrigens: jQuery mit "<script type="text/javascript" ..." wird auch angewarnt.)
Dank Holgers guter Erklärung: simple!
Es funktioniert. Jetzt sind meine Seitenbereiche <article>s.
Grooßen Dank!
Meine tplfunctions.php sieht so aus:
Code: Select all
<?php
class fhsCCRController extends Onepage_Controller {
/**
* @return string
*/
public function fhsCCRgetContent() {
global $s, $o, $hc, $c, $u, $edit, $plugin_cf, $pd_router;
if (!($edit && XH_ADM) && $s > -1) {
$contents = '';
foreach ($hc as $i) {
if ($plugin_cf['onepage']['url_numeric']) {
$url = $i;
} else {
$url = Onepage\Urlify::makeUniqueUrl($i);
}
$pageData = $pd_router->find_page($i);
$content = self::replaceAlternativeHeading($c[$i], $pageData);
$contents .= sprintf('
<div id="%s" class="onepage_page %s">%s</div>',
$url,
$pageData['onepage_class'],
sprintf('
<article>
<div class="%s">%s</div>
</article>
',
$plugin_cf['onepage']['inner_class'],
$content
)
);
}
$o .= preg_replace('/#CMSimple (.*?)#/is', '', $contents);
}
return preg_replace('/<!--XH_ml[1-9]:.*?-->/is', '', $o);
}
}
// Funktion zur Ausgabe im Template
function fhsCCR_content() {
$t = new fhsCCRController();
return $t->fhsCCRgetContent();
}
Wer es sehen will: bitte hier.
Der Download ist veraltet. Es wird in den nächsten Tagen wohl einen aktuelleren geben.
Ich muss mir noch überlegen, ob ich die Warnungen des Nu Html Checkers wegen der Verwendung der h1-Überschriften ignoriere - oder nicht. (Übrigens: jQuery mit "<script type="text/javascript" ..." wird auch angewarnt.)
Re: Onepage_XH: (s)doc(s)
Das habe ich mir jetzt überlegt.
Ab sofort beginnen meine Einzel-Seiten alle mit einer h2-Überschrift (im Header ist eine h1).
Die Screenreader zeigen nun korrekterweise alle Überschriften an - das ist also besser.
Re: Onepage_XH: (s)doc(s)
Schön .
Schaut gut aus. Bin gespannt auf den nächsten Download!
Nur, wie geht's jetzt weiter?
Zwei kleine Dinge müssten in OnePage_XH übernommen werden:
- bereinigte und eindeutigeIDs
- Hashes auch im Admin-Mode
Soweit ich das überblicke, sollten diese Änderungen keine Auswirkungen auf die Pluginfunktion haben und das mitgelieferte JS sollte auch noch funktionieren.
Lediglich Deep-Links in/zu bestehenden Installationen würden sich ändern, was ein BC-Break wäre. Eventuell könnte man die Bereinigung der IDs auch optional machen.
BTW: wenn man sich solche Urlverschönerer anschaut, wandeln sie in der Regel alles in Kleinbuchstaben. Vielleicht sollten wir das auch so machen.
Aber eigentlich wollte ich noch eine Möglichkeit für "Multi-OnePagers", in etwa so:
alle Seiten unterhalb einer Level-1 Seite werden als OnePager dargestellt. Man kann natürlich mehrere solche Seiten in einer Installation haben. Also so ähnlich wie Gerts "ml2-OnePagers".
Aber welches Menü, bzw. welche Menüarten wären da sinnvoll?
Ach ja, nach fhs_adminmenu wollte ich ja (für das jQuery-Beispiel) auch noch einmal schauen...
Re: Onepage_XH: (s)doc(s)
Na ja, das Grundlayout ist eben etwas "retro" - und da mich das selbst nicht so richtig umgehauen hat, habe ich einige Gimmicks, Gadgets oder wie das heißt eingebaut.
Neuer Download kommt bald.
Übrigens: Um einen neuen Download fertigzustellen, wollte ich heute den Content mit Exchange in eine Original-XH-Installation übertragen. Ich erhielt zwar den Content, aber alle Seiten doppelt! Aus Zeitgründen habe ich Exchange gekillt und es nicht weiter untersucht.
Ich beabsichtige nun wirklich das Template inkl. einer kompletten XH-Umgebung zum Download anzubieten, einfach weil es mit dem assets-Ordner im Admin-Modus übersichtlicher ist. Auch dem Tiny habe ich eine eigene init verpasst. Und der neue Filebrowser ist auch dabei (der ist schon Monate fertig - wir haben eine gute XH-Stabilität erreicht und mit Stabilität meine ich Stillstand [Satire]).
+1
Na ja, bei einem Onepager vielleicht nicht so tragisch - oder?
Unbedingt.
"#id0_Ueber-das-Template" - dabei muss man zum Eintippen schon zweimal die Hochstelltaste drücken
Hier könnte Ludwig Unterstützung leisten, er hat sich wohl schon ausgiebig mit dem Thema beschäftigt.
Nicht zwingend nötig. Habe es dokumentiert. Schön wäre vielleicht eine Meldung, falls es jemand aktiv hat.
Letztendlich weiß ich auch nicht so recht, wie das mit dem Plugin weitergeht. Was sage ich den Benutzern des Templates, was Updates angeht? (version.nfo?)
NACHTRAG:
Das zitterige Scrollen (manchmal) scheint mir gar nicht von den Animationen oder dem Owl-Carousel zu kommen, sondern eher vom "Post It". Das muss noch untersucht werden.
Re: Onepage_XH: (s)doc(s)
Ach, übrigens:
Ich habe in der tplfunctions.php noch eine Verkürzung vorgenommen (noch nicht online).
Statt:
schreibe ich jetzt nur noch:
Das spart einen <div> und es scheint bei mir sauber zu funktionieren.
Korrektur wegen Voreiligkeit:
Funktioniert nicht!
Ich habe in der tplfunctions.php noch eine Verkürzung vorgenommen (noch nicht online).
Statt:
Code: Select all
<article>
<div class="%s">%s</div>
</article>
Code: Select all
<article class="%s">%s</article>
Korrektur wegen Voreiligkeit:
Funktioniert nicht!