Dit artikel heb ik gemaakt na aanleiding van http://forum.cmsmadesimple.org/index.ph ... 135.0.html
Als je gebruik maakt van de nieuwsmodule dan kun je een samenvatting maken op je homepage, waarin ook een link is opgenomen naar een automatisch gegenereerde pagina waar het gehele artikel staat.
Maar het is nog niet -standaard- mogelijk om vanuit de samenvatting een verwijzing te maken naar een bestaande normale pagina op je website. Bijv. een fotoalbum, gastenboek of de contactpagina.
Er zijn een aantal manieren om dit op te lossen:
- {redirect_page page='pagina-alias'} tag in het artikelveld plaatsen, wat niet erg gebruiksvriendelijk is...
- het samenvattingssjabloon aanpassen, zie o.a. http://forum.cmsmadesimple.org/index.ph ... 135.0.html , wat uit eigen ervaring niet goed werkt in combinatie met de zoekmachines.
Heb nu een eenvoudige combinatie gemaakt van de genoemde oplossingen, die gebruiks- én Google-vriendelijk is.
In plaats van de [title] en [meer...] link door te sturen, heb ik nu een doorverwijzing gezet in het artikelsjabloon.
Bij het artikelformulier is onderaan een veld toegevoegd genaamd 'cms_selflink'.
Als er in dit veld een alias van een pagina (zie tab opties bij pagina's) staat ingevuld dan ga je na het klikken op de link in de samenvatting, automatisch daar deze (normale) pagina toe, staat er niets ingevuld dan wordt het normale artikelsjabloon getoond.
Werkwijze:
1. Open in de nieuws module de tab 'Velddefinities'.
Maak een velddefinitie aan genaamd 'cms_selflink' (of een eigen naam, maar dan wel even aanpassen in de code!)
Type: Tekstinvoer
*Publiek (openbaar) aanvinken.
2. Wijzig het samenvattingssjabloon.
Zet onderin het sjabloon de volgende regel buiten werking door het plaatsen van {* en *}:
Code: Select all
...
{if isset($entry->fields)}
{foreach from=$entry->fields item='field'}
<div class="NewsSummaryField">
{if $field->type == 'file'}
<img src="{$entry->file_location}/{$field->value}"/>
{else}
{* < ----------------------------------------------
{$field->name}: {eval var=$field->value}
*} < ----------------------------------------------
{/if}
</div>
{/foreach}
{/if}
</div>
{/foreach}
<!-- End News Display Template -->
Plaats voor de bestaande code:
{if isset($entry->fields.cms_selflink->value)}
{redirect_page page=$entry->fields.cms_selflink->value}
{else}
en na de bestaande code:
{/if}
De totale nieuwe code wordt dan:
Code: Select all
{if isset($entry->fields.cms_selflink->value)}
{redirect_page page=$entry->fields.cms_selflink->value}
{else}
{* --- Begin standaard artikelsjabloon --- *}
{if $entry->postdate}
<div id="NewsPostDetailDate">
{$entry->postdate|cms_date_format}
</div>
{/if}
<h3 id="NewsPostDetailTitle">{$entry->title}</h3>
<hr id="NewsPostDetailHorizRule" />
{if $entry->summary}
<div id="NewsPostDetailSummary">
<strong>
{eval var=$entry->summary}
</strong>
</div>
{/if}
{if $entry->category}
<div id="NewsPostDetailCategory">
{$category_label} {$entry->category}
</div>
{/if}
{if $entry->author}
<div id="NewsPostDetailAuthor">
{$author_label} {$entry->author}
</div>
{/if}
<div id="NewsPostDetailContent">
{eval var=$entry->content}
</div>
{if $entry->extra}
<div id="NewsPostDetailExtra">
{$extra_label} {$entry->extra}
</div>
{/if}
<div id="NewsPostDetailPrintLink">
{$entry->printlink}
</div>
{if $return_url != ""}
<div id="NewsPostDetailReturnLink">{$return_url}</div>
{/if}
{if isset($entry->fields)}
{foreach from=$entry->fields item='field'}
<div class="NewsDetailField">
{if $field->type == 'file'}
{* this template assumes that every file uploaded is an image of some sort, because News doesn't distinguish *}
<img src="{$entry->file_location}/{$field->value}"/>
{else}
{$field->name}: {eval var=$field->value}
{/if}
</div>
{/foreach}
{/if}
{* --- Einde standaard artikelsjabloon --- *}
{/if}
Deze werkwijze heb ik op verschillende manieren getest en werkt goed.
Groet, Rolf