Angenommen man hat folgende Struktur:Man legt also die OnePageWebsite Page als Referenzseite fest und möchte dort auch die Ausgabe der Subpages für die OnePageWebsite machen. In so fern hat man auch das Navigationsmodul dort, bzw. im Seiten-Layout eingebunden.Code:- OnePageWebsite <-- reference, regular structure module, navigation module - Page 1 - Page 2 - Page 3
Jetzt bereitet aber folgender Code ein Problem: system/modules/onepagewebsite/OnePageWebsite/Frontend/ModuleOnePageWebsiteNavigation.php, Zeile #173 ff.Die Condition verursacht, dass, wenn die Referenz-Seite und die aktuelle Seite gleich sind, der href zB nur "#page1" wird, anstatt bspw. "onepagewebsite.html#page1".PHP-Code:// href
if($objJumpTo->id != $objPage->id && $objJumpTo->id > 0)
{
$href = $this->generateFrontendUrl($objJumpTo->row()) . '#page' .$objSubpages->id;
}
else
{
$href = '#page' .$objSubpages->id;
}
Dies mag zwar auf den ersten Blick sinnvoll erscheinen, allerdings funktionieren anchor links nicht, wenn ein <base href="..."> existiert! Solche Links, also wie zB href="#page1" führen dann immer zu der im base href angegeben URL, also zB http://www.domain.com/#page1.
Beispiel, unabhängig von Contao und OPW: angenommen man hat eine foo.html auf domain.com. In dieser foo.html befindet sich bspw.Ohne base href funktioniert dies wunderbar, der Browser möchte dann zu http://www.domain.com/foo.html#target springen, wenn man den Link betätigt. Hat man allerdings folgendes:PHP-Code:<a href="#target">...</a>
...
<h2 id="target">...</h2>
funktioniert dies nicht mehr. Der Browser wandelt href="#target" zu http://www.domain.com/#target um anstatt http://www.domain.com/foo.html#targetPHP-Code:<base href="http://www.domain.com/">
...
<a href="#target">...</a>
...
<h2 id="target">...</h2>
Beispiel online: http://www.inspiredminds.at/files/mi...ehref/foo.html
Insofern ist es wahrscheinlich sinnvoll sowieso immerzu verwenden (und ggf. den $objJumpTo->id > 0 check zu Zeile #165 hinzu zu fügen), da Contao den base href tag ja immer ausgibt, sofern man das nicht selbst ändert.PHP-Code:$href = $this->generateFrontendUrl($objJumpTo->row()) . '#page' .$objSubpages->id;
Unter Umständen ist dieser Fehler bis jetzt noch niemanden aufgefallen, weil die empfohlene Struktur ja so aussieht:Da tritt der Fehler ja nicht auf, weilCode:- Foo <-- regular structure, navigation module - Referenz <-- reference - Page 1 - Page 2 - Page 3immer true ist.PHP-Code:$objJumpTo->id != $objPage->id

Zitieren

. Hier geht es um ein spezifisches Problem in der OnePageWebsite Extension
.
. Wenn der User keine Zielseite angibt, kommt es halt zu dem Fehlverhalten, falls er die OPW Ausgabe nicht auf der index Seite macht.