List it 2 en arrays

Nederlandse ondersteuning voor CMS Made Simple

Moderator: velden

Post Reply
HarmO
Power Poster
Power Poster
Posts: 251
Joined: Thu Jan 26, 2012 3:22 pm

List it 2 en arrays

Post by HarmO »

Voor 1 van de websites die ik heb gemaakt is er een script dat adhv een opgegeve postcode de juiste verkoper voor die regio opzoekt een weergeeft.

ik heb die personen in ListIt2 lijstje gestoken, maar het script is nog niet zoals ik zou willen aangezien ik bij elke regio wijziging het opnieuw moet gaan programeren.

Wat ik zou willen doen is een textveld toevoegen in Listit2 en dit als een array beschouwen zodat de website eigenaar zelf de arrays kan beheren.
(eerst had ik gedacht aan een multi line text input, maar dit soort field def zit niet in ListIt.)

Maar ik heb geen idee hoe ik dit best kan doen, al een heel weekend liggen zoeken nr een oplossing.

Hierbij een extract van het huidige script (dat ik dus bij elke wijziging zelf moet aanpassen)

Code: Select all

{capture assign=r}{$smarty.get.r}{/capture}
{if 
(($r>=40000) and ($r<=40822)) 
or (($r>=41000) and ($r<=41999)) 
or ($r==42404) 
or (($r>=42781) and ($r<=42799)) 
or (($r>=47798) and ($r<=47999)) 
or (($r>=52000) and ($r<=52999))
}{ListIt2Fachberater item="fb-1"}

{elseif 
(($r>=40831) and ($r<=40885))
or (($r>=42478) and ($r<=42489))
or (($r>=42549) and ($r<=42579))
or (($r>=44000) and ($r<=44405))
or (($r>=44389) and ($r<=44999))
or (($r>=45000) and ($r<=45499))

or (($r>=45657) and ($r<=47669))
or ($r==59075)
or (($r>=59331) and ($r<=59379))
or (($r>=59388) and ($r<=59399))
}{ListIt2Fachberater item="fb-2"}}
{* .......*}
{/if}
Iemand een idee op welke manier moet ik die ranges in een array zetten?
Kind regards,
HarmO
User avatar
velden
Dev Team Member
Dev Team Member
Posts: 3497
Joined: Mon Nov 28, 2011 9:29 am

Re: List it 2 en arrays

Post by velden »

Het lijkt me dat je met een textarea zonder wysiwyg prima zoiets kan maken.

Efficient zal het nooit echt worden, ook niet in de huidige opzet denk ik.

Je moet feitelijk alle LI2 items doorlopen dan de check uitvoeren op de array en als je een match hebt stop je de loop.

Anyway: textveld met per regel de twee postcodes gescheiden door bijvoorbeeld een streepje, of één postcode

Code: Select all

40000-40822
41000-41999
42404
42781-42799
Vervolgens kun je hieruit een array opbouwen met als delimiter de new line

Vervolgens kun je elk element van die array weer exploden, maar dan als delimiter the hyphen/streepje/min-teken/'-'

Doe in je logic een check of die array 1 of 2 elementen heeft en gebruik die voor de check.

Code: Select all

pseudo code:
{$array=$textarea|explode:"\r\n"}
{foreach var=$array item=$element}
  {$postcoderange=$element|explode:'-'}
  {if ($postcoderange|@count == 1 && $smarty.get.r == $postcoderange[0]) || ($postcoderange|@count == 2 && $smarty.get.r >= $postcoderange[0] && 
$smarty.get.r <= $postcoderange[1])}
       //doe je ding
       {break} 
  {/if}      
{/foreach}
Post Reply

Return to “Dutch - Nederlands”