Template of UDT?

Nederlandse ondersteuning voor CMS Made Simple

Moderator: velden

User avatar
Gregor
Power Poster
Power Poster
Posts: 1874
Joined: Thu Mar 23, 2006 9:25 am
Location: The Netherlands

Re: Template of UDT?

Post by Gregor »

Bij het controleren via de W3 HTML checker kreeg ik een lading fouten omdat er spaties in de naam van de folder en de naam van de foto zitten. Als ik een string replace doe van ' ' naar '%20' dan blijkt dat niet de oplossing te zijn omdat 'Winter1617/Te%20water' iets anders is dan 'Winter1617/Te water'. Zo ook voor de bestandsnaam.

De aanroep vanuit een CGBlog artikel is:

Code: Select all

{global_content name='fotoalbum' album="Winter1617/Kajuitramen" foto="Kajuitramen - 01"}
De template code is:

Code: Select all

{* clean up parameters *}
{assign var='album_no_spaces' value=str_replace(' ', '%20', {$gcb_params.album})}
{assign var='foto_no_spaces' value=str_replace(' ', '%20', {$gcb_params.foto})}

<h4>Meer foto's in het album</h4>
{assign var='files' value="uploads/images/Gallery/{$album_no_spaces}/*.jpg"|glob}
{if count($files)}
   <div class="floatbox" data-fb-options="doSlideshow:true group:cgblog caption:href">
   <a href="uploads/images/Gallery/{$album_no_spaces}/{$foto_no_spaces}.jpg">{CGSmartImage src="uploads/images/Gallery/{$album_no_spaces}/{$foto_no_spaces}.jpg" width="150"}</a>
   {foreach from=$files item='file'}
      {if !$file|contains:"thumb_"}
         <a href="{CGSmartImage src=$file notag=1 noembed=1}"></a>
      {/if}
   {/foreach}
   </div>
{/if}
Is er een manier om de spaties te vervangen zodat de html checker het accepteert, maar ook de foto's worden weergegeven :)
User avatar
velden
Dev Team Member
Dev Team Member
Posts: 3483
Joined: Mon Nov 28, 2011 9:29 am
Location: The Netherlands

Re: Template of UDT?

Post by velden »

En bij welke pagina krijg je die fouten bijvoorbeeld.

Ik checkte even snel https://validator.w3.org/nu/?doc=https% ... source=yes
en zie geen fouten.
User avatar
Gregor
Power Poster
Power Poster
Posts: 1874
Joined: Thu Mar 23, 2006 9:25 am
Location: The Netherlands

Re: Template of UDT?

Post by Gregor »

User avatar
velden
Dev Team Member
Dev Team Member
Posts: 3483
Joined: Mon Nov 28, 2011 9:29 am
Location: The Netherlands

Re: Template of UDT?

Post by velden »

Ik denk dat je een +-teken moet gebruiken ipv de spaties.
User avatar
Gregor
Power Poster
Power Poster
Posts: 1874
Joined: Thu Mar 23, 2006 9:25 am
Location: The Netherlands

Re: Template of UDT?

Post by Gregor »

velden wrote:Ik denk dat je een +-teken moet gebruiken ipv de spaties.
Dat is inderdaad de oplossing! Top.
User avatar
Gregor
Power Poster
Power Poster
Posts: 1874
Joined: Thu Mar 23, 2006 9:25 am
Location: The Netherlands

Re: Template of UDT?

Post by Gregor »

Te vroeg gejuicht. Had alleen naar de validator gekeken die gaf geen melding. Logisch want er worden ook geen foto's weergegeven :-X

Gezocht welke karakters als vervanger voor de spatie mag worden gebruikt, maar ongeacht welke, het is van invloed op de file naam en die wordt dan niet meer herkend.

Lijkt een beetje een keuze te worden tussen weergave van de foto's of een gevalideerde pagina.....

Code: Select all

{* clean up parameters *}
{assign var='album_no_spaces' value=str_replace(' ', '+', "uploads/images/Gallery/{$gcb_params.album}")}
{assign var='foto_no_spaces' value=str_replace(' ', '+', {$gcb_params.foto})}

<h4>Meer foto's in het album</h4>
{assign var='files' value="{$album_no_spaces}/*.jpg"|glob}
{if count($files)}
   <div class="floatbox" data-fb-options="doSlideshow:true group:cgblog caption:href">
   <a href="{$album_no_spaces}/{$foto_no_spaces}.jpg">{CGSmartImage src="{$album_no_spaces}/{$foto_no_spaces}.jpg" width="150"}</a>
   {foreach from=$files item='file'}
      {if !$file|contains:"thumb_"}
         <a href="{CGSmartImage src={$file|replace:' ':'%20'} notag=1 noembed=1}"></a>
      {/if}
   {/foreach}
   </div>
{/if}
User avatar
velden
Dev Team Member
Dev Team Member
Posts: 3483
Joined: Mon Nov 28, 2011 9:29 am
Location: The Netherlands

Re: Template of UDT?

Post by velden »

Nee, maar dat wil niet zeggen dat je voor zowel het href als het src attribuut dezelfde waarde mag gebruiken.

Ik denk dat je href geen spaties mag bevatten maar de src wel.
User avatar
Gregor
Power Poster
Power Poster
Posts: 1874
Joined: Thu Mar 23, 2006 9:25 am
Location: The Netherlands

Re: Template of UDT?

Post by Gregor »

Ik heb nagezocht wat de syntax afspraken zijn voor href en src en inderdaad href mag geen spaties bevatten, src wel. Voor zover ik weet kan ik dit verschil in/met GCSI niet oplossen dan wel omzeilen. Heb het nu op een andere manier opgelost waardoor de code wel valideert en ook nog werkt ;)

Code: Select all

{* clean up parameters *}
{assign var='album_no_spaces' value=str_replace(' ', '+', "uploads/images/Gallery/{$gcb_params.album}")}
{assign var='foto_no_spaces' value=str_replace(' ', '+', {$gcb_params.foto})}
{assign var="first_photo" value="uploads/images/Gallery/{$gcb_params.album}/{$gcb_params.foto}.jpg"}

<h4>Meer foto's in het album</h4>
{assign var='files' value="{$album_no_spaces}/*.jpg"|glob}
{if count($files)}
   <div class="floatbox" data-fb-options="doSlideshow:true group:cgblog caption:href">
   <a href="{$first_photo|replace:' ':'%20'}">{CGSmartImage src="{$first_photo}" width="150"}</a> {* {$album_no_spaces}/{$foto_no_spaces}.jpg *}
   {foreach from=$files item='file'}
         {if !$file|contains:"thumb_"}
            <a href="{$file|replace:' ':'%20'}"></a>
         {/if}
   {/foreach}
   </div>
{/if}
https://www.test.uisge-beatha.eu/test.html
User avatar
velden
Dev Team Member
Dev Team Member
Posts: 3483
Joined: Mon Nov 28, 2011 9:29 am
Location: The Netherlands

Re: Template of UDT?

Post by velden »

Ik denk dat je de smarty tag/modifier cms_escape:'url' zou kunnen gebruiken hiervoor.

Het effect zal in dit geval hetzelfde zijn, maar er kunnen mogelijk nog andere karakters voorkomen die url_encoded moeten worden. Naar mijn mening kun je dan beter een bestaande functie gebruiken dan zelf het wiel opnieuw uitvinden.

Je vind meer info hier: https://docs.cmsmadesimple.org/tags/cms ... cms_escape
User avatar
Gregor
Power Poster
Power Poster
Posts: 1874
Joined: Thu Mar 23, 2006 9:25 am
Location: The Netherlands

Re: Template of UDT?

Post by Gregor »

Dank je voor de tip en eens met je suggestie.

Ik heb waar nu replace.... staat vervangen voor |escape:'url' en daar wat mee geëxperimenteerd, maar dan krijg ik telkens dat de bestanden niet worden gevonden ???

Code: Select all

<a href="{$first_photo|replace:' ':'%20'}">{CGSmartImage src="{$first_photo}" width="150"}</a> {* {$album_no_spaces}/{$foto_no_spaces}.jpg *}
   {foreach from=$files item='file'}
         {if !$file|contains:"thumb_"}
            <a href="{$file|replace:' ':'%20'}"></a> {* >{CGSmartImage src={$file} notag=1 noembed=1}" *}
User avatar
velden
Dev Team Member
Dev Team Member
Posts: 3483
Joined: Mon Nov 28, 2011 9:29 am
Location: The Netherlands

Re: Template of UDT?

Post by velden »

cms_escape moet het zijn hè. Ik weet zo niet of 'escape' ook werkt.

Maar ik denk nu (na een test) dat het moet zijn:

Code: Select all

|cms_escape:'urlpathinfo'
Wat overigens haaks lijkt te staan op de uitleg in de documentatie.

Misschien hou je het beter bij je oorspronkelijke code, die was zo gek nog niet :-)
User avatar
Gregor
Power Poster
Power Poster
Posts: 1874
Joined: Thu Mar 23, 2006 9:25 am
Location: The Netherlands

Re: Template of UDT?

Post by Gregor »

:) het werkt en het valideert ook nog!

Code: Select all

{* clean up parameters |replace:' ':'%20' *}
{assign var='album_no_spaces' value=str_replace(' ', ' ', "uploads/images/Gallery/{$gcb_params.album}")}
{assign var='foto_no_spaces' value=str_replace(' ', ' ', {$gcb_params.foto})}
{assign var="first_photo" value="uploads/images/Gallery/{$gcb_params.album}/{$gcb_params.foto}.jpg"}

<h4>Meer foto's in het album</h4>
{assign var='files' value="{$album_no_spaces}/*.jpg"|glob}
{if count($files)}
   <div class="floatbox" data-fb-options="doSlideshow:true group:cgblog caption:href">
   <a href="{$first_photo|cms_escape:'urlpathinfo'}">{CGSmartImage src="{$first_photo}" width="150"}</a>
   {foreach from=$files item='file'}
         {if !$file|contains:"thumb_"}
            <a href="{$file|cms_escape:'urlpathinfo'}"></a> 
         {/if}
   {/foreach}
   </div>
{/if}
Locked

Return to “Dutch - Nederlands”