wir haben seit langen ein Modul bei den 4.8er Versionen im Einsatz, dass ich gerne bei 4.9 nutzen würde, bekomme es aber nicht zum laufen.
Ursprung war mal ein Teil von "Vererbung". Ziel war nicht etwas zu vererben, sondern im Backend soviele Felder zu erzeugen wie in der Konfig eines Artikels eingetragen werden.
Beispiel: in Einem Slider gibt es pro Sliderelement: ein Bild, eine Headline, einen Text. In der Konfig gebe ich ein ich möchte 3 Slider Elemente, dann sehe ich im Backend 3 Boxen mit jeweils Bild, Headline und Text.
Das Ganze bot ziemlich viele Möglichkeiten, da man mit entsprechenden Javascripte auch Tabs usw. ausgeben konnte usw..
anbei nun der Code aus dem Modul (Beispielhaft). Hier habe ich schon Teile ersetzt (https://www.contenido.org/deutsch/techn ... lyser.html)
Input:
Code: Alles auswählen
?>
<table>
<tr>
<td>Anzahl Slider</td>
<td><input type="text" name="<?php echo "CMS_VAR[0]"; ?>" value="<?php echo "CMS_VALUE[0]"; ?>" style="width: 30px;" /></td>
</tr>
</table>
<?php
Code: Alles auswählen
<?php
if ($edit) {
echo '<style>
.camera_wrap {display:block;}
.sliderbackend1{height:400px; width:300px; margin-right:10px; float:left;margin-bottom:15px;}
</style>';
} else {
}
if ($edit) {
echo'<div class="fluid_container" style="z-index:9; width:1100px; margin:0px auto;padding-top:150px;">';
echo'<div class="camera_wrap" id="slider">';
} else {
echo'<div class="fluid_container">';
echo'<div class="camera_wrap" id="slider">';
}
cInclude("frontend", "includes/class.vererbung.php");
$Anzahl = intval("CMS_VALUE[0]");
$vererbung = new Vererbung();
for ($i = 0; $i < $Anzahl; $i ++) {
if ($edit) {
echo '<div class="sliderbackend1" style="font-size:15px; background-color:#f4f4f4; padding:5px; float:left; position:relative; left: 0px; top:0px;">';
echo '<div style="position: absolute;">' . $vererbung->Vererbe(($i + 100), 'CMS_IMGDESCR') . '</div>';
echo '<div style="position: absolute;">' . $vererbung->Vererbe(($i + 100), 'CMS_IMGEDITOR') . '</div>';
echo '<img src="' . strip_tags($vererbung->Vererbe(($i + 100), 'CMS_IMG')) . '" alt="" border="0" width="150px" /><br />';
echo $vererbung->Vererbe(($i + 100), 'CMS_HTMLHEAD') . ' ';
echo $vererbung->Vererbe(($i + 100), 'CMS_HTML') . ' ';
echo "<br />";
echo '</div>';
} else {
echo '<div data-src="' . $vererbung->Vererbe(($i + 100), 'CMS_IMG') . '">';
echo '<div class="camera_caption moveFromBottom">';
echo '<span class="center_helper"></span>';
echo '<span class="center_content">';
echo '<div class="head"><h1>' . $vererbung->Vererbe(($i + 100), 'CMS_HTMLHEAD') . '</h1></div>';
echo '<div class="text">' . $vererbung->Vererbe(($i + 100), 'CMS_HTML') . '</div>';
echo '</span>';
echo '</div>';
echo '</div>';
}
}
echo'</div></div>';
if ($edit) {
echo '<div style="clear:both;"></div>';
} else {
echo '';
}
?>
Includiert wird dann nich die class.vererbung.php deren Code jetzt folgt. Auch hier habe ich schon Teile ersetzt (mit dem Code Analyzer):
Code: Alles auswählen
<?php
class Vererbung {
function __construct() { }
function Vererbe($field = 0, $type = 'CMS_HTML') {
global $sess, $db, $cfg, $idcat, $idart, $client, $lang, $sitKeineVererbung, $edit;
cInclude('classes', 'class.article.php');
#cInclude('classes', 'class.article.collector.php');
$type = strtoupper($type);
if (substr($type, 0, 4) != 'CMS_') {
$type = 'CMS_' . $type;
}
$tmp = '';
$article = new cApiArticleLanguage($idart, $client, $lang);
# Zuerst die Vererbung setzen
if ((isset($_GET['sitVererbungType'])) && ($_GET['sitVererbungType'] == $type) && (isset($_GET['sitVererbungField'])) && ($_GET['sitVererbungField'] == $field)) {
$status = $_GET['sitVererbungValue'];
$sql = 'INSERT INTO `' . $cfg["tab"]["art_lang"] . '_vererbung` (`idartlang`, `index`, `type`, `status`)
VALUES (' . $article->getField('idartlang') . ', ' . $field . ', "' . $type . '", ' . $status . ')
ON DUPLICATE KEY UPDATE `status` = ' . $status . ';';
$db->query($sql);
}
# Vererbung fuer dieses Feld ausgeschaltet?
$sql = 'SELECT `status`
FROM `' . $cfg["tab"]["art_lang"] . '_vererbung`
WHERE ((`idartlang`=' . $article->getField('idartlang') . ')
AND (`index`=' . $field . ')
AND ((`type`="' . $type . '")
OR (`type`="' . $type . 'DESCR")
OR (`type`="' . $type . 'EDIT")))';
if (!$db->query($sql)) {
# Alte Version der Tabelle vorhanden?
$sql = 'ALTER TABLE ' . $cfg["tab"]["art_lang"] . '_vererbung
ADD `type` VARCHAR(20) NOT NULL DEFAULT "CMS_HTML" AFTER `index`';
if (!$db->query($sql)) {
# Erster Aufruf der Klasse, also Tabelle anlegen
$sql = 'CREATE TABLE IF NOT EXISTS `' . $cfg["tab"]["art_lang"] . '_vererbung` (
`idartlang` int(10) NOT NULL DEFAULT 0,
`index` int(10) NOT NULL DEFAULT 0,
`type` varchar(20) NOT NULL DEFAULT "CMS_HTML",
`status` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`idartlang`, `index`, `type`)
) ENGINE=MyISAM;';
$db->query($sql);
$sitKeineVererbung[$type][$field] = 1;
} else {
$sql = 'ALTER TABLE `' . $cfg["tab"]["art_lang"] . '_vererbung` DROP PRIMARY KEY,
ADD PRIMARY KEY (`idartlang`, `index`, `type`)';
$db->query($sql);
$sql = 'SELECT `status`
FROM `' . $cfg["tab"]["art_lang"] . '_vererbung`
WHERE ((`idartlang`=' . $article->getField('idartlang') . ') AND
(`index`=' . $field . ') AND
(`type`="' . $type . '"));';
$db->query($sql);
$db->nextRecord();
$sitKeineVererbung[$type][$field] = ((($db->f('status') == null) || ($db->f('status') == 1)) ? 1 : 0);
}
} else {
if ($db->nextRecord()) {
$sitKeineVererbung[$type][$field] = (($db->f('status') == 1) ? 1 : 0);
} else {
$sitKeineVererbung[$type][$field] = 1;
}
}
# Dann den Feldinhalt holen
$content = $article->getContent($type, $field);
$a_content[$type][$field] = $content;
if ((strlen($content)) && ($content != "0")) {
# Eigener Content, also (nur) diesen zeigen
} else {
$pid = $idcat;
while (($pid != 0) && (!$sitKeineVererbung[$type][$field])) {
$sql = 'SELECT c.parentid, al.idart
FROM ' . $cfg["tab"]["cat"] . ' AS c INNER JOIN ' . $cfg["tab"]["cat_lang"] . ' AS cl ON c.idcat = cl.idcat INNER JOIN ' . $cfg["tab"]["art_lang"] . ' AS al ON cl.startidartlang = al.idartlang
WHERE ((c.idclient=' . $client . ')
AND (cl.idlang=' . $lang . ')
AND (c.idcat=' . $pid . '))';
$db->query($sql);
$db->nextRecord();
$article = new cApiArticleLanguage($db->f('idart'), $client, $lang);
$content = $article->getContent($type, $field);
if ((strlen($content)) && ($content != "0")) {
# Vererbter Content, diesen zuerst zeigen
$edit_orig = $edit;
$edit = false;
$tmp .= $this->Field($db->f('idart'), $field, $type);
$edit = $edit_orig;
break;
} else {
$pid = $db->f('parentid');
}
}
}
$tmp .= $this->Field($idart, $field, $type);
if ($edit) {
$tmp .= $this->showLink($field, $type);
}
return $tmp;
}
function Field($idart, $index, $type) {
global $db;
global $client;
global $lang;
global $cfg;
global $cfgClient;
global $area_tree;
global $sess;
global $perm;
global $area_rights;
global $item_rights;
global $_SESSION;
global $remakeCatTable;
global $remakeStrTable;
global $auth;
global $tpl;
global $edit;
global $a_content;
global $idartlang;
global $idcat;
$tmp = '';
$val = $index;
# Den Code fuer das Feld laden
$sql = 'SELECT *
FROM ' . $cfg["tab"]["type"] . '
WHERE (type="' . $type . '")';
$db->query($sql);
if ($db->nextRecord()) {
$code = $db->f('code');
if (!$edit) {
$new_code = '$article = new Article($idart, $client, $lang); $tmp = urldecode($article->getContent($type, $index));';
$code = str_replace('$tmp = urldecode($a_content["' . $type . '"][$val]);', $new_code, $code);
$code = str_replace('$tmp = urldecode($a_content[\'' . $type . '\'][$val]);', $new_code, $code);
$new_code = '$article = new Article($idart, $client, $lang); $tmp = $article->getContent($type, $index);';
$code = str_replace('$tmp = $a_content["' . $type . '"][$val];', $new_code, $code);
$code = str_replace('$tmp = $a_content[\'' . $type . '\'][$val];', $new_code, $code);
}
eval($code);
$tmp = str_replace('\\\\\\', '', $tmp);
$tmp = str_replace("\'", "'", $tmp);
$tmp = str_replace('border="0" /', 'border="0" style="margin-right: 2px;" /', $tmp);
}
return $tmp;
}
function showLink($field = 0, $type = 'CMS_HTML') {
global $sess, $idart, $contenido, $sitKeineVererbung;
return '<a class="CMS_VERERBUNG_SWITCH" href="' . $sess->url('front_content.php?idart=' . $idart . '&edit=1&contenido=' . $contenido . '&sitVererbungType=' . $type . '&sitVererbungField=' . $field . '&sitVererbungValue=' . (($sitKeineVererbung[$type][$field] == 1) ? '0' : '1')) . '" title="Vererbung an/aus"><img src="images/but_vererbung_' . (($sitKeineVererbung[$type][$field] == 1) ? 'aus' : 'an') . '.gif" alt="" style="margin-right: 2px; border: 0px none;" /></a>';
}
}
?>
Meine Kenntnisse sind leider nicht ausreichend um hier noch durchzublicken. Veilleicht kann jemand helfen. Oder die Funktion der Elemente die sich ab 100 um 1 erhöhen (aus der php-Datei) gleich ins Modul zu implementieren.
VieleN Dank
lunsen_de