Modul-Konfiguration im Editor Modus

Gesperrt
Ronin570
Beiträge: 32
Registriert: Mi 5. Jan 2011, 14:50
Kontaktdaten:

Modul-Konfiguration im Editor Modus

Beitrag von Ronin570 » Fr 13. Feb 2015, 18:34

Hi,

weiß jemand wie die Konfiguration eines Moduls auch im Editor Modus eines Artikels angezeigt und ausgeführt werden kann?
z.B. mit if ($edit) { } ?

also ich habe z.b.

Input:

Code: Alles auswählen

?>
<?php echo "Variable:"; ?>
<input type="text" name="<?php echo "CMS_VAR[0]"; ?>" value="<?php echo "CMS_VALUE[0]"; ?>">
<input accesskey="s" type="image" src="images/but_ok.gif" onclick="document.getElementById('tpl_form').action = document.getElementById('tpl_form').action+'&back=true'">
<?php
Output:

Code: Alles auswählen

<?php
$Variable= "CMS_VALUE[0]";
echo $Variable;
?>
wie kann ich denn den Input im Editor Modus anzeigen und ausführen? Oder geht das gar nicht? Mir fehlen ein paar Basis php Kenntnisse aber ich bin dabei zu lernen ;)

Für jeden Tip dankbar.

Grüße

R

Oldperl
Beiträge: 4085
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Modul-Konfiguration im Editor Modus

Beitrag von Oldperl » Sa 14. Feb 2015, 10:33

Hallo Ronin570,

in der 4.8er Version geht das folgender Maßen

Code: Alles auswählen

<?php
$variable = "CMS_VALUE[0]";
// Ausgabe nur im Backend-Artikel-Editor
if($contenido && $edit) {
    echo $variable;
}
?>
$contenido ist die Session-Variable des Backend und $edit ist nur im Artikel-Editor gesetzt. Übersetzt heißt das dann quasi - Bin ich im Backend ($contenido) und im Artikel-Editor ($edit) von CONTENDIDO? Dann gib mir die Variable, die ich mit dem Wert aus CMS_VALUE gefüllt habe, aus.

In der 4.9er hat sich das etwas geändert, dort gibt es eine Abfragemöglichkeit über die cRegistry-Klasse

Code: Alles auswählen

<?php
$variable = "CMS_VALUE[0]";
// Ausgabe nur im Backend-Artikel-Editor
if(cRegistry::isBackendEditMode()) {
    echo $variable;
}
?>
Gruß aus Franken

Ortwin
CONTENIDO 4.9 Entwickler-Handbuch - Publikation auf medium.com zu meinem angedachten Entwickler-Buch zu CONTENIDO 4.9
ConLite 2.0, alternatives und stabiles Update von Contenido 4.8.x
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Ronin570
Beiträge: 32
Registriert: Mi 5. Jan 2011, 14:50
Kontaktdaten:

Re: Modul-Konfiguration im Editor Modus

Beitrag von Ronin570 » Sa 14. Feb 2015, 16:23

Hi Ortwin,

danke für die Erklärung, jetzt ist schon etwas klarer. Aber ich möchte die Variable auch im Editor Modus übergeben können. In dem speziellen Fall geht es um eine simple Bildergalerie. d.h. die Ordnerauswahl würde ich gerne im Editor Modus durchführen. Das Header Modul z.B. macht das ja. Da hab ich dann einen Button mit dem ich zur Auswahl komme (Leider kann ich damit nur ein einziges Bild anzeigen). Ich glaube in 4.9 sind ein paar mehr Module drin, die direkt im Editor konfiguriert werden. Ich habe mir den Code angeschaut aber nicht wirklich Plan was da abgeht.
Die Frage kam auf, da ich gerade an einem Archiv arbeite. Das Archiv hat einige Artikel und jeder Artikel hat mittlerweile 9 Bildergalerie Module. Wenn die über "Konfiguration" befüllt werden, kennt sich ja niemand mehr aus welche Bildergalerie wo und was ist. Die Bezeichnung von Modulen in der Konfiguration ist nur "Module in container : Bildergalerie". Würde das auch im "Editor Modus" gehen, wäre das um einiges einfacher und intuitiver zu steuern. Dann sieht ein Redakteuer wo im Layout das Modul hängt. Ich frage allgemein, da es nicht nur ein Bildergalerie Modul betrifft. Später vielleicht die Möglichkeit ein Modul auszuwählen (z.B. galerie-modul, slideshow-modul, ...). Teile dazu hab ich hier im Forum schon gefunden.

Im Grunde genommen also ein Button der mir die Konfiguration des Moduls aufruft oder ohne Button direkt im Editor Modus. Gibt es sowas irgenwo schon oder in ähnlicher weise (wie z.b. das Header Modul)? Muss man dafür in den Core eingreifen oder kann man das direkt über ein Modul regeln oder wäre das ein Plugin?

Oldperl
Beiträge: 4085
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Modul-Konfiguration im Editor Modus

Beitrag von Oldperl » So 15. Feb 2015, 09:44

Hallo Ronin570,

grundsätzlich geht das sowohl in 4.8 als auch in der 4.9. Bei beiden heißt das Zauberwort "CMS-TYPES", so wie die Standard Typen CMS_TEXT oder CMS_HTML kann man für beide Versionen eigene CMS-Typen definieren. Diese bieten dann die Möglichkeit eine umfangreiche Konfiguration aufzubauen.
Nur das vorgehen ist ein wenig unterschiedlich, da bei der 4.8er, ohne den Plugin-Manager der 4.9er, doch einiges umständlicher und aufwendiger umzusetzen ist. Auch gibt es in der 4.9er eine Elternklasse von der man einen neuen CMS-Typ ableiten und per Plugin instanzieren kann.

Du hörst aber sicher schon das es trotzdem noch recht viel Arbeit ist. Will man nur 1-2 Werte konfigurieren so würde ich persönlich diese im Modul selbst abfragen und in einer Artikel-Variablen (Property) speichern. Dies ist relativ einfach zu integrieren und reicht in der Regel für einfache Einstellungen bis hin zu Pfadangaben vollkommen aus.
Möglich ist hier aber auch immer einen CMS-Typ wie CMS_TEXT zum Speichern von Werten zu "missbrauchen". Ich weiß nicht ob ab der 4.9er der angedachte CMS-Typ CMS_RAW bereits dabei ist, denn der bietet sich für solche Sachen dann an. Hier gibt es dann auch eine Möglichkeit diese Typen per Klassen-Methode zu lesen und zu schreiben.

Gruß aus Franken

Ortwin
CONTENIDO 4.9 Entwickler-Handbuch - Publikation auf medium.com zu meinem angedachten Entwickler-Buch zu CONTENIDO 4.9
ConLite 2.0, alternatives und stabiles Update von Contenido 4.8.x
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Ronin570
Beiträge: 32
Registriert: Mi 5. Jan 2011, 14:50
Kontaktdaten:

Re: Modul-Konfiguration im Editor Modus

Beitrag von Ronin570 » Mo 16. Feb 2015, 14:48

Hi,

ich habe das Header Modul kurz so umgebaut, dass alle Bilder des ausgewählten Ordners anzeigt werden. Kann also als Basis für eine Bildergalerie genutzt werden, die im Editor Modus konfigurierbar ist. Für meine Zwecke reicht das vorerst.

Aber, weiß jemand wie ich den Pfad zum Bilder Ordner direkt bekomme? Ich bastel mir den hier aus dem Bildpfad $sImg zusammen. Nicht wirklich gut gelöst. Eigentlich müsste es ja ohne $sImg gehen.

Output:

Code: Alles auswählen

<?php


if (!isset($tpl) || !is_object($tpl)) {
    $tpl = new Template();
}

if ($edit) {
    echo '<p style="background: green;">Gallery</p>'; 
}

try {


    $sImgEdit = "CMS_IMGDESCR[1]";
    $sImg = "CMS_IMG[1]";
    
    if ($contenido && $edit) {
        echo '<div id="modHeaderImgEdit" style="display: inline-block;">'.$sImgEdit.'</div>';
    }   
    
    if ($sImg != '') {
    
    $folder_url = dirname($sImg);   
    $folder_url_strip1 = parse_url($folder_url);
    $folder_url_strip2 = $folder_url_strip1['path'];
    $folder_url_strip3 = str_replace("/cms/", "", $folder_url_strip2); 
       
    $folder_dir = scandir($folder_url_strip3);
    $files = array_diff($folder_dir, array('.', '..'));
    
    $tpl->reset();
    foreach($files as $datei)
    {
    $tpl->set('d', 'image', $datei);
    $tpl->set('d', 'url', $folder_url_strip3."/");
    $tpl->next();
    }
    $tpl->generate('templates/tmp_gallery.html');
    
    }  
    
    else { if ($edit) {
    echo '<div style="background: red; display: inline-block;">no Picture selected</div>'; 
}}
    
} catch (InvalidArgumentException $eI) {
    echo 'Some error occured: ' . $eI->getMessage() . ': ' . $eI->getFile() . ' at line '.$eI->getLine() . ' ('.$eI->getTraceAsString().')';
} catch (Exception $e) {
    echo 'Some error occured: ' . $e->getMessage() . ': ' . $e->getFile() . ' at line '.$e->getLine() . ' ('.$e->getTraceAsString().')';
}

?>
Template Beispiel: tmp_gallery.html

Code: Alles auswählen

<div>               
<!-- BEGIN:BLOCK --> 
<img src="{url}{image}" alt="" />
<!-- END:BLOCK -->
</div>
Die Konfiguration des Moduls kann in der include.CMS_IMG.php angepasst werden.

Werd mich demnächst mal näher damit beschäftigen. Nochmal danke Ortwin für die Erklärung.

Grüße

R

Gesperrt