Container IDs dynamisch erstellen
-
- Beiträge: 86
- Registriert: Mi 2. Jun 2004, 16:01
- Wohnort: Bochum
- Kontaktdaten:
Re: Container IDs dynamisch erstellen
Morgen OliverL,
ganz ehrlich... Du bist mein persönlicher Held!
Ich danke dir wirklich vielmals. Es funktioniert nun einwandfrei und macht genau das was es soll.
Werde den Code nun noch in das Contenido-Wiki posten, damit alle etwas davon haben.
Nochmals vielen vielen Dank.
MfG
Christoph
ganz ehrlich... Du bist mein persönlicher Held!
Ich danke dir wirklich vielmals. Es funktioniert nun einwandfrei und macht genau das was es soll.
Werde den Code nun noch in das Contenido-Wiki posten, damit alle etwas davon haben.
Nochmals vielen vielen Dank.
MfG
Christoph
Re: Container IDs dynamisch erstellen
Hallo,
ich habe den Code etwas angepasst. Wenn nämlich die Datenbank-Tabelle nicht con_type heißt, funktioniert das Script nicht mehr. Ich habe die 4 Zeile so geändert: $sql = "SELECT * FROM ".$cfg['sql']['sqlprefix']."_type WHERE type = '$container_type'";
Viele Grüße
Leonhard
ich habe den Code etwas angepasst. Wenn nämlich die Datenbank-Tabelle nicht con_type heißt, funktioniert das Script nicht mehr. Ich habe die 4 Zeile so geändert: $sql = "SELECT * FROM ".$cfg['sql']['sqlprefix']."_type WHERE type = '$container_type'";
Code: Alles auswählen
function make_cms_type( $container_type, $container_id ) {
global $a_content, $idartlang, $idart, $idcat, $lang, $db, $edit, $sess, $client, $cfg, $cfgClient;
$sql = "SELECT * FROM ".$cfg['sql']['sqlprefix']."_type WHERE type = '$container_type'";
$db->query($sql);
$db->next_record();
$cms_code = $db->f("code");
$cms_idtype = $db->f("idtype");
if( !$edit ) {
$db2 = new DB_Contenido;
$sql = "SELECT * FROM ".$cfg["tab"]["content"]." AS A, ".$cfg["tab"]["art_lang"]." AS B, ".$cfg["tab"]["type"]." AS C
WHERE A.idtype = C.idtype AND A.idartlang = B.idartlang AND B.idart = '".Contenido_Security::toInteger($idart)."' AND B.idlang = '".Contenido_Security::escapeDB($lang, $db)."' AND
A.idtype = '".$cms_idtype."' AND A.typeid = '".$container_id."'";
$db2->query($sql);
$db2->next_record();
$a_content[$db2->f("type")][$db2->f("typeid")] = $db2->f("value");
}
$val = $container_id;
eval($cms_code);
$tmp_output = str_replace('\\\"','"',$tmp);
$tmp_output = stripslashes($tmp_output);
return $tmp_output;
}
Leonhard
Re: Container IDs dynamisch erstellen
THX. eigentlich standard bei mir aber hab ich hier mal vergesessen.
Habs in meinem Post und im Wiki geändert.
mfg oliverL
Habs in meinem Post und im Wiki geändert.
mfg oliverL
Re: Container IDs dynamisch erstellen
Wobei das doch genaugenommen
heißen müsste, oder?
Habe es mal im Wiki angepasst.
Grüße
mfweb
Code: Alles auswählen
$sql = "SELECT * FROM ".$cfg["tab"]["type"]." WHERE type = '$container_type'";
Habe es mal im Wiki angepasst.
Grüße
mfweb
Immer mal ein Blick wert: Contenido Wiki ... auch schreibender Zugriff ist erlaubt!
Re: Container IDs dynamisch erstellen
jo ... thx fürs wiki update.
mfg OliverL
mfg OliverL
Re: Container IDs dynamisch erstellen
Hallo Leute!
ich stelle mich echt ungeschickt an aber ich bringe dieses Modul nicht zum laufen. Wo soll ich diese Funktion genau schreiben? wie kann ich sie auslagern, damit ich sie für verschiedene module, wie Picture, Text, Headline...verwenden könnte. Bis jetzt hab ich die funktion direkt in ein modul reinkopiert und....verschwand die ganze Seite, steht nur eine weisse Webseite Was mache ich falsch?
Danke Ginche
ich stelle mich echt ungeschickt an aber ich bringe dieses Modul nicht zum laufen. Wo soll ich diese Funktion genau schreiben? wie kann ich sie auslagern, damit ich sie für verschiedene module, wie Picture, Text, Headline...verwenden könnte. Bis jetzt hab ich die funktion direkt in ein modul reinkopiert und....verschwand die ganze Seite, steht nur eine weisse Webseite Was mache ich falsch?
Danke Ginche
Re: Container IDs dynamisch erstellen
Hallo Gemeinde,
kann es sein, dass die aktuelle WikiFunktion (http://www.contenido-wiki.org/wiki/inde ... ent.2Cn.29) nicht mit dem Typen "CMS_FILELIST" funktioniert?
Ich arbeite viel mit diesem Snipped, aber die Filelist gibt dies aus:
In der Funktion habe ich mal die variablen ausgegeben:
Leider passieren solche Dinge immer wenn man Zeitdruck hat, daher freue ich mich sehr über Mithilfe und Tipps, woran das liegen mag.
Vielen Dank,
qualtext
kann es sein, dass die aktuelle WikiFunktion (http://www.contenido-wiki.org/wiki/inde ... ent.2Cn.29) nicht mit dem Typen "CMS_FILELIST" funktioniert?
Ich arbeite viel mit diesem Snipped, aber die Filelist gibt dies aus:
Code: Alles auswählen
$filelist = make_cms_type('CMS_FILELIST',1);
print_r($filelist);
//ergibt: ";?>getAllWidgetOutput(); ?>
Code: Alles auswählen
//--sql:
SELECT * FROM con_type WHERE type = 'CMS_FILELIST'
//--cms_code:
$tmp = $a_content["CMS_FILELIST"][$val]; $oCmsFileList = new Cms_FileList($tmp, $val, $idartlang, $editLink, $cfg, $db, $belang, $client, $lang, $cfgClient, $sess); if($edit){ $tmp = $oCmsFileList->getAllWidgetEdit(); }else{ $tmp = $oCmsFileList->getAllWidgetView(); }
//--cms_idtype:
21
//--edit:
true
Vielen Dank,
qualtext
Re: Container IDs dynamisch erstellen
Ich hab mich nochmal durchgefranzt...
Der Fehler liegt nicht in der Funktion make_cms_type(). Eher aber in der Filelistclass.
Die public function getAllWidgetView() in der class Cms_FileList gibt ihren sprintf falsch aus/bricht ab:
hier kommt nur ein abgebrochenes Stückchen raus, nämlich das (siehe vorheriger Beitrag):
Da ich mit make_cms_type('CMS_FILELIST',1) sowieso nur an die Schaltfläche zur Auswahl der Dateien und Sortierung ranwill, habe ich in der class die Function getAllWidgetEdit() kopiert, umbenannt und den Aufruf der getAllWidgetView() deaktivert:
Am Core rumbasteln ist nicht updatesicher... trotzdem muss ich das so machen.
Dadurch die Funktion make_cms_type() in der DB nachschaut, wie das CMS_Element aufgebaut ist, habe ich diese angepasst:
Damit bekomme ich die Schaltfläche für die Filelist. Funktioniert super.
Dadurch ich aber jetzt an der Class Änderungen gemacht habe, suche ich immer noch nach einer Lösung, die besser ist.
Ist das sprintf wirklich kaputt? Oder wird das nur bei mir falsch ausgegeben?
Und wieso existiert diese Funktion so überhaupt?
Naja,
qualtext.
Der Fehler liegt nicht in der Funktion make_cms_type(). Eher aber in der Filelistclass.
Die public function getAllWidgetView() in der class Cms_FileList gibt ihren sprintf falsch aus/bricht ab:
Code: Alles auswählen
public function getAllWidgetView() {
$sCode = '\";?><?php
$oFileList = new Cms_FileList(\'%s\', %s, 0, "", $cfg, null, "", $client, $lang, $cfgClient, null);
echo $oFileList->getAllWidgetOutput();
?><?php echo \"';
$sCode = sprintf($sCode, $this->sContent, $this->iId);
return $sCode;
}
Code: Alles auswählen
";?>getAllWidgetOutput(); ?>
Code: Alles auswählen
public function getAllWidgetEdit() {
/* ... */
$sCode = $oTpl->generate($this->aCfg['path']['contenido'].'templates/standard/template.cms_filelist_edit.html', 1);
return $this->getAllWidgetView( true ) . $this->encodeForOutput($sCode);
}
public function getAllWidgetEdit2() {
/* ... */
$sCode = $oTpl->generate($this->aCfg['path']['contenido'].'templates/standard/template.cms_filelist_edit.html', 1);
//alt: return $this->getAllWidgetView( true ) . $this->encodeForOutput($sCode);
return $this->encodeForOutput($sCode);
}
Dadurch die Funktion make_cms_type() in der DB nachschaut, wie das CMS_Element aufgebaut ist, habe ich diese angepasst:
Code: Alles auswählen
function make_cms_type( $container_type, $container_id ) {
global $a_content, $idartlang, $idart, $idcat, $lang, $db, $edit, $sess, $client, $cfg, $cfgClient;
$sql = "SELECT * FROM ".$cfg["tab"]["type"]." WHERE type = '$container_type'";
$db->query($sql);
$db->next_record();
$cms_code = $db->f("code");
$cms_idtype = $db->f("idtype");
/*neu*/
if($container_type=='CMS_FILELIST') {
//function getAllWidgetEdit2() has another return val
$cms_code = str_replace('getAllWidgetEdit()','getAllWidgetEdit2()', $cms_code);
}
if( !$edit ) {
$db2 = new DB_Contenido;
$sql = "SELECT * FROM ".$cfg["tab"]["content"]." AS A, ".$cfg["tab"]["art_lang"]." AS B, ".$cfg["tab"]["type"]." AS C
WHERE A.idtype = C.idtype AND A.idartlang = B.idartlang AND B.idart = '".Contenido_Security::toInteger($idart)."' AND B.idlang = '".Contenido_Security::escapeDB($lang, $db)."' AND
A.idtype = '".$cms_idtype."' AND A.typeid = '".$container_id."'";
$db2->query($sql);
$db2->next_record();
$a_content[$db2->f("type")][$db2->f("typeid")] = $db2->f("value");
}
$val = $container_id;
eval($cms_code);
$tmp_output = str_replace('\\\"','"',$tmp);
$tmp_output = stripslashes($tmp_output);
return $tmp_output;
}
Dadurch ich aber jetzt an der Class Änderungen gemacht habe, suche ich immer noch nach einer Lösung, die besser ist.
Ist das sprintf wirklich kaputt? Oder wird das nur bei mir falsch ausgegeben?
Und wieso existiert diese Funktion so überhaupt?
Naja,
qualtext.