Seite 1 von 3

Dynamisches erzeugen von Contenido-Platzhaltern

Verfasst: Mi 2. Okt 2013, 13:37
von woddel
Hallo!

Ich hatte mir vor einiger Zeit mal ein schönes Modul gebastelt, das 10 Bildplatzhalter nacheinander erzeugt.

Folgendes Skript hatte ich eingesetzt:
http://forum.contenido.org/viewtopic.php?f=62&t=23603

echo make_cms_type("CMS_IMG",$bildnummer);

Leider passiert da in Version 4.9 garnix und ich bin ahnungslos...

Hat jemand Ahnung oder einen Tip?
Ich bedanke mich schon mal!

Schönen Gruß aus Franken
Woddel

Re: Dynamisches erzeugen von Contenido-Platzhaltern

Verfasst: Mi 2. Okt 2013, 14:17
von xmurrix
Hallo woddel,

probiere doch mal, deine Funktion gegen folgendes zu ersetzen:

Code: Alles auswählen

function make_cms_type($container_type, $container_id) {
    $typeGenerator = new cTypeGenerator();
    return $typeGenerator->getGeneratedCmsTag($container_type, $container_id);
}
Habe das zwar nicht bisher verwendet, aber so müsste es eigentlich funktionieren.

Allerdings wurde in CONTENIDO 4.9 CMS_IMG gegen CMS_IMGEDITOR abgelöst, und dieser CMS-Typ macht beim Speichern eine Weierleitung, was beim Speichern dynamischen genereierter CMS_IMGEDITOR Instanzen eventuell Probleme versursachen kann. Da gibt es einen Beirag dazu unter:
http://forum.contenido.org/viewtopic.php?f=92&t=34229

Gruß
xmurrix

Re: Dynamisches erzeugen von Contenido-Platzhaltern

Verfasst: Sa 18. Okt 2014, 14:32
von Leo
Hallo zusammen,

ich habe die Anpassung mal ausprobiert. Leider funktioniert die Funktion make_cms_type weiterhin in Contenido 4.9 nicht. Hat jemand ne andere Idee?

VG Leonhard

Re: Dynamisches erzeugen von Contenido-Platzhaltern

Verfasst: Sa 18. Okt 2014, 14:58
von Leo
function make_cms_type( $container_type, $container_id ) {

$typeGenerator = new cTypeGenerator();

$tmp = $typeGenerator->getGeneratedCmsTag($container_type, $container_id);

$tmp_output = str_replace('\\\"','"',$tmp);
$tmp_output = stripslashes($tmp_output);

return $tmp_output;
}

Damit geht es! Hoffe, es hilft nicht nur mir weiter. :D

VG Leonhard

Re: Dynamisches erzeugen von Contenido-Platzhaltern

Verfasst: Di 29. Sep 2015, 08:40
von frogli
Ich have festgestellt, dass die Funktion in 4.9.8 nicht mehr funktioniert. Vielleicht könnte das jemand bestätigen und eine passende Lösung anbieten. :)

Hier reichen leider meine autodidaktische EDV-Kenntnisse nicht aus. :roll:

wiener Grüße,
frogli

Re: Dynamisches erzeugen von Contenido-Platzhaltern

Verfasst: Di 29. Sep 2015, 12:40
von Leo
Korrekt!

Soweit ich richtig informiert bin, wurde gerade irgendetwas an der Dateiverwaltung geändert. Zurzeit habe ich aber dafür keine Zeit. Deshalb habe ich mir erst einmal eine einfache Funktion geschrieben, um an die Inhalte zu kommen.

Es ist jedenfalls korrekt, die Funktion make_cms_type läuft mit CMS_IMGEDITOR nicht mehr.

VG

Leonhard

Re: Dynamisches erzeugen von Contenido-Platzhaltern

Verfasst: Do 1. Okt 2015, 08:43
von frederic.schneider_4fb
Guten Morgen,

eigentlich (wenn ich mir den Code gerade so ansehe) müsste es funktionieren. Eure Funktion ruft die Funktion getGeneratedCmsTag() der Klasse cTypeGenerator auf. Diese Funktion ist ein Alias für die private cTypeGenerator-Funktion _processCmsTags() mit den selben Parametern Type und Index. Sofern _processCmsTags() übergebene Typen findet, ruft es für den jeweiligen Content-Typen die Funktionen generateEditCode() im Backend bzw. generateViewCode() im Frontend auf. Beide Funktionen beinhaltet die Klasse cContentTypeImgeditor. Hättet Ihr für mich ggf. Fehlermeldungen o. ä., die helfen würden, das Problem zu lokalisieren?

Re: Dynamisches erzeugen von Contenido-Platzhaltern

Verfasst: Mo 12. Okt 2015, 18:44
von matt.loker
Ich habe das Problem seit der 4.9.8 auch. ich erhalte aber keine Fehlermeldung um dir weiterhelfen zu können.
Was ich herausgefunden habe:
1) Es passiert unter PHP 5.3, 5.4 und 5.6 - daran kann es nicht liegen
2) $ocType->getGeneratedCmsTag("CMS_IMGEDITOR", $idupl); trägt den Wert korrekt in die Datenbank ein
idtype 22
typeid 675
value 205
3) $ocType->getGeneratedCmsTag("CMS_IMG", $idupl); kommt jedoch nicht an der Wert in der Datenbank ran.
Ich habe testweise "CMS_IMG[675]" fix eingetragen und das Bild wurde angezeigt.

Ich hoffe ich konnte dir etwas weiterhelfen.

Viele Grüße
Matt

Re: Dynamisches erzeugen von Contenido-Platzhaltern

Verfasst: Mo 19. Okt 2015, 16:19
von matt.loker
Hallo Frederic,
konntest du dir das Problem in der Zwischenzeit mal anschauen? Wäre echt klasse wenn es hier bald eine Lösung gäbe. Vielen Dank für deine Rückmeldung.

Viele Grüße
Matt

Re: Dynamisches erzeugen von Contenido-Platzhaltern

Verfasst: Mi 28. Okt 2015, 00:45
von Leo
Hallo Frederic, leider erhalte ich ebenfalls keine Fehlermeldung. Vg Leonhard

Re: Dynamisches erzeugen von Contenido-Platzhaltern

Verfasst: Do 29. Okt 2015, 09:05
von frederic.schneider_4fb
Ich bitte um Verzeihung, ich war - aufgrund eines Marathons - eine Woche im Urlaub. Habt Ihr die Möglichkeit mir mal Euer entsprechendes Modul zur Verfügung zu stellen, damit ich es mit Euren Einstellungen testen kann? Gerne auch an frederic.schneider@4fb.de. Danke!

Re: Dynamisches erzeugen von Contenido-Platzhaltern

Verfasst: Do 29. Okt 2015, 11:06
von Leo
Hallo Frederic,

die Funktion sieht bei mir so aus:

Code: Alles auswählen

function make_cms_type( $container_type, $container_id ) {
	$typeGenerator = new cTypeGenerator();
	$tmp = $typeGenerator->getGeneratedCmsTag($container_type, $container_id);

	$tmp_output = str_replace('\\\"','"',$tmp);
    $tmp_output = stripslashes($tmp_output);

    return $tmp_output;
}
und im Modul wird es so eingebunden:

Code: Alles auswählen

$path = make_cms_type("CMS_IMG",$type_id);
oder

Code: Alles auswählen

$path = make_cms_type("CMS_IMGEDITOR",$type_id);
Vielen Dank!

VG

Leonhard

Re: Dynamisches erzeugen von Contenido-Platzhaltern

Verfasst: Do 29. Okt 2015, 12:59
von frederic.schneider_4fb
Ihr bekommt nächste Woche eine Rückmeldung und ggf. Lösungsmöglichkeit!

Re: Dynamisches erzeugen von Contenido-Platzhaltern

Verfasst: Do 5. Nov 2015, 16:15
von rethus
In der Datei class.content.type.imgeditor.php ab Zeile 180 - 188 folgenden Code:

Code: Alles auswählen

if ($editable = false) {
                $content = new cApiContent();
                $content->loadByMany(array(
                    'idartlang' => $idArtLang,
                    'idtype' => $idtype,
                    'typeid' => $id
                ));
                return $content->get('value');
            } else if ($editable = true) {
 
gegen diesen ersetzen:

Code: Alles auswählen

if ($editable == false) {
                $content = new cApiContent();
                $content->loadByMany(array(
                    'idartlang' => $idArtLang,
                    'idtype' => $idtype,
                    'typeid' => $id
                ));
                return $content->get('value');
            } else if ($editable == true) {
 
Hier wurde anstatt der Vergleichsoperattor "==" eine Zuweisung gemacht "="

Re: Dynamisches erzeugen von Contenido-Platzhaltern

Verfasst: Do 19. Nov 2015, 12:47
von Leo
Hallo rethus,

es scheint die Ursache gewesen zu sein. Nach der Anpassung funktioniert die Ausgabe mit make_cms_type("CMS_IMG",1) wieder. Vielen Dank!

Viele Grüße

Leonhard