We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 4377
    • 15 Posts
    Dag allemaal,

    ik zit met het volgende probleem:

    Ik heb een aantal documenten in een container. Ik wil kunnen zoeken op deze documenten vanuit 1 formulier.
    Dit lukt mij met simpel Ajaxsearch.

    Maar nu wil ik ook kunnen filteren binnen mijn zoekopdracht (zoals ditto dat doet met &filter=``).
    Oftewel het zoekformulier bestaat dan uit:

    • Tekstveld (zoekopties waar opgezocht kan worden)
    • Selectveld (aan de optie moeten de getoonde resultaten voldoen)
    • Nog een selectveld met dezelfde optie
    • submitbutton, submit het formulier

    Ik heb geprobeerd om met Ajaxsearch de &filter optie te gebruiken
    [!AjaxSearch? &ajaxSearch=`0` &AS_landing=`250` &tplResults=`zoekresultaten_vac_outer` &tplResult=`zoekresultaten_vac` &tplLayout=`zoek_form`  &parents=`5` &tvPhx=`tv:displayTV` &AS_showForm=`0` &filter=`pagetitle,#,1`  !]

    Maar deze geeft een keiharde foutmelding:
    Fatal error: Call to undefined method DocumentParser::getRecordCount() in /*/*/*/*/assets/snippets/ajaxSearch/classes/search.class.inc.php on line 1360


    Is er iemand die een idee heeft om extra zoekfuncties toe te voegen aan een zoekveld op deze manier?
      • 18940
      • 152 Posts
      Kijk even naar de laatste versie van AjaxSearch ( http://www.modx2.wangba.fr/index.php?id=8 ) deze lijkt heel goed om te gaan met (live)filters smiley succes.
        Quality doesn't need a big signature.
        • 4377
        • 15 Posts
        Bedankt voor de tip!
        Het is gelukt. Voor degene die het willen weten, dit heb ik gedaan:

        Allereerst geupdate naar 1.9.0

        Ik roep mijn ajaxsearch form aan zonder ajax en met een eigen template:
        [!AjaxSearch? &ajaxSearch=`0` &landingPage=`289` &showIntro=`0` &tplInput=`zoek_form` &parents=`66` &showResults=`0`  !]

        Template zoek_form is als volgt:
        [+as.showInputForm:is=`1`:then=`
        <form id="[+as.formId+]" action="[+as.formAction+]" method="post">
          [+as.showAsId:is=`1`:then=`<input type="hidden" name="[+as.asName+]" value="[+as.asId+]" />`+]
            <input type="hidden" name="advsearch" value="[+as.advSearch+]" />
            <label>
              <input id="[+as.inputId+]" class="cleardefault textfield" type="text" name="search" value="[+as.inputValue+]"[+as.inputOptions+] />
            </label>
        <label>
        <select id="vakgebied" name="vakgebied">
        <option value="">Selecteer vakgebied</option>
        <option value="">Geen voorkeur</option>
        <option value="Administratief en Secretarieel">Administratief &amp Secretarieel</option>
        <option value="Automatisering">Automatisering</option>
        <option value="Bouw">Bouw</option>
        <option value="Commercieel">Commercieel</option>
        <option value="Elektrotechniek">Elektrotechniek</option>
        <option value="Financieel">Financieel</option>
        <option value="Gezondheidszorg">Gezondheidszorg</option>
        <option value="Havens en Logistiek">Havens & Logistiek</option>
        <option value="Productie en Industrie">Productie & Industrie</option>
        <option value="Laboratoriumtechniek">Laboratoriumtechniek</option>
        <option value="Metaaltechniek">Metaaltechniek</option>
        <option value="Procestechniek">Procestechniek</option>
        <option value="Techniek">Techniek</option>
        </select>
        </label>
        <label>
        <select name="regio">
        <option value="">Selecteer regio</option>
        <option value="">Geen voorkeur</option>
        <option value="Flevoland">Flevoland</option>
        <option value="Noord-Brabant">Noord-Brabant</option>
        <option value="Noord-Holland">Noord-Holland</option>
        <option value="Utrecht">Utrecht</option>
        <option value="Zuid-Holland">Zuid-Holland</option>
        </select>
        </label>
        <label>
        <select id="opleidingsniveau" name="opleidingsniveau">
        <option value="">Selecteer opleidingsniveau</option>
        <option value="">Geen voorkeur</option>
        <option value="LBO / VMBO">LBO / VMBO</option>
        <option value="MBO">MBO</option>
        <option value="HBO">HBO</option>
        <option value="WO">WO</option>
        </select>
        </label>
            [+as.liveSearch:is=`0`:then=`
                <label>
                    <input id="[+as.submitId+]" type="submit" name="sub" class="submitbutton cleardefault" value="[+as.submitText+]" />
        
                </label>
            `+]
        </form>
        <br class="clearboth">
        `+]
        [+as.showIntro:is=`1`:then=`
        <p class="ajaxSearch_intro" id="ajaxSearch_intro">[+as.introMessage+]</p>
        `+]

        Op de landingspage ’289’ gebruik ik de volgende ajaxsearch call om mijn resultaten te tonen:
        [!AjaxSearch? &ajaxSearch=`0` &parents=`5` &tplResults=`zoekresultaten_vac_outer` &tplResult=`zoekresultaten_vac` &landingPage=`250` &showIntro=`0` &tplInput=`zoek_form_breed`  &showInputForm=`0`  &tvPhx=`regio,opleidingsniveau,vakgebied` &grabMax=`0` &tplGrpResult=`tpl_grp_result` &filter=`[!filter_vac!]` &minChars=`0` !]

        En daar zet ik dus een snippit in de filter parameter en deze ziet er als volgt uit:
        <?php
        if(!empty($_POST['vakgebied'])){
        	$output.= 'vakgebied,'.$_POST['vakgebied'].',1|';
        }
        if(!empty($_POST['regio'])){
        	$output.= 'regio,'.$_POST['regio'].',1|';
        }
        if(!empty($_POST['opleidingsniveau'])){
        	$output.= 'opleidingsniveau,'.$_POST['opleidingsniveau'].',1|';
        }
        return $output;
        ?>


        Op het moment dat ajaxsearch verstuurd neemt hij mijn variabelen mee en haalt deze op de andere pagina op.

        Het enige probleem wat ik nu nog heb is dat ik minimaal 3 karakters op moet geven om te zoeken. Het zou mooier zijn als hij in dat geval op alle documenten zocht en die filterde op de gekozen opties. Een trefwoord is nu nog verplicht. Ik heb het in de config van ajaxsearch geprobeerd uit te schakelen maar dit geeft geen reactie. Iemand daar nog een oplossing voor?
          • 4377
          • 15 Posts
          Ik heb ook een oplossing bedacht op dit probleem via PHx.

          Dit is mijn template voor de zoekresultaten outer (&tplResults):
          [+phx:if=`[+as.searchString:len+]`:is=``:then=`
          [[Ditto? &parents=`5` &display=`99` &paginate=`0` &paginateAlwaysShowLinks=`0` &tplPaginatePrevious=`vorigetpl` &tplPaginateNext=`volgendetpl` &noResults=`noresults_filter` &tpl=`filterresultaten_vac` &filter=`id,291,2||[[filter_vac]]` ]]
          `:else=`
          [+as.noResults:is=`1`:then=`
          <div class="[+as.noResultClass+]">
              [+as.noResultText+]
            </div>
          `:else=`
            [+as.listGrpResults+]
          `+]`+]

          Ik check via PHx of de [+as.searchString+] leeg is
          [+phx:if=`[+as.searchString:len+]`:is=``:then=`

          en voer dan een dittocall uit op de container waarbinnen gezocht wordt wat resulteert in alle documenten. Op deze ditto zit dan nog dezelfde filter als op AjaxSearch waardoor overig ingevulde formuliervelden worden meegenomen en gefilterd van de ditto af. Zo kan ik dus zoeken en filteren vanuit 1 formulier en werkt ajaxSearch ook als ik geen trefwoord mee geef.

          Is er wel een trefwoord dan voert hij de normale zoekopdracht uit en geeft het resultaat.
            • 18940
            • 152 Posts
            Leuk om te horen dat het gelukt is, bedankt voor het delen van je oplossing.

            /m
              Quality doesn&#39;t need a big signature.
              • 4377
              • 15 Posts
              Jij bedankt voor de tip van de nieuwe versie van AjaxSearch! Thnx!