hallo zusammen
vorweg: ich bin nicht der geübteste cmsms-user und stehe daher wegen einer kleinigkeit an...
wenn ich im template mit "{$content_obj->GetPropertyValue('extra1')}" das extra1 attribut auslesen will, kann smarty den code nicht mehr compilieren.
ich habe etwas gelesen von "loadprops=1" aber konnte es leider nicht implementieren, dass es funktioniert. kann mir irgendwer n tipp geben, von was der error ausgelöst wird, oder wie ich loadprops einfügen muss um die attribute auslesen zu können?
besten dank schon einmal an alle!
grüsse flo
extra seitenattr. löst error aus
Re: extra seitenattr. löst error aus
lösung gefunden:
alle attribute einer seite über den UDT "get_content_props" auslesen:
call im template:
z.B: alert('{get_content_props fields="extra1"}');
see: UDT description
UDT:
grüsse flo
alle attribute einer seite über den UDT "get_content_props" auslesen:
call im template:
z.B: alert('{get_content_props fields="extra1"}');
see: UDT description
UDT:
Code: Select all
global $gCms;
$db =& $gCms->GetDb();
$content_id = $gCms->variables['pageinfo']->content_id;
$fields = array();
$separator = '<br />';
$result = array();
if( isset($params['content_id']) ) {
$content_id = trim($params['content_id']);
}
if( isset($params['fields']) ) {
$fields = explode(',',trim($params['fields']));
}
if( isset($params['separator']) ) {
$separator= $params['separator'];
}
$i=0;
$query = "SELECT prop_name,content FROM ".cms_db_prefix()."content_props WHERE content_id=".$content_id;
if(!empty($fields)) {
$query .= " AND (";
foreach($fields as $f)
{
$i++;
$query .= "prop_name='".$f."'";
if($i<count($fields))
$query .= " OR ";
}
$query .= ")";
}
$dbresult = $db->Execute($query);
while($dbresult && $row = $dbresult->FetchRow()) {
$result[$row['prop_name']]['fieldname'] = $row['prop_name'];
$result[$row['prop_name']]['data'] = $row['content'];
}
// assign vars to smarty
if( isset($params['assign']) ) {
$smarty->assign(trim($params['assign']), $result);
}
// or just print out the result
else {
$i=0;
foreach($result as $res) {
$i++;
echo $res['data'];
if($i<count($result))
echo $separator;
}
}
Re: extra seitenattr. löst error aus
Warum willst du das über einen extra udt machen?florian wrote: wenn ich im template mit "{$content_obj->GetPropertyValue('extra1')}" das extra1 attribut auslesen will, kann smarty den code nicht mehr compilieren.
Smarty kennt die Variable bereits, unter {$node->extra1} - wäre also doppelt gemoppelt

Yep, ist seit der 1.6 etwas anders - du musst dem Aufruf des MenuManagers "loadprops=1" hinzufügen.ich habe etwas gelesen von "loadprops=1" aber konnte es leider nicht implementieren, dass es funktioniert. kann mir irgendwer n tipp geben, von was der error ausgelöst wird, oder wie ich loadprops einfügen muss um die attribute auslesen zu können?
Re: extra seitenattr. löst error aus
danke cyberman für deine antwort.
mit "doppelt gemoppelt" hast du schon recht, aber ich brauche das extra1 als "gallery_constructor" im template (ich greife auf den namen einer datenbank zu welcher im extra1 seht). den menumanager wird dabei nicht aufgerufen.
mit "doppelt gemoppelt" hast du schon recht, aber ich brauche das extra1 als "gallery_constructor" im template (ich greife auf den namen einer datenbank zu welcher im extra1 seht). den menumanager wird dabei nicht aufgerufen.
Re: extra seitenattr. löst error aus
Ich geh mal davon aus, dass du grundsätzlich auf der Seite den MenüManager drauf hast.
Dann könntest auch du den $node->extra1 der aktuellen Seite einer separaten Smarty-Variable zuweisen, die dann unabhängig von einem MenüManager-Aufruf zur Verfügung steht und sparst den zusätzlichen UDT.
Dann könntest auch du den $node->extra1 der aktuellen Seite einer separaten Smarty-Variable zuweisen, die dann unabhängig von einem MenüManager-Aufruf zur Verfügung steht und sparst den zusätzlichen UDT.
Re: extra seitenattr. löst error aus
aber wieso ist dies überhaupt so? ich meine, dass die attribute doch nicht nur im menumanager gebraucht werden. dann muss ich zwangsläufig einen menumanager implementieren, damit ich von den site-attr. gebrauch machen kann (ausser mit dem UDT)... gibt es dafür einen grund? wieso wurde das "loadprops='1'" überhaupt eingeführt :-S das ist mir rätselhaft.
Re: extra seitenattr. löst error aus
Dafür sind sie aber primär vorgesehen.florian wrote: aber wieso ist dies überhaupt so? ich meine, dass die attribute doch nicht nur im menumanager gebraucht werden.
Im Prinzip ja. Der MenüManager stellt die Daten für Smarty (=die verwendete Template-Engine) bereit und nur dann können diese Daten in Templates verwendet werden.dann muss ich zwangsläufig einen menumanager implementieren, damit ich von den site-attr. gebrauch machen kann (ausser mit dem UDT)... gibt es dafür einen grund?
Allerdings werden für ein paar dieser Daten bereits Tags mitgeliefert, die einzelne Felder abfragen wie zum Beispiel {title} oder {menu_text}.
Aus Performance-Gründen - ein Standardmenü benötigt die zusätzlichen Felder nicht unbedingt.wieso wurde das "loadprops='1'" überhaupt eingeführt
Re: extra seitenattr. löst error aus
Doch wird er.florian wrote: den menumanager wird dabei nicht aufgerufen.
Irgendwie muss ja das Seitenmenü zustande kommen.
Der Menü-Tag {menu ... } und der Modul-Aufruf {cms_module module="MenuManager" ... } ist im Prinzip genau dasselbe
Oder hast Du etwa gar kein Menü auf der Seite?
Brauchst Du nur das Extra-Attribut der aktuellen Seite oder aller Seiten?
Und was genau meinst Du damit?florian wrote: wenn ich im template mit "{$content_obj->GetPropertyValue('extra1')}" das extra1 attribut auslesen will, kann smarty den code nicht mehr compilieren.
Kommt da eine Fehlermeldung?
Wie sieht die aus?
Die meiner Meinung nach beste Lösung ist die, die Cyberman vorgeschlagen hat.
Das Menü mit "loadprops=1" aufrufen und das Menü-Template so anpassen, dass das Extrafeld eines Menüpunktes einer Template-Variablen zugewiesen wird.
Bsp. (simple_navigation):
Somit hast Du im Template eine Variable namens {$extra1}.{if $count > 0}
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string="" times=$node->depth-$node->prevdepth}
{elseif $node->depth prevdepth}
{repeat string="" times=$node->prevdepth-$node->depth}
{elseif $node->index > 0}
{/if}
{if $node->current == true}
Current page is {$node->hierarchy}: {$node->menutext}
{if isset($node->extra1) && $node->extra1 != ''}
{assign var="extra1" value=$node->extra1}
{/if}
{elseif $node->parent == true}
url}"{if $node->accesskey != ''} accesskey="{$node->accesskey}"{/if}{if $node->tabindex != ''} tabindex="{$node->tabindex}"{/if}{if $node->titleattribute != ''} title="{$node->titleattribute}"{/if}>{$node->hierarchy}: {$node->menutext}
{elseif $node->type == 'sectionheader'}
{$node->menutext}
{elseif $node->type == 'separator'}
{else}
url}"{if $node->accesskey != ''} accesskey="{$node->accesskey}"{/if}{if $node->tabindex != ''} tabindex="{$node->tabindex}"{/if}{if $node->titleattribute != ''} title="{$node->titleattribute}"{/if}{if $node->target != ''} target="{$node->target}"{/if}>{$node->hierarchy}: {$node->menutext}
{/if}
{/foreach}
{repeat string="" times=$node->depth-1}
{/if}