Io ho usato anche JQuery per creare l'effetto "EXPAND/COLLAPSE" (Vedi:
http://viralpatel.net/blogs/2009/09/cre ... query.html).
Se non ti serve, rimuovilo.
Lascio anche alcuni stili CSS di prova che avevo usato..
CODICE da inserire nel Template "Archive" di CGBlog (TAB:
Archive View Templates) o anche nel corpo della pagina (ma in questo caso bisogna catturare CGBlog: {capture}{CGBlog}{/capture}).
Per conoscere ed evidenziare la coppia Anno/Mese selezionata dall'utente, dal menu dell'archivio, è necessario catturare il CONTENT della pagina, anche nel template "Archivio", perché quando si passa al sommario e al dettaglio l'informazione viene persa.
Code: Select all
{* Catturo il CONTENT per sapere quale anno/mese è stato selezionato dal menu *}
{capture}{content}{/capture}
{foreach from=$archivelist item=y name=yearmonths}
{if $y.year != $lastused_year}
{if $smarty.foreach.yearmonths.first}
<ul id="accordion">
{else}
</ul></li>
{/if}
{if $param_year == $y.year}
<li class="year_active"><div>{$y.year}</div><ul>
{else}
<li class="year"><div>{$y.year}</div><ul>
{/if}
{/if}
{if $y.month != $lastused_month}
{if $param_month == $y.month}
<li class="month_active"><a href="{$y.summary_url}">
{$y.datestamp|date_format:"%b"} ({$y.count})</a></li>
{else}
<li class="month"><a href="{$y.summary_url}">{$y.datestamp|date_format:"%b"} ({$y.count})</a></li>
{/if}
{/if}
{assign var='lastused_month' value=$y.month}
{assign var='lastused_year' value=$y.year}
{if $smarty.foreach.yearmonths.last}
</ul>
{/if}
{/foreach}
****************************************
JQUERY
Per ottenere il menu "espandibile" delle NEWS (CGBlog), nel
template della pagina richiamare innanzitutto le librerie JQuery (con il TAG nell'head {cms_jquery}),
quindi inserire lo script dopo il richiamo di CGBlog.
Esempio:
<div id="menu">
{CGBlog action='archive'}
</div>
{literal}
<__script__>
$("#accordion > li > div").click(function(){
if(false == $(this).next().is(':visible')) {
$('#accordion ul').slideUp(300);
}
$(this).next().slideToggle(300);
});
if(false == $("#accordion ul").is(':visible')) {
$('#accordion ul:eq(0)').show(); // Primo livello visibile solo se non ce ne sono altri già aperti
}
</__script>
{/literal}
****************************************
Template "Sommario"
Code: Select all
{foreach from=$archivelist item=y}
{if $y.year != $lastused_year}
{* Catturo il CONTENT per sapere quale anno/mese è stato selezionato dal menu *}
{capture}{content}{/capture}
{if $param_year == $y.year}
<h2 style="color: yellow; font-weight: bold;">{$y.year}</h2>
{else}
<h2 style="color: red; font-weight: bold;">{$y.year}</h2>
{/if}
{/if}
{if $y.month != $lastused_month}
{if $param_month == $y.month}
<h2><a href="{$y.summary_url}"">{$y.datestamp|date_format:"%B"}</a> ({$y.count})</h2>
{else}
<h2><a href="{$y.summary_url}" style="color: green; font-weight: bold;">{$y.datestamp|date_format:"%B"}</a> ({$y.count})</h2>
{/if}
{/if}{assign var='lastused_month' value=$y.month}
{assign var='lastused_year' value=$y.year}
{/foreach}
****************************************
Template "Dettaglio"
Nel template dettaglio non è possibile catturare il CONTENT della pagina perché manda in crash l'applicazione.
Per mantenere traccia della coppia Anno/Mese selezionata dall'utente, ed usare l'informazione per evidenziarla nel menu dell'archivio, va catturato il postdate ed estratto l'anno ed il mese
Code: Select all
{* CATTURO ANNO e MESE e li assegno alle variabili usate nel template dell'archivio *}
{assign var="param_year" value=$entry->postdate|cms_date_format:'%Y'}
{assign var="param_month" value=$entry->postdate|cms_date_format:'%m'}
{* set a canonical variable that can be used in the head section if process_whole_template is false in the config.php *}
{if isset($entry->canonical)}
{assign var='canonical' value=$entry->canonical}
{/if}
{if $entry->postdate}
<div id="CGBlogPostDetailDate">
{$entry->postdate|cms_date_format}
</div>
{/if}
<h3 id="CGBlogPostDetailTitle">{$entry->title|escape}</h3>
<hr id="CGBlogPostDetailHorizRule" />
{if $entry->summary}
<div id="CGBlogPostDetailSummary">
<strong>
{eval var=$entry->summary}
</strong>
</div>
{/if}
{if $entry->categories}
<div class="CGBlogSummaryCategory">
{strip}{$category_label}
{foreach from=$entry->categories item='category'}
{$category.name}
{/foreach}
{/strip}
</div>
{/if}
{if $entry->author}
<div id="CGBlogPostDetailAuthor">
{$author_label} {$entry->author}
</div>
{/if}
<div id="CGBlogPostDetailContent">
{eval var=$entry->content}
</div>
{if $entry->extra}
<div id="CGBlogPostDetailExtra">
{$extra_label} {$entry->extra}
</div>
{/if}
{if isset($entry->fields)}
{foreach from=$entry->fields item='field'}
<div class="CGBlogDetailField">
{if $field->type == 'file'}
{* this template assumes that every file uploaded is an image of some sort, because CGBlog doesn't distinguish *}
<img src="{$entry->file_location}/{$field->value}"/>
{else}
{$field->name}: {eval var=$field->value}
{/if}
</div>
{/foreach}
{/if}
****************************************
Nota: il commento
Code: Select all
{* this template assumes that every file uploaded is an image of some sort, because CGBlog doesn't distinguish *}
credo sia obsoleto. CGBlog distingue "file" e "immagini"; quindi se usi una immagine puoi scrivere:
Mi sembra tutto..
Ciao