come ereditare i campi di una sezione nelle pagine figlie Topic is solved

La discussione sul CMS Made Simple in italiano.

Moderator: magallo

Post Reply
axxe16

come ereditare i campi di una sezione nelle pagine figlie

Post by axxe16 »

Ciao a tutti,
nel caso possa servire a qualcuno vi posto brevemente come far ereditare il valore di alcuni campi alle pagine figlie.

PROBLEMA: ho una testata grafica caricata come immagine di sfondo dell'header della sezione in cui mi trovo
una cosa del genere:

Code: Select all

{content_image block='testata' assign='testata'}
<div id="header" style="background-image:url({$testata})">
{cms_selflink page='home' text="$sitename" title ="Torna all'Homepage"}
</div>
SOLUZIONE:
Per recuperare nei figli questo parametro dovrò installare due plugin: content_dump e il buon vecchio section_title. Quest'ultimo non supporta il parametro assign quindi l'ho leggermente modificato.

Nei template delle pagine figlie scriverò una cosa del genere:

Code: Select all

{sectiontitle  levels=2 assign='sezione'}
{content_dump extensions="testata" assign="dumpTestata"}
{foreach from=$dumpTestata item=dumpTestata}
	{if $dumpTestata->content->alias == $sezione}
    {assign var='testata' value=$dumpTestata->extensions->testata->data}
    {/if}
{/foreach}
<div id="header" style="background-image:url({$testata});"> 
{cms_selflink page='home' text="$sitename" title ="Torna all'Homepage"}
</div>
il parametro level di sectiontitle ci permette di decidere quale livello di gerarchia utilizzare. Come dicevo prima a sectiontitle manca il parametro assign.
Per renderlo disponibile ho aggiunto questo nel plugin (riga 70):

Code: Select all

    $sezione = "${imSpec}";
	
  if( isset($params['assign']) )
    {
      $smarty =& $gCms->GetSmarty();
      $smarty->assign($params['assign'],$sezione);
      return;
    }	
	else {
	echo $sezione;
	}
Con lo stesso principio è possibile gestire qualunque altro parametro dichiarato nella pagina padre.

Probabilmente è possibile fare fare tutto con content_dump ma non ho trovato una soluzione per ottenere l'id della pagina ad una data gerachia rispetto alla pagina che lo richiede. Se qualcuno ho un idea più elegante sarebbe interessante svilupparla.

Altro limite: al momento uso 2 template differenti, un miglioramento sarebbe quello di utilizzare il medesimo template e controllare in quali livello si trovi la pagina per decidere cosa stampare (con la possibilità magari di usare il parametro di sezione in mancanza di un parametro di pagina)

PROPOSTA: sarebbe interessante raccogliere una lista di snippet anche in italiano! :)
Last edited by axxe16 on Sun Jan 31, 2010 9:51 am, edited 1 time in total.
axxe16

Re: come ereditare i campi di una sezione nelle pagine figlie

Post by axxe16 »

In effetti è possibile ottenere l'alias dell'elemento root anche con CGSimpleSmarty.
Unico problema: il metodo utile a questa operazione get_root_alias non possiede un parametro per determinare il livello quindi se la vostra sezione non è a livello root (ad es. home->sezione->pagina figlia) allora il metodo da solo non basta.
Post Reply

Return to “Italian - Italiano”