[OPGELOST] smarty variabelen

Nederlandse ondersteuning voor CMS Made Simple

Moderator: velden

Post Reply
User avatar
frankmanl
Power Poster
Power Poster
Posts: 425
Joined: Sat Jul 12, 2008 3:50 am

[OPGELOST] smarty variabelen

Post by frankmanl »

edit:
Ik wil de nieuwsmodule gebruiken als agenda.
Ik heb een (samenvattings)sjabloon gemaakt die de plaatsingsdatum gebruikt als datum van het evenement. Bij een evenement dat plaats vindt op 7 oktober vul ik dus als plaatsingsdatum in: 7 oktober.
Bij elke jaarwisseling in de lijst van agenda-items wil ik het jaar afgebeeld hebben op het beeldscherm en bij elke maand wil ik de naam van de maand afgebeeld zien, met daaronder alle agenda-items van die maand.
Ik heb problemen met het op juiste wijze vullen van mijn variabelen voor jaar en maand met de waarden die worden gevonden in de data van de posts, omdat ik Smarty niet goed snap (en ook PHP niet, vrees ik).
Inmiddels heb ik de oplossing (zie onderaan).


Heeft iemand een idee waar ik een goede handleiding/tutorial kan vinden over Smarty-variabelen, hoe je die gebruikt, vergelijkt, overschrijft?
smarty.net vertelt me niet wat ik nodig heb. Op het forum vind ik het ook niet.
Wat ik zoek is het volgende:
• In de news-module samenvattingssjabloon wil ik een variabele $maand introduceren, die in eerste instantie wordt gevuld met een dummy waarde.

Code: Select all

{assign var='maand' value='dummymaand'}
regelt dat.
• Daarna wil ik elke keer dat er in de lijst berichten een nieuwe maand wordt aangetroffen (in de $entry->postdate) de waarde van $maand overschrijven met de naam van de maand van die entry.
Dit laatste lukt me niet. Ik gebruik nu deze formulering

Code: Select all

{assign var='maand' value='dummymaand'}
{assign var='entrymaand' value='dummyentry'}

{foreach from=$items item=entry}
{$entrymaand->$entry->postdate|date_format:"%B"}
{if $maand !== $entrymaand}
  {assign var='maand' value=$entrymaand}
{/if}
maar ik krijg steeds smarty-errors:

Code: Select all

Warning: substr() expects parameter 1 to be string, object given in /home/(...)
Misschien zit ik wel helemaal op het verkeerde spoor...

Frank
Last edited by frankmanl on Sun May 13, 2012 9:22 am, edited 1 time in total.
User avatar
frankmanl
Power Poster
Power Poster
Posts: 425
Joined: Sat Jul 12, 2008 3:50 am

Re: smarty variabelen

Post by frankmanl »

Ik ben er nog steeds niet uit. Niemand die me hiermee kan helpen?

Frank
pedes
Power Poster
Power Poster
Posts: 840
Joined: Tue Jan 27, 2009 11:47 am

Re: smarty variabelen

Post by pedes »

ik begrijp niet goed waarom u de var vult met value='dummymaand'.
u kan dan toch beter gewoon de value leeg laten

Code: Select all

{assign var='maand' value=''}
Als ik al kan inschatten wat de bedoeling is .. misschien moet je de assign binnen je foreach lust zetten ?

Code: Select all

{foreach from=$items item=entry}
{assign var='maand' value=''}
{assign var='entrymaand' value=''}
{$entrymaand->$entry->postdate|date_format:"%B"}
{if $maand !== $entrymaand}
  {assign var='maand' value=$entrymaand}
{/if}
Even proberen zou ik zeggen.

Mvg,
Peter
Jos
Support Guru
Support Guru
Posts: 4020
Joined: Wed Sep 05, 2007 8:03 pm

Re: smarty variabelen

Post by Jos »

frankmanl wrote:Daarna wil ik elke keer dat er in de lijst berichten een nieuwe maand wordt aangetroffen (in de $entry->postdate) de waarde van $maand overschrijven met de naam van de maand van die entry.
Zou je kunnen uitleggen wat je hiermee wilt bereiken, want zoals je het nu uitgelegd hebt, zijn alle toeters en bellen niet nodig en kun je gewoon telkens de variabele $entry->postdate|date_format:"%B" gebruiken. Je doet namelijk niets met de opgeslagen waarde?
mcDavid
Power Poster
Power Poster
Posts: 377
Joined: Tue Mar 31, 2009 8:45 pm

Re: smarty variabelen

Post by mcDavid »

Je vult de variable $entrymaand met een string, en vervolgens roep je hem aan alsof het een object is met meerdere child-objecten. Dat kan natuurlijk niet. Wat zou je uberhaupt verwachten dat er dan zou gebeuren?

(de foutmelding geeft dit ook vrij duidelijk aan trouwens)
User avatar
frankmanl
Power Poster
Power Poster
Posts: 425
Joined: Sat Jul 12, 2008 3:50 am

Re: smarty variabelen

Post by frankmanl »

Dank voor de reacties, jullie hebben me goed op weg geholpen en ik ben er uit.

Code: Select all

{assign var='jaar' value=''}
{assign var='maand' value=''}

{foreach from=$items item=entry}
{assign var='entryjaar' value=$entry->postdate|date_format:"%Y"}
{assign var='entrymaand' value=$entry->postdate|date_format:"%B"}
{if $jaar !== $entryjaar}
  {assign var='jaar' value=$entryjaar}
  <div class="agendajaar">{$jaar}</div>
{/if}
{if $maand !== $entrymaand}
  {assign var='maand' value=$entrymaand}
  <div class="agendamaand">{$maand}</div>
{/if}

<div class="NewsSummary">
...
Ik begreep niet hoe ik de waarde van $entry->postdate|date_format:"%B" op juiste wijze in mijn variabele moest plaatsen, maar dat lukt nu.
Behalve de variabele $maand heb ik ook een variabele $jaar gedefinieerd. Beide zijn in eerste instantie leeg.
Per post wordt het jaar van de postdate vergeleken met de waarde van mijn variabele $jaar.
Wanneer ze niet gelijk zijn wordt mijn variabele $jaar overschreven en op het scherm wordt afgebeeld.
Het zelfde gebeurt met de maanden.
Resultaat is dat mijn berichtenlijst het jaar afbeeldt bij elke jaarwisseling, en de maand bij elke maand wisseling.
Dus iets als:
2012
mei
agenda-item 1
agenda-item 2
juni
agenda-item 3
november
agenda-item 4
agenda-item 5
agenda-item 6
2013
januari
agenda-item 7
etc.

Frank
Post Reply

Return to “Dutch - Nederlands”