Seite 1 von 1

Tab "Link auf eine Datei"

Verfasst: Mo 18. Jan 2016, 12:53
von mattmarr
Hallo!

Ich stehe gerade irgendwie auf dem Schlauch.

Wie komme ich an den hinterlegten Link mittels $var->getContent('CMS_LINKEDITOR', 1) vom Tab "Link auf eine Datei"?
"Externer Link" funktioniert ohne probleme.

Contenido 4.9.8 ist Installiert.



Gruß
Matthias

Re: Tab "Link auf eine Datei"

Verfasst: Mo 18. Jan 2016, 18:18
von rethus

Re: Tab "Link auf eine Datei"

Verfasst: Di 22. Nov 2016, 18:19
von rethus
Zugegeben, die Doku ist hier etwas spärlich, daher hier mal ein kleines Beispiel mit Anwendungsfall-Erklärung:

Fall 1:
Wenn du nur den Link als Text Ausgeben möchtest, wie du es im Backend eingegeben hast, kannst du einfach folgendes machen:

Code: Alles auswählen

       $ocType = new cTypeGenerator();     // Object zur Erstellung eines CMS-Typen
       echo stripslashes($ocType->getGeneratedCmsTag("CMS_LINKEDITOR", 25 )); // fügt CMS_LINKEDITOR einem Array hinzu
 
Im Backend erzeugt dies den blauen Button mit der Kette, um hier einen Link zu wählen.
Im Frontend wird der Button automatisch ausgeblendet, und es erscheint nur der Link (wenn du im Auswahlfeld das Feld Titel nicht bestückt hast, wird hier die ganze URL ausgegeben, sonst der Titel den du eingegeben hast)

Fall2:
Du möchtest den Link z.B. um ein Bild herum legen.
Da du die Standardausgabe (siehe Fall1) hier nicht haben möchtest, darf das CMS_LINKEDITOR Element nur im Backend ausgegeben werden.
Im Frontend greifen wir direkt auf das cContentTypeLink-Objekt zu, um die Infos einzeln zu erhalten und uns unsere eigene Verlinkung zu bauen.

Code: Alles auswählen

 
      $art = new cApiArticleLanguage();
      $art->loadByArticleAndLanguageId(cRegistry::getArticleId(), cRegistry::getLanguageId());
      $ocType = new cTypeGenerator();     // Object zur Erstellung eines CMS-Typen

        if (cRegistry::isBackendEditMode()) {  // nur im Contenido-Backend ausgeben
            echo stripslashes($ocType->getGeneratedCmsTag("CMS_LINKEDITOR", 25 )); // fügt CMS_LINKEDITOR einem Array hinzu
        }
// Hier die Ausgabe fürs Frontend
        // load "RAW"-Setting to paste it as Parameter for cContentTypeXXX
        $settings = $art->getContent("CMS_LINKEDITOR", 15);
        $ln = new cContentTypeLinkeditor($settings,25,array());  // $i ist hier die Container-ID. Wenn du in ner FOR-Schleife bist, ist dass meistens i, kann aber bei Einzelanwendung auch als Zahl gesetzt werden.
        $title = $ln->getTitle(); //gibt dir den Titel    // Titel aus dem Objekt "cContentTypeLink" holen
        $url $ln->getLink(); // gibt dir die URL      // URL aus dem Objekt "cContentTypeLink" holen
 
Im Fall2 kannst du dann mit dem entsprechenden Objekt die hier aufgeführten Methoden des Objektes CMS_LINKEDITOR anwenden.
Ich habe dort in der Doku ganz unten auch nochmal ein anderes Code-Beispiel angefügt. Nicht ganz intuitiv, aber wichtig ist, dass cContentTypeLinkeditor als ersten Parameter das ContentType-Objekt (hier $settings) übergeben wird, das zuvor via ArticleLanguage-Object in den ersten beiden Zeilen instanziiert wird.

Hoffe das hilft weiter.