Interne Links
Geschützte Links
Ähnlich den Softlinks von heise.de habe ich eine Funktionalität implementiert, um Links für eingeloggte Benutzer sichtbar zu machen und vor der Öffentlichkeit zu verstecken.
Dazu habe ich eine Linkliste als versteckte und geschützte Seite angelegt. Jeder Link ist ein Absatz. Im Text wird ein Link auf den Absatz gesetzt.
Das Problem war nun auf dieser Seite (Linkliste) nur den gewählten Link anzuzeigen. Dazu gibt es ein Template welches abhängig vom Anker nur das gewählte Content Element anzeigt. NUR: der Anker ist aus PHP nicht zu ermitteln. Also hier eine Javascript redirect, welches den Anker in eine GET Variable umwandelt:
Javascript
url = document.location;
url = url + "";
if(url.indexOf("replaced") == -1) {
url = url.replace(/#c/g, "?anchor=") + "&replaced=1";
window.location.replace(url);
}
replaced: Vermeiden endloser Rekursion
#c in ? umwandeln: Anker c390 in uid 390 umwandeln
Template
Im Template wird es in der Seite integriert und der ?anchor= wird zum Auswählen des Contents verwendet. Ein Content auf der Seite (Hinweise) wird immer angezeigt (uid=392)
<?php
page = PAGE
page {
headerData.100 = TEXT
headerData.100.value = <script type="text/javascript" src="fileadmin/scripts/linklist.js"></script>
page.headerData.100.wrap = |
# ---------- Template ----------
10 = TEMPLATE
10.template = FILE
10.template.file = fileadmin/templates/knolledge_base_template.html
10.subparts.DOCUMENT < tempTitle.sectionMenu
10 {
workOnSubpart = DOCUMENT
# ---------- Content ----------
marks {
# ---------- RSYS_CONTENT_LEFT ----------
RSYS_CONTENT_LEFT = CONTENT
RSYS_CONTENT_LEFT {
table = tt_content
select.orderBy = sorting
select.where.insertData=1
select.where = uid = {GPvar:anchor} OR uid = 392
select.where.if.isTrue.data=GPvar:anchor
select.languageField = sys_language_uid
}
# --- end RSYS_CONTENT_LEFT
}
}
?>
where: where statement kann nur statische Daten
Und
Die Seite muss auf nocache gesetzt werden.