ich habe wieder mal ein kleines modülchen. und zwar handelt es sich um eine erweiterung des normalen cms_html-moduls. eingesetzt wird das modul einfach anstelle des normalen html-moduls. wenn man einen externen inhalt (also von einem anderen artikel) einbinden möchte, braucht man lediglich foreignContent zu schreiben, das wort zu selektieren und einen link zu erstellen auf die seite, von der der inhalt verwendet werden soll. der cms_html-inhalt des entsprechenden artikels wird dann anstelle des wortes foreignContent ausgegeben.
für dieses modul benötigt man folgenden code. dieser ist in einer datei beliebigen namens im verzeichnis 'contenido/classes' abzulegen.
Code: Alles auswählen
<?php
class foreignContentExtended {
function foreignContentExtended($content, & $db) {
global $lang;
if (!is_object($db)) {
$this->db = new DB_Contenido();
} else {
$this->db = $db;
}
$this->content = $content;
$this->lang = $lang;
}
function getHTML($index, $idart) {
global $cfg;
$this->db->query("" .
"SELECT c.value FROM {$cfg['tab']['art_lang']} AS b " .
"LEFT JOIN {$cfg['tab']['content']} AS c ON b.idartlang = c.idartlang " .
"LEFT JOIN {$cfg['tab']['type']} AS d ON c.idtype = d.idtype " .
"WHERE " .
" b.idart = {$idart} " .
" AND b.idlang = {$this->lang} " .
" AND d.type = 'CMS_HTML' " .
" AND c.typeid = $index " .
"");
if ($this->db->next_record()) {
return urldecode($this->db->f('value'));
}
return '';
}
function getOutput() {
$pattern = "|<a[\w\s]*href\s*=\s*\"[^\"]*idart=([0-9]*)[^>]*>\s*foreignContent\s*([0-9]*)\s*</a>|i";
preg_match_all($pattern, $this->content, $match, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($match[0]); $i++) {
$idart = (int) $match[1][$i];
$index = (int) $match[2][$i];
if ($match[2][$i] == '') {
$index = 1;
}
if ($idart > 0 && $index > 0) {
$this->content = str_replace($match[0][$i], $this->getHTML($index, $idart), $this->content);
}
}
return $this->content;
}
}
?>
Code: Alles auswählen
<?php
cInclude('classes', 'foreignContentExtended.class.inc.php');
$fContent = new foreignContentExtended("CMS_HTML[1]", $db);
if ($contenido && ($view == "edit")) {
echo "<div class=\"content\">"."CMS_HTML[1]"."</div>";
} else {
echo "<div class=\"content\">". $fContent->getOutput() ."</div>";
}
?>
man kann dieses modul genau so verwenden wie das normale html-modul. der performance-nachteil ist marginal und sollte unter normalbedingungen keine rolle spielen.
mfg,
anreas