Jump to content
xt:Commerce Community Forum

{content} erweitert - DatenbankID bestimmt Variablennamen in Template


mlueft

Recommended Posts

Hallo!

Ich bin neu hier und lerne gerade XTCommerce um für einen Kunden die Templates anzupassen. Heute habe ich mir Wissen über den content manager und die Ausgabe von Content angeeignet.

Was ich da sehen musste hat mich echt entsetzt. Da ist es wirklich so, dass der Wert einer Autoinc-Spalte festlegt, wie Variablen im Template heissen - $_content_1,$_content_2,... $_content_n. Ich persönlich finde das echt - nö, da fällt mir nix mehr ein. Sorry Leute.

Das heißt für mich, dass ich jetzt die Templates programmiere, sie dem Kunden ausliefere und nachdem er die Inhalte erstellt hat(Die er momentan nicht testen kann) ich die Templates überarbeiten muss.

So weit so gut.

Mein Kunde hat auch folgenden Wunsch:

Auf jeder Seite gibt es neben dem normalen Content drei Banner, die er pro Contentseite extra festlegen können will.

Mein Ansatz ist folgender:

1. Er legt alle Banner einzeln als content an.

2. Er bildet mit contentblöcken die gewünschte dreiergruppen.

3. In den Metatags(oder ein anderes Feld, dass wir nicht verwenden) schreibt er die ID der Banner-Gruppe, die angezeigt werden soll.

Technisch lässt sich dies momentan nicht umsetzen. Warum? Ich kann zwar an {content} die ID als variable übergeben. Leider habe ich es aber nicht geschafft, die variable $_content_[iD] dynamisch anzusprechen.

Um die Abhängigkeit von der ID aus der Datenbank aufzulösen und um mit {content} arbeiten zu können wenn ich die ID nicht kenne, habe ich meine content-Funktion so erweitert, dass ich ihr mitteilen kann wie die erzeugt variable heißen soll. Wenn man outvar nicht angibt arbeitet content wie gewohnt.

Anwendung:


{content block_id=10 levles=true outvar="myVar"}
{if $myVar|count > 0}
{foreach name=aussen item=box_data from=$myVar}
{$box_data.title}
{/foreach}
{/if}
[/PHP]

Source:

[PHP]function smarty_function_content($params, & $smarty) {
global $_content, $xtPlugin;

$block = (int) $params['block_id'];
$cont = (int) $params['cont_id'];

$nested = false;
if ($params['levels'] =='nested') {
$nested = true;
}

if (!isset($block) && !isset($cont)) return;

if($block!=''){

if (isset($params['levels'])) {
$content_array = $_content->getContentBox($block, $nested);
} else {
$content_array = $_content->get_Content_Links($block);
}

($plugin_code = $xtPlugin->PluginCode('smarty_function_content:content_array')) ? eval($plugin_code) : false;

$outvar = '_content_'.$block;
if ($params['outvar']){
$outvar = $params['outvar'];
}

$smarty->assign($outvar,$content_array);
}

if($cont!=''){
if ($params['is_id']=='false') {
$content = $_content->getHookContent($cont);
} else {
$content = $_content->getHookContent($cont, 'true');
}

($plugin_code = $xtPlugin->PluginCode('smarty_function_content:content')) ? eval($plugin_code) : false;

$outvar = '_content_'.$cont;
if ($params['outvar']){
$outvar = $params['outvar'];
}
$smarty->assign( $outvar, $content );
}

return;
}[/PHP]

Dieser Code ist ungetestet, aber die Idee kommt rüber, denke ich.

lg,

Michael

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...