Page 1 of 1

come ereditare i campi di una sezione nelle pagine figlie

Posted: Sun Jan 31, 2010 9:49 am
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! :)

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

Posted: Sat Feb 13, 2010 10:49 am
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.