[opgelost] eenvoudige smarty

Nederlandse ondersteuning voor CMS Made Simple

Moderator: velden

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

[opgelost] eenvoudige smarty

Post by pedes »

ik heb wat problemen om wat smarty code toe te voegen in een samenvattings-sjabloon van de nieuws module

uit de nieuwsberichten trek een lijstje die ik een tabel toon op de website, 1 van die velden is het veld 'link'.
deze bevat een url die op de site wordt getoond als een icoontje waar kan op geklikt worden om verder te surfen.
nu wordt deze url niet altijd direct ingevuld door de site-editor (mede doordat deze url soms nog niet actief is)

nu wil ik indien het 'link' veld leeg is icoontje-b tonen en anders icoontje-a

dit is mijn samenvatting-sjabloon (het rode deel is het iccontje en de link):
<table border="0" align="left" class="list">
{foreach from=$items item=entry}

<tbody>
<tr>

<td width="80px" class="list"><span class="datum">{$entry->postdate|cms_date_format}</span></td>
<td width="150px" class="list"><span class="titel"><a href="{foreach from=$entry->fields item='field'}
{if $field->name == 'link'} {$field->value} {/if} {/foreach}" title="{$entry->title|cms_escape:htmlall}" target="_blank">{$entry->title|cms_escape}</a></span></td>
<td width="150px" class="list"><span class="korte_omschrijving"> {foreach from=$entry->fields item='field'}
{if $field->name == 'werkgever'} {$field->value} {/if} {/foreach}</span> </td>
<td width="90px" class="list"><span class="korte_omschrijving"> {foreach from=$entry->fields item='field'}
{if $field->name == 'werkuren'} {$field->value|truncate:40:"...":true} {/if} {/foreach}</span> </td>
<td width="80px" class="list"><span class="korte_omschrijving"> {foreach from=$entry->fields item='field'}
{if $field->name == 'locatie'} {$field->value} {/if} {/foreach}</span> </td>
<td class="list"><span class="detaillink">
<a href="{foreach from=$entry->fields item='field'}
{if $field->name == 'link'} {$field->value} {/if} {/foreach}" title="naar vacature" target="_blank"><img src="http://mijnsite/icoontje-a.png" ></a> </span>
</td>


</tr>
{/foreach}
</table>
iemand een idee wat ik moet aanpassen, ik probeerde al om het de value van het 'link' veld in een var te stoppen ... maar zonder succes

Mvg
Peter
Last edited by pedes on Sun Feb 06, 2011 6:36 am, edited 1 time in total.
Jos
Support Guru
Support Guru
Posts: 4019
Joined: Wed Sep 05, 2007 8:03 pm

Re: eenvoudige smarty

Post by Jos »

Als je veld "link" heet, dan kan het zo:

Code: Select all

<td class="list"><span class="detaillink">
{if empty($entry->link)}
<img src="http://mijnsite/icoontje-b.png" alt="" />
{else}
<a href="{$entry->link}" title="naar vacature" target="_blank"><img src="http://mijnsite/icoontje-a.png" alt="" /></a>
{/if}
</span>
</td>


Al die andere foreach lussen op de extra velden kun je dus ook verwijderen en vervangen door een directe aanroep van de variabele.
pedes
Power Poster
Power Poster
Posts: 840
Joined: Tue Jan 27, 2009 11:47 am

Re: eenvoudige smarty

Post by pedes »

Dank u voor uw reply Jos.

Maar het probleem is dat dit een extra veld is, aangemaakt als velddefinitie, er zijn dus meerdere velden van dit type.
het veld is dus niet {$link}, maar [foreach from=$entry->fields item='field'} {if $field->name == 'link'} {$field->value} {/if} {/foreach}

Ik controleer dus eerst of het veld de naam 'link' heeft en dan zet ik de inhoud van dit veld daar.
maar nu wil ik ook nog controleren of het leeg is !

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

Re: eenvoudige smarty

Post by Jos »

In jouw code controleer je met {if $field->name == 'link'} of de naam gelijk is aan 'link'

Met mijn code roep ik dat extra veld direct aan.

Heb je het al uitgeprobeert??
pedes
Power Poster
Power Poster
Posts: 840
Joined: Tue Jan 27, 2009 11:47 am

Re: eenvoudige smarty

Post by pedes »

Ja Jos ik heb dit uitgeprobeerd en het werkt niet.

het icoontje blijft altijd dezelfde en de link achter het icoontje is gewoon het detal van het nieuwsbericht en niet de inhoud van het veld 'link' (daar staat de url in die gebruikt moet worden)

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

Re: eenvoudige smarty

Post by Jos »

Oke, sorry, ik had er overheen gelezen dat je dit in een summary template doet... In een detailtemplate werkt het wel volgens mij..

In jouw geval zou je dan dit kunnen proberen:

Code: Select all

<td class="list"><span class="detaillink">
{foreach from=$entry->fields item='field'}
{if $field->name == 'link'}

{if empty({$field->value})}
<img src="http://mijnsite/icoontje-b.png" alt="" />
{else}
<a href="{$field->value}" title="naar vacature" target="_blank"><img src="http://mijnsite/icoontje-a.png" alt="" /></a>
{/if}

{/if}
{/foreach}
</span>
</td>
pedes
Power Poster
Power Poster
Posts: 840
Joined: Tue Jan 27, 2009 11:47 am

Re: eenvoudige smarty

Post by pedes »

Jos,

krijg een smarty error !

maar als ik het volgende ingeeft
<td class="list"><span class="detaillink">
{foreach from=$entry->fields item='field'}
{if $field->name == 'link'}

{if empty($field->value)}
<img src="http://mijnsite/icoontje-b.png" alt="" />
{else}
<a href="{$field->value}" title="naar vacature" target="_blank"><img src="http://mijnsite/icoontje-a.png" alt="" /></a>
{/if}

{/if}
{/foreach}
</span>
</td>
als ik dus die { } weglaat krijg ik geen smarty error meer , maar bij de berichten waar het veld leeg is krijg ik geen icoontje , voor de berichten waar het veld niet leeg is is het ok


mvg,
Peter
Jos
Support Guru
Support Guru
Posts: 4019
Joined: Wed Sep 05, 2007 8:03 pm

Re: eenvoudige smarty

Post by Jos »

Die haken die hoorden daar inderdaad niet, dus je verbetering is wel oke.

Het lijkt erop dat de code dan wel werkt.... staat de <img> tag ook niet in de html bron? Klopt het pad naar het icoontje wel?
pedes
Power Poster
Power Poster
Posts: 840
Joined: Tue Jan 27, 2009 11:47 am

Re: eenvoudige smarty

Post by pedes »

het pad naar het icoontje klopt en inderdaad in de bron zie ik ook de <img> tag niet bij de berichten waar het veld leeg is, bij de berichten waar het veld niet leeg is staat er wel een <img> tag (en werkt het dus)
Jos
Support Guru
Support Guru
Posts: 4019
Joined: Wed Sep 05, 2007 8:03 pm

Re: eenvoudige smarty

Post by Jos »

Dan denk ik dat het script in dat geval nooit een veld tegenkomt met de naam 'link'

Wat gebeurt er als je er een spatie in zet?
pedes
Power Poster
Power Poster
Posts: 840
Joined: Tue Jan 27, 2009 11:47 am

Re: eenvoudige smarty

Post by pedes »

het veld 'link' wordt volgens mij zeker gezien, want als het niet leeg is dan wordt de 'value' van het veld 'link' gebruikt als url achter het icoontje
en voor de berichten waar het veld niet leeg is wordt de bijhorende url uit het veld 'link' (voor ieder bericht een andere url) netjes overgenomen

als ik een spatie zet, dan wordt het veld link aanzien als niet leeg en dus dan verschijnt er het andere iccontje
Jos
Support Guru
Support Guru
Posts: 4019
Joined: Wed Sep 05, 2007 8:03 pm

Re: eenvoudige smarty

Post by Jos »

Precies, dan wordt het veld dus niet gezien als ie leeg is...

Probeer dan deze code eens:

Code: Select all

<td class="list"><span class="detaillink">
{foreach from=$entry->fields item='field'}
{if $field->name == 'link'}
{assign var='entry_field_link' value=$field->value}
{/if}
{/foreach}
{if empty($entry_field_link)}
<img src="http://mijnsite/icoontje-b.png" alt="" />
{else}
<a href="{$entry_field_link}" title="naar vacature" target="_blank"><img src="http://mijnsite/icoontje-a.png" alt="" /></a>
{/if}
</span>
</td>
pedes
Power Poster
Power Poster
Posts: 840
Joined: Tue Jan 27, 2009 11:47 am

Re: eenvoudige smarty

Post by pedes »

Jos,

dit levert geen oplossing ... er wordt een icoontje-a.png getoond (ipv. icoontje-b.png en er komt zelfs een url achter te liggen van het nieuwsbericht juist vóór dit nieuwsbericht
Jos
Support Guru
Support Guru
Posts: 4019
Joined: Wed Sep 05, 2007 8:03 pm

Re: eenvoudige smarty

Post by Jos »

Ik heb even getest, en bij mij werkt de laatste code wel...
pedes
Power Poster
Power Poster
Posts: 840
Joined: Tue Jan 27, 2009 11:47 am

Re: eenvoudige smarty

Post by pedes »

Jos, begrijp het niet goed hoe het komt dat dit nu bij u wel werkt ...
misschien zie ik iets over het hoofd ??

dit is mijn samenvatting template:
<div id="nieuwslijst">
<div class="NewsSummaryLinklist">
<table border="0" align="left" class="list">
{foreach from=$items item=entry}

<tbody>
<tr>
<td width="80px" class="list"><span class="datum">{$entry->postdate|cms_date_format}</span></td>
<td width="150px" class="list"><span class="titel">{$entry->title|cms_escape}</span></td>
<td width="150px" class="list"><span class="korte_omschrijving"> {foreach from=$entry->fields item='field'}
{if $field->name == 'werkgever'} {$field->value} {/if} {/foreach}</span> </td>
<td width="90px" class="list"><span class="korte_omschrijving"> {foreach from=$entry->fields item='field'}
{if $field->name == 'werkuren'} {$field->value|truncate:40:"...":true} {/if} {/foreach}</span> </td>
<td width="80px" class="list"><span class="korte_omschrijving"> {foreach from=$entry->fields item='field'}
{if $field->name == 'locatie'} {$field->value} {/if} {/foreach}</span> </td>


<td class="list"><span class="detaillink">
{foreach from=$entry->fields item='field'}
{if $field->name == 'link'}
{assign var='entry_field_link' value=$field->value}
{/if}
{/foreach}
{if empty($entry_field_link)}

<img src="http://..mijnwebsite../uploads/images/layout/remove.png" alt="" />
{else}
<a href="{$entry_field_link}" title="naar vacature" target="_blank"><img src="http://..mijnwebsite../uploads/images/layout/next.png" alt="" /></a>
{/if}
</span>
</td>
</tr>
{/foreach}
</table>
</div>
</div>
<!-- End News Display Template -->

mvg
Peter
Post Reply

Return to “Dutch - Nederlands”