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.

Erstellt: 07/2010| Geändert: 03/2023