CMS_LINKTARGET[x] standardmäßig auf "_self" setzen

Gesperrt
julian83
Beiträge: 8
Registriert: Do 7. Apr 2011, 08:57
Kontaktdaten:

CMS_LINKTARGET[x] standardmäßig auf "_self" setzen

Beitrag von julian83 »

Hallo Contenido Gemeinde,

ich habe eine kleine "Best Practice" Anfrage zur Modul Programmierung:

Ich möchte in meinen Modulen CMS_LINKTARGET[x] standardmäßig auf "_self" setzen wenn der Redakteur nichts auswählt.

Da sonst im XHTML Code folgendes steht: <a href="/link.html" target="">
Das Attribut target ist dann vorhanden aber ohne Wert und der Code ist somit nicht valide.

Hier der Code des Modules:

Code: Alles auswählen

<?php

/* Sollte in jedem Modul stehen, damit jedes Modul das erste sein kann
   da hierdurch das benötigte HTML Template angelegt wird falls noch nicht vorhanden*/
if (!isset($tpl) || !is_object($tpl)) {
    $tpl = new Template();
}

/* Reset des $tpl Objektes damit nur Input von diesem Modul zieht*/
$tpl->reset();

/* Anzeige im Backend*/
if ($contenido && $edit) {

    /* Platzhalter "bild_edit" wird durch "CMS_IMGEDIT[1]" ersetzt*/
    $tpl->set('s', 'BILD_EDIT', "CMS_IMGEDIT[1]");
    /* Platzhalter "bild_ausg" wird durch "CMS_IMG[1]" ersetzt*/
    $tpl->set('s', 'BILD_AUSG', "CMS_IMG[1]");
    /* Platzhalter "bild_ausg_alt" wird durch "CMS_IMG[1]" ersetzt*/
    $tpl->set('s', 'BILD_AUSG_ALT', "CMS_IMGTITLE[1]");    
    /* Platzhalter "link" wird durch "CMS_LINK[3]" ersetzt*/
    $tpl->set('s', 'LINK', "CMS_LINK[3]");
    /* Platzhalter "linkdescr" wird durch "CMS_LINKDESCR[3]" ersetzt*/      
    $tpl->set('s', 'LINKDESCR', "CMS_LINKDESCR[3]");
    /* Platzhalter "link_target" wird durch "CMS_LINKTARGET[3]" ersetzt*/
    $tpl->set('s', '{LINK_TARGET}', "CMS_LINKTARGET[3]");
    
    
    /* Inhalt aus Modul-Template "picture_big_backend.html" wird gezogen*/
    $tpl->generate('templates/picture_big_backend.html');
    
/* Anzeige im Frontend*/
} else {

$sLink = "CMS_LINK[3]";

    /* Wenn ein Link angegeben ist spezielles Modul-Template ziehen*/
    if ($sLink != '' && $sLink != 'http://') {
        
        /* Platzhalter "bild_ausg" wird durch "CMS_IMG[1]" ersetzt*/        
        $tpl->set('s', 'BILD_AUSG', "CMS_IMG[1]");
        /* Platzhalter "bild_ausg_alt" wird durch "CMS_IMG[1]" ersetzt*/
        $tpl->set('s', 'BILD_AUSG_ALT', "CMS_IMGTITLE[1]");        
        /* Platzhalter "link" wird durch "CMS_LINK[3]" ersetzt*/
        $tpl->set('s', 'LINK', "CMS_LINK[3]");
        /* Platzhalter "link_target" wird durch "CMS_LINKTARGET[3]" ersetzt*/
        $tpl->set('s', 'LINK_TARGET', "CMS_LINKTARGET[3]");
        
        $tpl->generate('templates/picture_big_link.html');
    
    /* Ansonsten Modul-Template ohne Link ziehen*/    
    } else {                                                                             

        /* Platzhalter "bild_ausg" wird durch "CMS_IMG[1]" ersetzt*/
        $tpl->set('s', 'BILD_AUSG', "CMS_IMG[1]");
        /* Platzhalter "bild_ausg_alt" wird durch "CMS_IMG[1]" ersetzt*/
        $tpl->set('s', 'BILD_AUSG_ALT', "CMS_IMGTITLE[1]");        
        
        $tpl->generate('templates/picture_big.html');

    }
}
?>
-----------------------------------------------------------------------------------------------------------------------------------
Und hier die dazu gehörigen Modul-Templates:

picture_big_backend.html:

Code: Alles auswählen

<a href="{LINK}" target="{LINK_TARGET}"><img src="{BILD_AUSG}" alt="{BILD_AUSG_ALT}" width="548" height="235" id="picture-big" /></a>
{BILD_EDIT} &nbsp; <b>Link:</b> {LINK}  <b>&nbsp; >> &nbsp;</b>  {LINKDESCR}
picture_big_link.html:

Code: Alles auswählen

<a href="{LINK}" target="{LINK_TARGET}"><img src="{BILD_AUSG}" alt="{BILD_AUSG_ALT}" width="548" height="235" id="picture-big" /></a>
picture_big.html:

Code: Alles auswählen

<img src="{BILD_AUSG}" alt="{BILD_AUSG_ALT}" width="548" height="235" id="picture-big" />

Über ein kurzen Tipp wie ich am besten {Link_TARGET} auf "_self" setze wenn nichts anderes vom Redakteur angegeben wurde wäre ich sehr dankbar. :)
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: CMS_LINKTARGET[x] standardmäßig auf "_self" setzen

Beitrag von Spider IT »

Hallo,

Code: Alles auswählen

$tpl->set('s', '{LINK_TARGET}', "CMS_LINKTARGET[3]");
ändern zu

Code: Alles auswählen

$tpl->set('s', '{LINK_TARGET}', ((strlen("CMS_LINKTARGET[3]")) ? "CMS_LINKTARGET[3]" : '_self'));
Gruß
René
julian83
Beiträge: 8
Registriert: Do 7. Apr 2011, 08:57
Kontaktdaten:

Re: CMS_LINKTARGET[x] standardmäßig auf "_self" setzen

Beitrag von julian83 »

Vielen Dank für die schnelle Antwort! :)

Ich habe die Zeile ausgetauscht -> bekomme nun aber folgendes Ergebnis:

<a href="/privatkunden/vr-kombi2012i.html" target="{LINK_TARGET}">

Der Wert beim Attribut target ist jetzt also nicht mehr leer sondern mit dem Text "{LINK_TARGET}" gefüllt anstelle des gewünschten "_self".

Da ich nicht so viel in PHP programmiere kann ich zwar folgen, dass strlen 0 zurückgibt wenn der String leer ist, aber wie es dann mit dem ? und : weitergeht versteh ich nicht ganz.
Ist dass die Kurzform einer If Abfrage?
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: CMS_LINKTARGET[x] standardmäßig auf "_self" setzen

Beitrag von Spider IT »

Ups, da habe ich wohl einen Fehler im Originalcode übersehen :oops:
Die geschweiften Klammern gehören da nicht mit rein, die sind aber oben im Code im ersten Vorkommen auch da, also musst du nun 2 Stellen korrigieren.

Wenn eine derartige Ausgabe erfolgt, heißt das, dass die Variable im Modul-Template nicht gesetzt wurde.

Gruß
René
julian83
Beiträge: 8
Registriert: Do 7. Apr 2011, 08:57
Kontaktdaten:

Re: CMS_LINKTARGET[x] standardmäßig auf "_self" setzen

Beitrag von julian83 »

:oops: stimmt jetzt hab ich es auch gesehen...
Funktioniert nun wunderbar - wie gewünscht! :)

VIELEN DANK!!
Gesperrt