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.
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.
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:
oder
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