Search the Community
Showing results for tags 'search form'.
-
I have a series of videos, and the following search form (translated into English here) that allows to filter these videos on the frontend: I've built a few of these search forms, but only with text fields, selects and radio buttons. Here I'm using an array with checkboxes ("Level" field above), and it's causing me grief when I try to paginate these results. I've done a lot of searching in the forum and spent too many hours to try to get it to work. Here's how I'm building the selector: <?php if(count($input->get)): // Level is an array. Code adapted from Ryan's snippet here: // https://processwire.com/talk/topic/3472-enable-pagination-for-search-results/?tab=comments#comment-38042 if($input->get->level) { $level = array(); foreach($input->get->level as $id) $level[] = (int) $id; // sanitize to INTs $level = implode('|', $level); // convert to 123|456|789 string, ready for selector } else { $level = ''; } $data = array( 'training_type' => array('=', (int) $input->get->training_type), 'duration' => array('=', (int) $input->get->duration), 'level' => array('=', $level), 'limit' => array('=', (int) $input->get->limit) ); $selector = ''; // iterate through the $data we made above to create a selector string foreach($data as $field => $a) { list($operator, $value) = $a; if(empty($value)) continue; // send value to the whitelist so that it can be used in pagination $input->whitelist($field, $value); // append to our selector string $selector .= "$field$operator$value, "; } $videos = $page->children("$selector"); When I hit search, I get the expected results. So far so good. The GET parameters are the following with the options selected in the screenshot above: videos/?level[]=1476&level[]=1477&training_type=1473&duration=1485&limit=10 $selector echoes the following as the "level" field is an array with a pipe character: level=1476|1477, training_type=1473, duration=1485, limit=10 Now, when paginating these results, the following page (page 2) shows these GET parameters: videos/page2/?level=1476|1477&training_type=1473&duration=1486&limit=10 And I think that's where the problem lies. The "level" field is "lost" and I'm getting more results than expected on subsequent pages. If I manually add "page2" to the initial results in the URL, just to test, everything works fine: videos/page2/?level[]=1476&level[]=1477&training_type=1473&duration=1486&limit=10 But how can I achieve this in code? Do I need to revert to "level[]=1475&level[]=1477" instead of "level=1476|1477" for the pagination to work correctly, and can you PHP gods illuminate me? Any help would be really appreciated, really.
- 3 replies
-
- pagination
- checkboxes
-
(and 1 more)
Tagged with:
-
Hi guys So I'm building a little search index for a client with this recipe I've found on the ProcessWire Recipes website (more info: https://processwire-recipes.com/recipes/set-up-search-index-with-fieldtypecache/) I've followed the exact steps in the recipe and the script appears to be working, except for Profields: Repeater Matrix. ? This is the code I've got so far: <?php include('includes/header.php') ?> <?php $q = $sanitizer->selectorValue($input->get->q); if($q) { $results = $pages->find('search_cache%='. $q); } else { $results = new stdClass(); $results->count = 0; } ?> <section class="partners-block-consul mb-5"> <div class="container"> <div class="row"> <div class="col-sm-10 offset-sm-1"> <div class="partners-head sec-p-lg"> <?php if($page->headline) { ?> <h1 class="highlight"><?= $page->headline ?></h1> <?php } ?> <div class="cms text-left"> <p>Er werden <?= $results->count ?> resultaten gevonden.</p> <?php if($results->count > 0){ ?> <ul> <?php foreach($results as $result){ if($result->template->name == "faq_item") { $category = $pages->get("id=".$result->faq_category); $parent_template = $category->rootParent(); ?> <li><?= $result->title ?> - <a href="<?= $parent_template->url . $category->name . "/"; ?>" title="<?= $result->title ?>"><?= $labels->read_more ?></a></li> <?php } elseif($result->template->name == "faq_category") { $parent_template = $result->rootParent(); $faqCategoryUrl = $parent_template->url . $result->name . "/"; ?> <li><?= $result->title ?> - <a href="<?= $faqCategoryUrl; ?>" title="<?= $result->title ?>"><?= $labels->read_more ?></a></li> <?php } else { ?> <li><?= $result->title ?> - <a href="<?= $result->url; ?>" title="<?= $result->title ?>"><?= $labels->read_more ?></a></li> <?php } ?> <?php } ?> </ul> <?php } ?> </div> </div> </div> </div> </div> </section> <?php include('includes/cta.php'); ?> <?php include('includes/footer.php'); ?> In the ProcessWire admin the "search_cache" field is being build as follows (see image 1). Then, the field 'search_cache' is being used on the following templates (see image 2 and 3). So, let's say I'm searching the word 'kinderen', which should get a hit on the template 'Kind', the script isn't returning this page as one of the hits (the result should return 'migraine'). If someone has any idea why the script is not looking for the data that is being put in the field "Profields: Repeater Matrix", he/ she would be my personal hero! ? Greetings Cédric
- 2 replies
-
- search form
- search script
-
(and 2 more)
Tagged with:
-
Hi! I tried to implement a simple site search like in the regular site profile by Ryan. http://demo.processwire.com/regular/ I checked out the code on github but I could not make it work for my site. Probably because Ryan uses some advanced output strategy and uikit specific stuff which I don't use or understand. For my site I just use: - 1 template (name: templatetoparea.php) for the toparea of my site - 1 template (name: templatemainare.php) for the main content of my site - 1 template (name: templatefooterarea.php) for the footerarea of my site. Also I have prepared two empty templates: - 1 template (name: templatesearch.php) for the search itself - 1 template (name: templatelistsearch.php) for listing the search results May somebody could let me know how to implement a very basic site search like in the regular site profile without using any module or complicated output strategies. Two things would be a must have: - The search should work with standard repeaters (where most of my content lives) - The search results/hits should be listed and the search word(s) should have a yellow colored background (inline css is fine)
-
I would like to create a search form with a category selection. I do not get the selector, I need help my selector $katId = $pages->find("template=leftnav_kat, h1_h6_1%=$kat"); its ok $matches = $pages->find("template=site, has_parent=$katId"); its ok myresult this pages (templates = site): MedLab ML +2 °C bis +8 °C 41 Liter MedLab ML +2 °C bis +8 °C 41 Liter MedLab ML +2 °C bis +8 °C 45 Liter MedLab ML +2 °C bis +8 °C 82 Liter MedLab ML +2 °C bis +8 °C 82 Liter LabStar Sanguis +2 °C bis +6 °C 100 Liter MedLab ML +2 °C bis +8 °C 107 Liter LabStar Sanguis +2 °C bis +6 °C 100 Liter MedLab ML +2 °C bis +8 °C 82 Liter but I'm looking for a text in the template = site, this template has a field search_cache $katId = $pages->find("template=leftnav_kat, h1_h6_1%=$kat"); its ok $matches = $pages->find("template=site, has_parent=$katId, search_cache%=Industrie"); not work I need help
-
Hello, and thanks again for PW. The more I use it, the more I like it. I have a silly problem, and since I have tested several (bad) solutions, I come and ask for help. I think I'm just being thick there... Is there a relatively simple way to add an allowed character to the default search form's sanitizer ? FYI, I'm working on a dictionary in breton language (60k entries), and I must find a way to allow apostrophes in search input. (In breton language, "CH" and "C'H" are actually two different letters altogether). I must say I'm a bit confused by the sanitizer. On the regular search form, it appears three times. Once in the input field itself, and twice on the search template. I did read the sanitizer page and sanitizer class page, but I'm not sure to understand where to go from there. From what I understand, the $sanitizer->name methods would accept some extra allowed character, but I seem to have no luck in adding this to my template. Morevover, do I have to change any sanitizer call to a -> name one ? The sanitizer php core page includes an "allowedASCII" which seems very promising, but is there a way to override it ? Hooks ? (not used to them I'm affraid...) Morevover, the fact that i'm trying to implement the (') character worries my a bit. Can I escape it ? would something like '\'' do the trick ? Thank in advance to you, good men. The site building is reaching an end, and I am tired indeed. (you wouldn't believe the state of the initial DB I had to work from...)
-
Need some help with these this filter if anyone can point me in the right direction. I altered the below from the skyscraper profile to meet my needs, but can not seem to get it to work in my case. The actual drop down on the form works properly displaying all locations, but I cant get the output to search what is selected. What am I missing? I am trying to grab all the employees when a specific location is selected. My structure is root Location 1 - employee -- jane doe -- jone doe Location 2 -employee -- jane smith form drop down for child page <select name="location"> <option value="">any</option> <?php foreach($pages->get("/")->children("id!=10") as $location) { $selected = $location->title == $input->whitelist->location ? " selected='selected' " : ''; echo "<option$selected value='{$location->id}'>{$location->title}</option>"; } ?> </select> output for child page if($input->get->location) { $location = $pages->get("template=location" . $sanitizer->pageName($input->get->location)); if($location->id) { $selector .= "location={$location}, "; $input->whitelist('location', $location->name); }}
- 21 replies
-
- search form
- search
-
(and 1 more)
Tagged with:
-
Hi forum i need to make a search form to search filter property fields like the Skyscrapers profile i download and try to find out how to do it but i am confused.. the pages layout is like this Property Sales Houses | Maisonettes | Apartments | Villas --Apartments -- Villas -----Luxury Stone Villa 455tm Plots Commercial Properties i need a search engine to search this fields City Town Property Type Property Title it will be perfect if somebody that have made a search form with filters and can find time to post a step by step guide how to do.. (i am so newbie) thank you in advance and sory for my bad english
-
I'm trying to implement a different version of the search form for my site. The original and functioning code for the search form is this: <form id='search_form' action='<?php echo $config->urls->root?>search/' method='get'> <input type='text' name='q' id='search_query' value='<?php echo htmlentities($input->whitelist('q'), ENT_QUOTES); ?>'/> <button type='submit' id='search_submit'>Search</button> </form> I want to have an input field to be "hidden" and when clicked on "search" then the input field is revealed and upon return the search query is submitted. So I implemented this code to do that: <form id='searchform' action='<?php echo $config->urls->root?>search/' method='get'> <input type='hidden' name='q' id='search_query' value="<?php echo htmlentities($input->whitelist('q'), ENT_QUOTES); ?>"/> <input id="searchterm" name="searchterm" type="text" value="Search" /> </form> And my jquery is: $('#searchterm').focus( function(){ if ( $(this).val() == 'Search' ){ $(this).val('') }; $(this).addClass('searchinputfocused'); }); $('#searchterm').blur( function(){ if ( $(this).val() == '' ){ $(this).val('Search') }; $(this).removeClass('searchinputfocused'); }); However, when I submit a query, it does not return a valid search and nothing is revealed. Does anyone know why not and how I can fix this?
-
Sorry for this dummy question, I'm newbie for processwire. I try to make new field for search form from "drop down module" but nothing happens. Take a look: <select id='country' data-placeholder="Country" placeholder="Country" name='country'> <option value=''></option><?php foreach($country as $count){ $selected = $count == $input->whitelist->country ? " selected='selected' " : ''; echo "<option value='$count'>$count</option>";} ?> </select> What am I doing wrong? Cheers, a.
- 5 replies
-
- search form
- select
-
(and 1 more)
Tagged with:
-
The search form on the basic install works fine and is great... But if I add a new text field, i can't get it's content to appear in my search results. Do i need to configure new fields somehow to make them 'searchable' ? alex