2012-04-11 21 views
4

I Diazo mit Plone 4. In einem der HTML-Template-Dateien verwende ich einen Link, um die gleiche Seite zeigt schrieb, wie folgt aus:Wie vermeidet man, dass Diazo "#" Links in Plone ändert?

<a href="#">foo</a> 

Aber es gemacht wird, wie:

<a href="/mysite/++theme++my.theme/">foo</a> 

Wie kann ich vermeiden, dass Diazo den ursprünglichen Vorlagencode ändert oder es gibt einen bestimmten Mechanismus, um auf dieselbe Seite zu zeigen.

Antwort

3

Das klingt aber wie ein Fehler in plone.app.theming. Der Relative-zu-Absolut-Parser sollte Anker-Links ignorieren.

+0

Ich denke, ist ein Fehler auch. Ich werde Code veröffentlichen, der den Fehler repliziert. Jetzt habe ich es in meiner Anwendung mit Javascript behoben. –

2

Das "Diazo Theme" Control Panel auf Plone hat eine Option namens "Absolute path prefix" (auf der Registerkarte "Advanced settings"), die diese Magie definiert. Alternativ könnten Sie versuchen, eine Regel zu definieren, die "#" - Links durch die vordefinierte $ path-Variable ersetzt.

Weitere Informationen zu den Einstellungen auf der Registerkarte "Erweitert" oder vordefinierte Variablen finden Sie unter plone.app.theming.

+0

Ich kann das globale "Absolute Pfadpräfix" nicht verwenden, da das Objekt, auf das "#" zeigt, relativ zum Seitenpfad ist. So unterschiedliche Seiten benötigen unterschiedliche Pfadpräfixe. Außerdem verwende ich relative URLs im Theme, daher kann ich das Pfadpräfix nicht ändern. –

+0

Es gibt noch eine andere Sache: die "#" wird ersetzt durch "/mysite/++theme++my.theme" nicht durch "/++theme++my.theme" das ist die absolute Pfad-Präfix. –

+0

/mysite/wird von plone.app.theming hinzugefügt und es ist in Ordnung. Ansonsten sehne ich mich bei dir und Martin, dass das wirklich ein Fehler im Diazo-Compiler ist. Es verwendet Pythons urlparse.urljoin, um für jede URL ein absolutes Pfadpräfix anzuwenden. Ich denke, es sollte einen Wrapper um urljoin geben, um Joins für URLs zu überspringen, die mit '#' beginnen. –