Hi Leute,
kurz vorweg: es geht nicht um verschachtelte BB-Codes.
Und zwar habe ich eine Templateklasse gebaut, die Templates aus der Datenbank holt und Ersetzungen durchführt.
Dann habe ich ein ACP mit einem Modul, um diese Templates zu editieren.
Dieses Modul greift aber auch auf ein Template zu.
Das Problem: Der "content" aus der Datenbank, der ungeparsed in das Template soll, wird auch (teilweise zumindest) geparsed und zwar dadurch, dass preg_replace ja das Template mit Inhalt ersetzt, mehr oder weniger.
Wird mir dann im ACP angezeigt als (im textarea):
Der Code:
$data ist das array, dass die zu ersetzenden Sachen enthält, bsp.
Hat irgend jemand 'ne Idee, wie ich das umgehen kann?
kurz vorweg: es geht nicht um verschachtelte BB-Codes.
Und zwar habe ich eine Templateklasse gebaut, die Templates aus der Datenbank holt und Ersetzungen durchführt.
Dann habe ich ein ACP mit einem Modul, um diese Templates zu editieren.
Dieses Modul greift aber auch auf ein Template zu.
Das Problem: Der "content" aus der Datenbank, der ungeparsed in das Template soll, wird auch (teilweise zumindest) geparsed und zwar dadurch, dass preg_replace ja das Template mit Inhalt ersetzt, mehr oder weniger.
PHP-Code:
{formstart}
<table border="0">
<tr>
<td></td>
<td colspan="3">{ID}</td>
</tr>
<tr>
<td><cms:language name="acp.template.description" /></td>
<td colspan="3">{description}</td>
</tr>
<tr>
<td><cms:language name="acp.template.content" /></td>
<td colspan="3">{content}</td>
</tr>
<tr>
<td><cms:language name="acp.template.content_type" /></td>
<td><cms:language name="active" /></td>
<td><cms:language name="acp.template.php_allowed" /></td>
<td><cms:language name="acp.template.style" /></td>
</tr>
<tr>
<td>{content_type}</td>
<td>{active}</td>
<td>{php_allowed}</td>
<td>{fk_style}</td>
</tr>
</table>
{formend}
PHP-Code:
<form name="templateEdit" ID="templateEdit" action="(entfernt)" method="post" onSubmit="(entfernt)">
<table border="0">
<tr>
<td></td>
<td colspan="3">{ID}</td>
</tr>
<tr>
<td><cms:language name="acp.template.description" /></td>
<td colspan="3">{description}</td>
</tr>
<tr>
<td><cms:language name="acp.template.content" /></td>
<td colspan="3">{content}</td>
</tr>
<tr>
<td><cms:language name="acp.template.content_type" /></td>
<td><cms:language name="active" /></td>
<td><cms:language name="acp.template.php_allowed" /></td>
<td></td>
</tr>
<tr>
<td><input type="text" value="text/html" name="content_type" /></td>
<td>
<select name="active">
<option selected="selected" value="1">Ja</option>
<option value="0">Nein</option>
</select>
</td>
<td>
<select name="active">
<option selected="selected" value="1">Ja</option>
<option value="0">Nein</option>
</select>
</td>
</tr>
</table>
</form>
PHP-Code:
function getTemplate($name, $styleID = 1, $data = array()){
$template = $this->getRawTemplate($name, $styleID);
$data = array_merge($data, $this->globalData);
foreach ($data as $key => $value){
$template = preg_replace("!(\{".$key."\})!imsU", $value, $template);
}
$template = $this->parseCode($template, $name, $styleID);
return $template;
}
Code:
array('content' => [datenbankfeld content])
Kommentar