Page 1 of 2
[opgelost] Div toevoegen tussen producten overzicht
Posted: Wed Dec 24, 2014 1:50 pm
by timdebuurman
Hoi,
Graag wil ik in het productenoverzicht (summary) om een aantal rijen met producten een div met inhoud plaatsen. Ook nog dat iedere div een andere inhoud/tekst heeft en te stijlen is.
Dus bijvoorbeeld 4 rijen met 4 producten naast elkaar.
Dan een balk, met daarin tekst (in dit geval bijvoorbeeld: "Dit is maar een deel van onze collectie)
Dan weer 4 rijen met producten en dan weer en balk met weer een andere tekst.
Iemand een idee hoe dat zou kunnen?
In de product summary sjabloon?
gr Tim
Re: Div toevoegen tussen producten overzicht
Posted: Wed Dec 24, 2014 3:05 pm
by velden
Dat is mogelijk met
(
http://www.smarty.net/docs/en/language. ... .iteration)
(niet getest, variabele namen kloppen niet denk ik)
Code: Select all
{foreach from=$products item=item}
{$item}
...
{if $item@iteration is div by 4 and not $item@last}
<div>Custom text</div>
{/if}
{foreach}
Maar dit zou wel telkens dezelfde 'Custom text' geven na elke 4 producten. Als je dat niet wilt moet je wat meer spelen met de condities.
Re: Div toevoegen tussen producten overzicht
Posted: Sat Dec 27, 2014 7:05 am
by timdebuurman
Hoi Velden,
Bedankt voor het meedenken.
Zou ik niet een extra veld kunnen maken met tekst en dan die aanroepen tussen de div?
Is misschien niet zo'n mooie oplossing, omdat het tekstveld bij de meeste producten dan niet gebruikt zal worden..
Nog andere ideeën hiervoor?
Re: Div toevoegen tussen producten overzicht
Posted: Sat Dec 27, 2014 11:22 pm
by pedes
not related
Re: Div toevoegen tussen producten overzicht
Posted: Sat Dec 27, 2014 11:29 pm
by velden
timdebuurman wrote:Hoi Velden,
Bedankt voor het meedenken.
Zou ik niet een extra veld kunnen maken met tekst en dan die aanroepen tussen de div?
Is misschien niet zo'n mooie oplossing, omdat het tekstveld bij de meeste producten dan niet gebruikt zal worden..
Nog andere ideeën hiervoor?
Het is niet handig om dat als extra veld in Products op te nemen. Eerder dan als Global Content Block.
Re: Div toevoegen tussen producten overzicht
Posted: Sun Dec 28, 2014 9:40 am
by janvl
Wanneer je binnen de for each lus (product summary) een extra lus met een tellertje zet dan kun je automatisch na iedere 3 of 4 produkten een global contentblock tonen wat je met een andere teller ook nog zou kunnen sturen of random misschien.
Ongeveer zo.
foreach item in items
for x = 1 to 3
show product
/for
{global contentblock}
/foreach
Groet
Jan
Re: Div toevoegen tussen producten overzicht
Posted: Sun Dec 28, 2014 10:51 am
by velden
Ik denk dat het probleem van 'om de 4 producten' wel is getackled:
janvl wrote:foreach item in items
for x = 1 to 3
show product
/for
{global contentblock}
/foreach
Jan
Dit gaat niet werken. Je kunt niet andere producten tonen dan het product (item) waar je mee bezig bent in de buitenste loop.
Re: Div toevoegen tussen producten overzicht
Posted: Sun Dec 28, 2014 12:01 pm
by janvl
Klopt, zo gaat 't wel
assign x=1
for each item in items
show product
x= x + 1
If x=3
global content block
assign x=1
/endif
/foreach
het gaat natuurlijk om de logica om na 3 (of 4) produkten een
block (div) te tonen.
Wie met smarty "programmeert" kan zelf de details invullen en ik ken Tim die kan dat.
Groet,
Jan
Re: Div toevoegen tussen producten overzicht
Posted: Sun Dec 28, 2014 1:37 pm
by velden
janvl wrote:Klopt, zo gaat 't wel
assign x=1
for each item in items
show product
x= x + 1
If x=3
global content block
assign x=1
/endif
/foreach
het gaat natuurlijk om de logica om na 3 (of 4) produkten een
block (div) te tonen.
Nog steeds niet helemaal wat Tim vroeg: "om de 4 blokken een tekst"
EDIT: zie nu dat het in de vraag om 4 rijen van 4 producten gaat. Dan vervang je de 4 dus door 16.
Ten eerste zal jouw voorbeeld om de 2 products een tekst tonen.
Ten tweede, waarom extra variabelen inzetten als dat allemaal niet nodig is?
Code: Select all
Dit doet precies wat Tim vraagt, is efficient en behoorlijk leesbaar:
{foreach from=$products item=item}
{$item}
...
{if $item@iteration is div by 4}
<div>Custom text</div>
{/if}
{foreach}
'and not $item@last' had ik er zelf maar bij verzonnen om dat het nogal knullig is om de tekst: "En we verkopen ook:" te plaatsen als er vervolgens geen items weer worden getoond:
{if $item@iteration is div by 4 and not $item@last}
{if $item@iteration is div by 4} is hetzelfde als {if $item@iteration % 4 == 0 }
Dat laatste zul je ook in andere programmeertalen tegen komen, maar is voor een 'leek' wat minder leesbaar dan 'is div by 4' denk ik. % staat overigens voor modulo operator.
Re: Div toevoegen tussen producten overzicht
Posted: Sun Dec 28, 2014 4:16 pm
by janvl
Is al OK,
ik hoop dat Tim hier goed mee geholpen is, daar gaat het per slot om.
Wat verwacht je?
Goed gedaan jochie . . .?
Volgende keer neem ik wat meer tijd en ben wat nauwkeuriger, beloofd!
Met vriendelijke groeten,
Jan
Re: Div toevoegen tussen producten overzicht
Posted: Mon Dec 29, 2014 10:49 am
by timdebuurman
Hoi Jan en Velden,
Ik denk dat mijn smarty-vaardigheden iets overschat worden.
Ik kom er vaak wel uit, maar is toch altijd wel een tijdje zoeken...
Als ik nu 3 soorten tekst heb en die in 3 global_content blokken zet.
En ik wil dat deze om de beurt getoond worden, om de 16 producten.
Hoe zou ik dat in de gegeven code kunnen verwerken?
Code: Select all
{foreach from=$products item=item}
{$item}
...
{if $item@iteration is div by 16 and not $item@last}
{global_content name="tekst1"}
deze dan wisselen met tekst2 en tekst3....?
{/if}
{foreach}
Re: Div toevoegen tussen producten overzicht
Posted: Mon Dec 29, 2014 1:39 pm
by velden
Probeer eens:
Code: Select all
{$i=1}
{foreach from=$products item=item}
{$item}
...
{if $item@iteration is div by 16 and not $item@last}
{global_content name="tekst{cycle values="1,2,3"}"}
deze dan wisselen met tekst2 en tekst3....?
{/if}
{foreach}
Re: Div toevoegen tussen producten overzicht
Posted: Mon Dec 29, 2014 6:58 pm
by timdebuurman
Hoi Velden,
Bedankt voor het meedenken.
Ik moet de productmodule nog installeren bij dit project en ga het dan testen.
Nu heb ik nog een dingetje...:
Stel nu dat ik de div op een kleiner beeldscherm (tablet of mobiele telefoon) niet om de 16, maar om de 10 producten wil tonen.
Of vraag ik nu iets onmogelijks..?
Re: Div toevoegen tussen producten overzicht
Posted: Mon Dec 29, 2014 7:45 pm
by velden
timdebuurman wrote:
Nu heb ik nog een dingetje...:
Stel nu dat ik de div op een kleiner beeldscherm (tablet of mobiele telefoon) niet om de 16, maar om de 10 producten wil tonen.
Of vraag ik nu iets onmogelijks..?
Dat kan enkel als je server-side device detectie gebruikt, en dat zul je waarschijnlijk niet doen.
Waarschijnlijk werk je met een responsive framework. Je zou dan op één of andere manier de logica in JS moeten zetten en afhankelijk van de 'breedte' andere variabelen gebruiken.
Dus:
De inhoud van de GCB's als variabelen aan JS meegeven vanuit het cmsms template.
Vervolgens met JS de betreffende div's met inhoud op de juiste plek invoegen. Vereist een beetje programmeerkennis en kennis van je framework.
Re: Div toevoegen tussen producten overzicht
Posted: Mon Dec 29, 2014 11:34 pm
by janvl
Eenvoudiger zou zijn om voor de mobiele pagina's eigen pagina's en templates te gebruiken waar je dit dan in zet, dat bespaart je nieuw programmeerwerk dat je na de installatie weer moet beheren.
Een voorbeeldje kun je zien bij
www.taxigerhard.at daar wordt voor een tablet/telefoon een paar eigen pagina's getoond.
Alles wat je nu met kunst en vliegwerk aan elkaar knoopt, moet je later weer zelf onderhouden.
Als je de logica voor de keuze van desktop vs tablet/telefoon wilt hebben stuur ik je die.
M.vr.gr.
Jan