Jump to content
Sign in to follow this  
stanoliver

simple site search without module

Recommended Posts

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) 

Share this post


Link to post
Share on other sites

Hey stanoliver!

First of all, it's difficult to say exactly how to set this up without knowing how your site has been set up etc. but if you're looking for a simple solution, you might want to take a look at the search template in the "classic" site profile: https://github.com/processwire/processwire/blob/master/site-classic/templates/search.php. This is a very bare-bones approach, though, and as such it doesn't handle things like those highlights – but it might be a sensible starting point for your own custom feature. Just modify the fields to search from etc.

I know you said that you'd like to achieve this without a module, but I do still think that SearchEngine would make sense here. It does quite a bit for you out of the box.

Hope this helps a bit.

Share this post


Link to post
Share on other sites
18 hours ago, stanoliver said:

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.

Not related to search, but: Are these really three templates? i.e. do you really use them as PW-templates, or just as partials that you include() in the template?

18 hours ago, stanoliver said:

The search should work with standard repeaters (where most of my content lives)

Perhaps this is useful: https://processwire.com/blog/posts/processwire-3.0.91-core-updates/

$pages->find("FieldtypeTextarea|FieldtypeText|FieldtypePageTitle%=coffee");

or this: 

 

18 hours ago, stanoliver said:

- The search results/hits should be listed and the search word(s) should have a yellow colored background (inline css is fine) 

Here's an example with PHP: https://stackoverflow.com/questions/9373023/how-can-i-get-a-summary-string-around-a-search-query-within-a-longer-string

Here's a little JS lib: https://markjs.io/

  • Like 1

Share this post


Link to post
Share on other sites

@dragan Your question made sense I am sorry for confusement.

Actually the real templates are like:

- templatehome.php

- templatebasicpage.php

The templates "templatetoparea.php" and "templatefooterarea.php" are included/are partials.

The template "mainarea.pp" made no sense at all. Sorry for confusing you.

Thanks for your help so far I will try out your guys hints.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By slave
      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
       
       
       

    • By TLT
      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...)
    • By RyanJ
      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); }}
    • By Pitbull
      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
    • By AnotherAndrew
      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?
×
×
  • Create New...