selecteren van nieuwsberichten per jaar
Posted: Thu Mar 11, 2010 12:42 pm
Op mijn site heb ik sinds 2006 nieuws berichten staan in de vorm van een blog. De site is www.uisge-beathe.eu
Via de de volgende link werd ik op het idee gebracht om de nieuws items per jaar te kunnen laten zien:
http://forum.cmsmadesimple.org/index.php/topic,35465.0.html
Om dit werkend te krijgen, heb ik de volgende aanpassingen/instellingen gedaan:
- Een Summary Template gemaakt, genaamd: summaryperiodtemplate. Deze bevat de volgende code:
Vervolgens heb ik per jaar een pagina gemaakt met de volgende code:
Per jaartal heb je dus een pagina met een ander jaartal.
Dit vond ik niet handig en bedacht om dit met Formbuilder te doen, door een drop down te laten zien met jaartallen en daar vervolgens een keuze uit te maken. Het jaartal zou dan als variabele naar een UDT moeten worden doorgegeven. Met veel ondersteuning van Calimer0 is het uiteindelijk niet gelukt om dit met Formbuilder te doen. Hierop deed Calimer) de suggestie om de volgende UDT te maken, genaamd 'archiveyear' met de volgende code:
In de aangepaste versie een pagina gemaakt, genaamd 'lbjaar'. Dit is dus de naam van een alias. De code in deze pagina is:
Het resultaat is te zien op http://www.uisge-beatha.eu/Logboek/lbjaar.html
De site is voorzien van pretty url's.
Hoop dat dit voor iemand bruikbaar is en ik ben blij met de ondersteuning die ik via het forum heb mogen krijgen hierbij!
Gregor
Via de de volgende link werd ik op het idee gebracht om de nieuws items per jaar te kunnen laten zien:
http://forum.cmsmadesimple.org/index.php/topic,35465.0.html
Om dit werkend te krijgen, heb ik de volgende aanpassingen/instellingen gedaan:
- Een Summary Template gemaakt, genaamd: summaryperiodtemplate. Deze bevat de volgende code:
Code: Select all
{if !isset($news_start_period)}
{assign var=news_start_period value='1900-01-01'}
{/if}
{if !isset($news_end_period)}
{assign var=news_end_period value='2038-12-31'}
{/if}
{if isset($currentdate)}
{assign var=news_start_period value=$currentdate}
{/if}
<div id="NewsPostDetailPrintLink">
{$entry->printlink}
</div>
{foreach from=$items item=entry}
{if ($entry->postdate|date_format:'%F' >= $news_start_period|date_format:'%F') && ($entry->postdate|date_format:'%F' <= $news_end_period|date_format:'%F') }
<h3>{$entry->postdate|date_format:"%d/%m/%Y"} - {$entry->title}</h3>
{eval var=$entry->content}
{/if}
{/foreach}
Code: Select all
{* Select your news_start_date formatted as yyyy-mm-dd *} {assign var='news_start_period' value='2009-01-01'} {* Select your news_end_date formatted as yyyy-mm-dd *} {assign var='news_end_period' value='2009-12-31'} {* Call news module *} {news category="logboek" summarytemplate="summaryperiodtemplate" detailtemplate="_dflt" }
Dit vond ik niet handig en bedacht om dit met Formbuilder te doen, door een drop down te laten zien met jaartallen en daar vervolgens een keuze uit te maken. Het jaartal zou dan als variabele naar een UDT moeten worden doorgegeven. Met veel ondersteuning van Calimer0 is het uiteindelijk niet gelukt om dit met Formbuilder te doen. Hierop deed Calimer) de suggestie om de volgende UDT te maken, genaamd 'archiveyear' met de volgende code:
Code: Select all
//Execute some smarty code to make the archive link
global $gCms;
$smarty = &$gCms->GetSmarty();
$smarty_data = "{cms_selflink href='lbjaar}"; //this is the archive link
$smarty->_compile_source('temporary template', $smarty_data, $_compiled );
@ob_start();
$smarty->_eval('?>' . $_compiled);
$_contents = @ob_get_contents();
@ob_end_clean();
$archivelink = $_contents;
//Set the first year of archives:
$firstyear=2006;
//Set some variables
$thisyear=date('Y');
//$i=$firstyear;
$i=$thisyear;
echo '<form id="selectyear" method="get" action="' .$archivelink. '" enctype="multipart/form-data"> ';
echo ' <div class="formbuilderform"> ';
echo '<div class="required">';
echo '<label for="year">';
echo 'Logboek van* ';
echo '</label>';
echo '<select id="year" name="year">';
echo '<option value="" selected="selected"> ';
echo ' Selecteer een jaar: ';
echo '</option>';
while ($i >= $firstyear) {
echo '<option value="' .$i. '">' .$i. '</option>';
--$i;
}
echo '</select> ';
echo '</div> ';
echo '<div class="submit">';
echo '<input value="Verstuur" type="submit" /> ';
echo '</div> ';
echo '</div> ';
echo '</form> ';
if (!isset($_GET['year']) || $_GET['year'] == "") {
$archiveyear=date('Y');
}
else {
$archiveyear=$_GET['year'];
}
$news_start_period="{$archiveyear}/01/01";
$news_end_period="{$archiveyear}/12/31";
$smarty->assign('archiveyear', $archiveyear);
$smarty->assign('news_start_period', $news_start_period);
$smarty->assign('news_end_period', $news_end_period);
Code: Select all
<h2>{title}</h2>
<br />{archiveyear} {news category="logboek" summarytemplate="summaryperiodtemplate" detailtemplate="_dflt" }
De site is voorzien van pretty url's.
Hoop dat dit voor iemand bruikbaar is en ik ben blij met de ondersteuning die ik via het forum heb mogen krijgen hierbij!
Gregor