Seite 1 von 1

Base Href, Anker-Links und andere Links

Verfasst: Mo 18. Feb 2013, 11:11
von derernst
Hallo Forum

Eben habe ich festgestellt, dass Links zu Ankern innerhalb der Seite der Art:

Code: Alles auswählen

<a href="#top">Nach oben</a>
nicht funktionieren, weil Contenido (4.8.18, mit AMR) ein Meta-Tag mit einem Base-Href einfügt. Der Browser will dann die Datei /cms/#top aufrufen, was natürlich nicht geht.

Mit etwas Forum-Googeln habe ich herausgefunden, wie ich das Base-Href ausschalten kann. Nun funktioniert der Top-Link, dafür funktionieren die Bilder aus dem Upload nicht mehr, weil die Links zu den Bildern relativ in den Code eingefügt werden statt absolut. Ich bräuchte also:

- entweder eine Einstellung, die den Pfad zum Upload-Ordner absolut einfügt, in der Form /cms/upload/...
- oder eine Methode, um trotz Base-Href einen funktionierenden Link zu einem Anker zu setzen.

Kann mir jemand weiterhelfen?

Danke & Gruss
Markus

Re: Base Href, Anker-Links und andere Links

Verfasst: Mo 18. Feb 2013, 15:37
von xmurrix
Hallo derernst,

du kannst die base-href abschalten, musst dann dafür sorgen, dass die URLs zu allen Resourcen absolut vom Root aus gehen.

Oder du passt den Code-Snipsel so um, dass es die URL zum aktuellen Artikel enthält.

Code: Alles auswählen

<?php
$url = Contenido_Url::getInstance()->build(array('lang' => $lang, 'idart' => $dart));
?>
<a href="<?php echo $url ?>#top">Nach oben</a>
Dann sollte der Browser in der Lage sein, und verstehen, dass base-href + die URL auf die gleiche Seite zeigt. mit dem Zusatz-Anker. Das geht aber nur, wenn die URLs (die URL, die zur Seite geführt hat, und die URL die im Anker generiert wurde) gleich sind. Je nach AMR-Einstellung kann eine URL zur Kategorie unterschiedlich ausfallen (/kargoriename/, /kargoriename/index.html oder /kargoriename/artikelname-html)

Oder du passt den Code-Snipsel mit JavaScript um

Code: Alles auswählen

<a href="javascript:;" onclick="document.location.hash='top';">Nach oben</a>
Was aber nur bei Browsern geht, die auch JavaScript verarbeiten können/wollen.

Oder du machst das global für alle Anker mit folgendem jQuery-Script

Code: Alles auswählen

<a href="#top">Nach oben</a>
<script type="text/javascript">
$(document).ready(function() {
    $("a[href^='#']").live("click", function(e) {
        document.location.hash = this.href.substr(this.href.indexOf('#') + 1);
        return false;
    });
});
</script>
Geht auch nur in Browsern, die JavaScript verarbeiten können/wollen.

Gruß
xmurrix

Re: Base Href, Anker-Links und andere Links

Verfasst: Mo 18. Feb 2013, 16:02
von Spider IT
@Murat: Es geht hier um Anker-Links, welche mit dem TinyMCE eingefügt werden.

@Markus: Wenn du beim Anker-Link front_content.php?idcat=1#top anstelle von #top (hier als Beispiel für den Startartikel aus Kategorie 1) einsetzt, dann sollte es funktionieren.

Gruß
René

Re: Base Href, Anker-Links und andere Links

Verfasst: Mo 18. Feb 2013, 16:05
von xmurrix
Ich sehe hier keine Hinweise über TinyMCE, und wenn, dann sollte das letzte Beispiel auch helfen.

Re: Base Href, Anker-Links und andere Links

Verfasst: Mo 18. Feb 2013, 16:30
von derernst
Vielen Dank euch beiden für die ausführlichen Antworten - ich werde damit das Problem beheben können.

Der fragliche Anker-Link ist übrigens tatsächlich im Code des Layouts, und nicht mit TinyMCE eingefügt. Renés Anmerkung scheint mir aber durchaus auch hilfreich, falls jemand anderes mit der entsprechenden Frage bei der Forumssuche auf diesen Thread stösst.

Übrigens ist mir noch aufgefallen, dass bei ausgeschaltetem Base-Href nur die Bilder nicht gehen, die mit TinyMCE eingefügt wurden. Bilder, die mit CMS_IMG eingefügt werden, kriegen absolute pfade und gehen auch mit AMR und ohne Base-Href. An sich wäre es hübsch, wenn man dies TinyMCE beibringen könnte.

Re: Base Href, Anker-Links und andere Links

Verfasst: Mo 18. Feb 2013, 17:09
von Spider IT
derernst hat geschrieben:Der fragliche Anker-Link ist übrigens tatsächlich im Code des Layouts
Gut, dann nehme ich das zurück, Murat :)
derernst hat geschrieben:... und gehen auch mit AMR und ohne Base-Href
Wenn du AMR einsetzt, musst du zwingend auch die base href Angabe nutzen, oder sämtliche Pfade zu Ressourcen absolut machen, da sonst der Browser versucht, die Ressourcen über nicht existente Pfade zu laden, z.B.

Code: Alles auswählen

www.domain.tld/produkte/holz/fenster/js/meinscript.js
Gruß
René