AdvancedContent cgsimple Inhalt übernehmen

Hilfe zu Modulen und Tags
Post Reply
User avatar
kasimir
Forum Members
Forum Members
Posts: 18
Joined: Thu Sep 02, 2010 3:46 pm
Location: Germany

AdvancedContent cgsimple Inhalt übernehmen

Post by kasimir »

Hallo,

ich versuche jetzt seit gestern und komme einfach nicht weiter vielleicht seht ihr ja sofort wo mein Fehler liegt.

Kurze Problembeschriebung:
Ich habe eine Art Sidebar in der man je nach Bedarf content-Blöcke anlegen kann. Checkbox zum ein und ausschalten, ein Block , oneline als Überschrift und ein Block als Inhalt.
Das klappt soweit auch mit AdvancedContent. Nun wollte ich gerne, dass wenn eine Unterseite angelegt wird der Inhalt dieser Blöcke als Default übernommen wird, so das er aber bei Bedarf aber auch geändert werden kann. Um den Inhalt der Übergeordneten Seite / Content-Blöcke habe ich cgsimple benutzt.

Code: Select all

<!--Den Title der übergeordneten Seite ermitteln-->
{$cgsimple->get_page_title($cgsimple->get_parent_alias('', 'pt')}

{$chkbox1 = '1'}
{$chkbox2 = '0'}
{$chkbox3 = '0'}

{if ($pt !='')} 
             {get_page_content($pt,'checkbox1','chkbox1')}
             {get_page_content($pt,'titelrechts1','title1')}
             {get_page_content($pt,'inhaltrechts1','content1')}
             {get_page_content($pt,'checkbox2','chkbox2')}
             {get_page_content($pt,'titelrechts2','title2')}
             {get_page_content($pt,'inhaltrechts2','content2')}
             {get_page_content($pt,'checkbox3','chkbox3')}
             {get_page_content($pt,'titelrechts3','title3')}
             {get_page_content($pt,'inhaltrechts3','content3')}
}
{/if}
		<div id="rightcolumn">
			<div class="rightbox_wrapper">
		     {content block="checkbox1" block_type="checkbox" default=$chkbox1 label="Rechten Block 1 einschalten" assign="show_r1"}
{if $show_r1=="1"}
 			          <div class="ueberschrift">
				<span>{content  block="titelrechts1" label="Titel rechter Block 1" oneline="true"  size="64" default=$title1 }</span>
                                                     </div>

 			          <div class="text_rechts">
				<span>{content block="inhaltrechts1" label="Text rechter Block 1" default=$content1}</span>
                                                     </div>
{/if}
Allerdings wird mir als Inhalt nicht der Inhalt der Variable sondern der Name der Variablen eingefügt.
Ich habe auch schon mit den verschiedenen Abführungsstrichen herum gespielt aber ich bekomme es nicht hin. >:(
CMSMS 1.8.2
AdvancedContent 0.5
CGSimplSmarty 1.4.5
also immer die aktuellste verfügbare Version
Last edited by kasimir on Tue Sep 21, 2010 10:13 am, edited 1 time in total.
User avatar
kasimir
Forum Members
Forum Members
Posts: 18
Joined: Thu Sep 02, 2010 3:46 pm
Location: Germany

Re: AdvancedContent cgsimple Inhalt übernehmen

Post by kasimir »

So den Fehler habe ich mal eingekreist.

Der erste Fehler liegt wohl an CgSimpleSmarty.

Code: Select all

{$cgsimple->get_page_title($cgsimple->get_parent_alias('',"pt")}
pt:  {$pt}
Die Ausgabe ergibt immer ''
NaN

Re: AdvancedContent cgsimple Inhalt übernehmen

Post by NaN »

Ich werd aus Deinem Code nicht ganz schlau.
Dass es da nicht von Fehlermeldungen wimmelt wundert mich.

1.:

{$cgsimple->get_page_title($cgsimple->get_parent_alias('', 'pt')}

ist falsch. Nicht nur vom Syntax her, sondern auch hinsichtlich dessen was Du machen willst. Du willst den Titel der übergeordneten Seite haben und ihn einer Variablen $pt zuweisen? Dann müsste es so lauten:

{$cgsimple->get_page_title($cgsimple->get_parent_alias(),'pt')}


2.:

{get_page_content($pt,'checkbox1','chkbox1')}

ist falsch.
Richtig müsste es lauten:

{$cgsimple->get_page_content($pt,'checkbox1','chkbox1')}


ABER...


3.:
Was willst Du mit dem Seitentitel?
Die Funktion get_page_content() erwartet als erstes ein Seitenalias, keinen Titel.


Also nochmal kurz zusammengefasst:
Unterseiten sollen in der Sidebar den selben Inhalt anzeigen wie die übergeordnete Seite, richtig? Also brauchst Du als erstes das Seitenalias der übergeordneten Seite:

{$cgsimple->get_parent_alias($page_alias,'parent_alias')}

Damit hättest Du eine Variable namens $parent_alias mit dem Alias der übergeordneten Seite. Diese verwedest Du als nächstes in der Funktion get_page_content():

{$cgsimple->get_page_content($parent_alias,'blockname', 'variablenname'}


ABER die zweite...


4.:

Lies Dir die Hilfe des AdvancedContent Moduls bitte nochmal ganz genau durch.
Und vor allem auch die anderen Beiträge hier im Forum zu diesem Thema.
Denn:

{content block="inhaltrechts1" label="Text rechter Block 1" default=$content1}

Wird nicht das machen, was Du denkst. Und das aus einem ganz einfachen Grund: Im Backend wird das Template nicht vollständig verarbeitet wie im Frontend. Das kann, soll, darf, muss es auch nicht. Es wird lediglich nach {content ... } gesucht um die Blöcke anzuzeigen.
D.h. das ganze {$cgsimple}-Zeug hat leider keinerlei Auswirkungen auf die Darstellung im Backend. Dadurch ist $variablenname im Backend auch keine Variable, sondern bloß Text, der so wie er dort steht ausgegeben wird.

Du wirst ein Plugin oder einen UDT schreiben müssen, das die Inhalte der übergeordneten Seite ausgibt.

Bsp:

Code: Select all


global $gCms;
$cgsimple =& $gCms->modules['CGSimpleSmarty']['object'];

$parent_alias = $cgsimple->get_parent_alias();
return $cgsimple->get_page_content($cgsimple->get_parent_alias(), $params['block']);

im Template kannst Du die Inhaltsblöcke dann so aufrufen:

Code: Select all


{content block="inhaltrechts1" label="Text rechter Block 1" default=":::get_parent_value block='inhaltrechts1':::" smarty=true}


ABER die dritte...


5.:

Bedenke bitte folgendes: Wenn eine Seite hinzugefügt wird, dann hat sie ja noch kein Alias und ist auch noch keiner Seite untergeordnet. D.h. CGSimpleSmarty ist nicht in der Lage das Seitenalias oder den Blockinhalt einer übergeordneten Seite zu ermitteln. (Logisch, oder?)

D.h. im Backend wirst Du damit leider keinen Erfolg haben.
Im Frontend könnte es zumindest so funktionieren, dass, nachdem eine Seite hinzugefügt wurde und keinerlei Inhalte in den einzelnen Blöcken hat, der Inhalt der übergeordneten Seite verwendet wird. Dazu musst Du AdvancedContent aber sagen, dass die Blöcke nicht leer sein dürfen:

Code: Select all


{content block="inhaltrechts1" label="Text rechter Block 1" default=":::get_parent_value block='inhaltrechts1':::" smarty=true allow_none=false}

oder

Code: Select all


{$cgsimple->get_parent_alias($page_alias,'parent_alias')}
{$cgsimple->get_page_content($parent_alias,'blockname', 'variablenname'}
{content block="inhaltrechts1" label="Text rechter Block 1" default="$variablenname" allow_none=false}

D.h. wenn die Inhalte leer sind, dann wird das angezeigt, was bei default angegeben ist.
Aber dazu muss die Seite bereits erstellt worden sein. Im Backend werden die Felder immer leer sein.

Du kannst höchstens eine Reihe von Standardinhalten vordefinieren, die immer als Standardwerte für neue Seiten gelten. Es gibt da leider keine Möglichkeit das ganze dynamisch zu gestalten, weil die Seiten zu diesem Zeitpunkt ja noch nicht existieren.
Post Reply

Return to “Module und Tags”