Page 2 of 2

Re: Template of UDT?

Posted: Wed Jun 07, 2017 11:55 am
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 :)

Re: Template of UDT?

Posted: Wed Jun 07, 2017 12:39 pm
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.

Re: Template of UDT?

Posted: Wed Jun 07, 2017 1:00 pm
by Gregor

Re: Template of UDT?

Posted: Wed Jun 07, 2017 1:09 pm
by velden
Ik denk dat je een +-teken moet gebruiken ipv de spaties.

Re: Template of UDT?

Posted: Wed Jun 07, 2017 1:21 pm
by Gregor
velden wrote:Ik denk dat je een +-teken moet gebruiken ipv de spaties.
Dat is inderdaad de oplossing! Top.

Re: Template of UDT?

Posted: Thu Jun 08, 2017 1:42 pm
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}

Re: Template of UDT?

Posted: Thu Jun 08, 2017 2:14 pm
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.

Re: Template of UDT?

Posted: Thu Jun 08, 2017 6:42 pm
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

Re: Template of UDT?

Posted: Thu Jun 08, 2017 7:49 pm
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

Re: Template of UDT?

Posted: Fri Jun 09, 2017 7:45 am
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}" *}

Re: Template of UDT?

Posted: Fri Jun 09, 2017 8:38 am
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 :-)

Re: Template of UDT?

Posted: Wed Jun 14, 2017 6:35 pm
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}