Page 1 of 1

archive per jaar, maand met cgblog

Posted: Thu Jan 13, 2011 11:28 am
by Gregor
Hallo,

Ik ben nu een poosje aan het stoeien geweest om de artikelen uit cgblog te groeperen per jaar en daarbinnen per maand, met de respectievelijke aantallen erachter. Een beetje zoals je dat wellicht van blogspot en wordpress kent ;)
Vanuit de standaard template krijg ik een overzicht:
# January 2011 - (2)
# December 2010 - (2)
# November 2010 - (3)
# October 2010 - (6)
# September 2010 - (4)
en wat ik zou willen is:
> jaar 1 (xx)
>> maand 1 (xx)
>> maand 2 (xx)
> jaar 2 (xx)
>> maand 1 (xx)

Iemand een suggestie hoe dit in een template te gieten? Het forum doorzocht en daar niet echt een werkende toepassing gevonden.

Grtz, Gregor

Re: archive per jaar, maand met cgblog

Posted: Mon Jan 24, 2011 11:52 am
by Gregor
Vast toch wel iemand op het forum die daar ideeën over heeft en die wil delen om tot een oplossing te komen ;)

Gregor

Re: archive per jaar, maand met cgblog

Posted: Thu Feb 03, 2011 10:01 am
by Gregor
Ik ben een klein stapje verder. Deze template:

Code: Select all

{foreach from=$archivelist item=one}
{capture assign='theyear'}{$one.datestamp|date_format:"%Y"}{/capture}
{capture assign='themonth'}{$two.datestamp|date_format:"%B"}{/capture}

<div class="articlesummary list">
{* <ul>Jaar {$theyear}</ul> *}
<ul><a href="{$one.summary_url}"> {$one.datestamp|date_format:"%Y"} - ({$one.count})</a></ul>
{* cms_module module="CGBlog" year=$theyear *}
  {foreach from=$archivelist item=two}
  <ul>Maand {$themonth}</ul>
    <li><a href="{$two.summary_url}">{$two.datestamp|date_format:"%B"}  - {$two.datestamp|date_format:"%Y"}({$two.count})</a></li>
  </ul>
  {/foreach}
</div>
{/foreach}
levert dit resultaat:
2011 - (3)

Maand

# January - 2011(3)

Maand

# December - 2010(2)

Maand

# November - 2010(3)

Maand

# October - 2010(6)

Maand

# September - 2010(4)

Maand

# August - 2010(12)

Maand

# July - 2010(17)

Maand
Zie ook http://www.uisge-beatha.eu/index.php?page=test

De aantallen achter maand - jaar klopt wel, maar haal ik het jaar weg, dan klopt het aantal niet meer ??? Ik zou graag weten wat er in $archivelist staat. Er staat mij bij dat er een soort print-functie is die dat kan weergeven, maar ik weet niet meer welke ;) Wie wel?
De idee van werken in de template is dat de juiste aanpak?

Gregor

Re: archive per jaar, maand met cgblog

Posted: Thu Feb 03, 2011 10:31 am
by deactivated010521
----------

Re: archive per jaar, maand met cgblog

Posted: Thu Feb 03, 2011 10:54 am
by Gregor
Dank je Arnoud. Het levert een fraai resultaat op:
Array
(
[0] => Array
(
[month] => 1
[year] => 2011
[count] => 3
[summary_url] => http://www.uisge-beatha.eu/logboek/archive/2011/01.html
[datestamp] => 1293836400
)

[1] => Array
(
[month] => 12
[year] => 2010
[count] => 2
[summary_url] => http://www.uisge-beatha.eu/logboek/archive/2010/12.html
[datestamp] => 1291158000
)

[2] => Array
(
[month] => 11
[year] => 2010
[count] => 3
[summary_url] => http://www.uisge-beatha.eu/logboek/archive/2010/11.html
[datestamp] => 1288566000
)

[3] => Array
Dus 'item=one' verwijst naar het eerste element van het array, month in dit geval?

Code: Select all

{foreach from=$archivelist item=one}

Re: archive per jaar, maand met cgblog

Posted: Thu Feb 03, 2011 2:50 pm
by Gregor
Ik probeer het jaartal terug te krijgen uit de array, maar...
{get_template_vars } levert een lijst op
[49] => Array
(
[month] => 5
[year] => 2006
[count] => 1
[summary_url] => http://www.uisge-beatha.eu/logboek/archive/2006/05.html
[datestamp] => 1146434400
)
Bekijk ik vervolgens de waarden, dan krijg ik:
{capture assign='theyear'}{$one.year}{/capture}
{$one.year|print_r}<br/>
{$theyear|print_r}<br/>

Output:
1
1

Waar ik een jaartal, bijv. 2006 zou verwachten. Waar gaan mijn verwachtingen de mist in?? Het lukt nl. niet om binnen een {if} {/if} een vergelijking te maken; de waarden gaan nooit veranderen :-\

Re: archive per jaar, maand met cgblog

Posted: Thu Feb 03, 2011 3:23 pm
by deactivated010521
----------

Re: archive per jaar, maand met cgblog

Posted: Thu Feb 03, 2011 3:44 pm
by Gregor
Dat leidt tot:
year of first item:

year:
all items from one:
Array
(
[month] => 1
[year] => 2011
[count] => 3
[summary_url] => http://www.uisge-beatha.eu/logboek/archive/2011/01.html
[datestamp] => 1293836400
)
1
year blijft leeg :-\

Re: archive per jaar, maand met cgblog

Posted: Thu Feb 03, 2011 3:53 pm
by Gregor
Ah, de -> moet een . zijn

Code: Select all

year: {$one.year}<br/>
datestamp: {$one.datestamp|date_format:"%Y"}
Levert op:
year: 2011
datestamp: 2011

Dan zou {capture assign='theyear'}{$one.datestamp|date_format:"%Y"}{/capture} ertoe moeten leiden dat 'theyear' de waarde van een jaartal krijgt, bijv. 2010. De volgende code geeft voor 'theyear' de waarde 1 ???

Code: Select all

{capture assign='theyear'}{$one.datestamp|date_format:"%Y"}{/capture}
theyear: {$theyear|@print_r}

Re: archive per jaar, maand met cgblog

Posted: Thu Feb 03, 2011 4:25 pm
by Gregor
Ik begin een beetje radeloos te worden:

Code: Select all

{capture assign='theyear'}{$one.datestamp|date_format:"%Y"}{/capture}
theyear1: {$theyear|@print_r}<br/>
theyear2: {$one.datestamp|date_format:"%Y"|@print_r}<br/>
  {assign var='theyears' value=$archivelist[0].year}
theyear3: {$theyears|@print_r}<br/>
Levert het volgende resultaat op:
theyear1: 1
theyear2: 1
theyear3: 20111
Begrijp niet waar die 1 vandaan komt. Wie-o-wie?

Re: archive per jaar, maand met cgblog

Posted: Thu Feb 03, 2011 4:54 pm
by deactivated010521
----------