Code: Select all
<?php echo my_li($hc, 1);?>
Code: Select all
<?php echo my_li($hc, 1);?>
Lösung, diese Zeile ergänzen mit id="onepage_menu"
Code: Select all
return preg_replace('/<ul id="onepage_menu" class="menulevel1"/', '<ul class="onepage_menu menulevel1"', $html, 1);
Das JS ist dazu gedacht, dynamisch die Menuitem-Klasse zu ändern (sdoc(s) vs doc(s). Weiß gar nicht, was passiert, wenn es mehrere gleiche IDs gibt; eventuell ist das JS Verhalten dann Brower spezifisch? Auf jeden Fall sollte da nachgebessert werden, eben auch weil die Klasse unter Umständen bei mehreren Menüs geändert werden sollte.
Ich vermute, dazu müsste das in Onepage_XH nachgerüstet werden.
Code: Select all
classes/Li.php | 2 +-
onepage.js | 20 +++++++++++---------
2 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/classes/Li.php b/classes/Li.php
index 68b6e34..909ead1 100644
--- a/classes/Li.php
+++ b/classes/Li.php
@@ -35,7 +35,7 @@ class Li extends XH_Li
$html = parent::renderULStartTags($i);
if ($l[$i] == 1) {
- return preg_replace('/<ul class/', '<ul id="onepage_menu" class', $html, 1);
+ return preg_replace('/<ul class="/', '<ul id="onepage_menu" class="onepage_menu ', $html, 1);
} else {
return $html;
}
diff --git a/onepage.js b/onepage.js
index 1469bfa..3b6525c 100644
--- a/onepage.js
+++ b/onepage.js
@@ -277,7 +277,7 @@
}
function adjustMenuClasses() {
- var selectedId, menu, menuItems;
+ var selectedId, menus;
function getSelectedId() {
var pages, page;
@@ -292,14 +292,16 @@
}
selectedId = getSelectedId();
- menu = document.getElementById("onepage_menu");
- menuItems = menu.getElementsByTagName("li");
- map(menuItems, function (it) {
- var anchor, id;
-
- anchor = it.getElementsByTagName("a")[0];
- id = anchor.href.split("#")[1];
- it.className = id === selectedId ? "sdoc" : "doc";
+ menus = getElementsByClassName("onepage_menu");
+ map(menus, function (menu) {
+ var menuItems = menu.getElementsByTagName("li");
+ map(menuItems, function (it) {
+ var anchor, id;
+
+ anchor = it.getElementsByTagName("a")[0];
+ id = anchor.href.split("#")[1];
+ it.className = id === selectedId ? "sdoc" : "doc";
+ });
});
}
Würde ich gerne machen, aber da gibt's ein Problem. In Onepage_XH 1.0beta2 onpage.js sind gewisse Teile gar nicht enthalten, diese finden sich nur in der Master-Version von onepage.js.
Code: Select all
var selectedId, menu, menuItems;
Oder probiere diesen Patch für Onepage_XH 1.0beta2:
Code: Select all
classes/Li.php | 2 +-
onepage.js | 22 ++++++++++++----------
2 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/classes/Li.php b/classes/Li.php
index bf526e9..5901326 100644
--- a/classes/Li.php
+++ b/classes/Li.php
@@ -41,7 +41,7 @@ class Onepage_Li extends XH_Li
$html = parent::renderULStartTags($i);
if ($l[$i] == 1) {
- return preg_replace('/<ul class/', '<ul id="onepage_menu" class', $html, 1);
+ return preg_replace('/<ul class="/', '<ul id="onepage_menu" class="onepage_menu ', $html, 1);
} else {
return $html;
}
diff --git a/onepage.js b/onepage.js
index b0ea97c..9f7adef 100644
--- a/onepage.js
+++ b/onepage.js
@@ -244,7 +244,7 @@
}
function adjustMenuClasses() {
- var pages, i, selectedURL, menu, menuItems;
+ var pages, i, selectedURL, menus;
pages = getElementsByClassName("onepage_page");
for (i = pages.length - 1; i >= 0; i--) {
@@ -260,15 +260,17 @@
selectedURL = encodeURIComponent(pages[0].id);
}
- menu = document.getElementById("onepage_menu");
- menuItems = menu.getElementsByTagName("li");
- forEach(menuItems, function (it) {
- var a, id;
-
- a = it.getElementsByTagName("a")[0];
- if (!a) return;
- id = a.href.split("#")[1];
- it.className = (id == selectedURL) ? "sdoc" : "doc";
+ menus = getElementsByClassName("onepage_menu");
+ forEach(menus, function (menu) {
+ var menuItems = menu.getElementsByTagName("li");
+ forEach(menuItems, function (it) {
+ var a, id;
+
+ a = it.getElementsByTagName("a")[0];
+ if (!a) return;
+ id = a.href.split("#")[1];
+ it.className = (id == selectedURL) ? "sdoc" : "doc";
+ });
});
}
Ja, sollte, und hat bei mir auch. Eventuell ist noch das alte JS im Browsercache?
Da ist halt abzuwägen, ob man die ID entfernt; bestehende Templates könnten diese unter Umständen als Selektor verwenden, und das sähe dann bei einer neuen Onepage_XH Version schlecht aus. BC break ist eigentlich bei Betas irrelevant, aber da 1.0beta2 schon so lange freigegeben ist … (mea culpa)
Funktioniert doch, habe es mal mit einem anderen Template getestet. Bei einem neueren Template mit horizontalem Slider funktioniert es nicht, da das switchen zwischen der Klasse doc und sdoc wohl sollabhängig und zwar in vertikaler Richtung ist.
Ja, das muss vermieden werden. Aber dann bitte so wie vorher in der 1.0beta2 Version, also in der Li.php:
Code: Select all
return preg_replace('/<ul class/', '<ul id="onepage_menu" class', $html, 1);
Mal ganz abgesehen von eurer Diskussion oben: