За последние 24 часа нас посетили 17329 программистов и 1621 робот. Сейчас ищут 2169 программистов ...

Изменить search.php для ProcessWire

Тема в разделе "Сделайте за меня", создана пользователем aleksbalt, 26 апр 2019.

  1. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    Так навелосипедил, тот search.php переименуйте и создайте другой с этим кодом,
    через запятую вводить номера:
    PHP:
    1. <?php
    2. $out = '';
    3. $count = 0;
    4. if($q = $sanitizer->selectorValue($input->get->q)) {
    5.  
    6.     // whitelist q value
    7.     $input->whitelist('q', $q);
    8.     $operator = "=";
    9.     $fields = "sku|title";
    10.     if(strpos($q, ",") !== false){
    11.         foreach(explode(",", $q) as $v){
    12.             if($v = (int)trim($v)) {
    13.                 $item = $pages->get("template=item, sku=$v");
    14.                 if($item->id) {
    15.                     $count++;
    16.                     $m = $pages->find("template=item, limit=40, sort=headline, $fields{$operator}$v");
    17.                     $prod .= renderProductList($m);
    18.                 }
    19.             }  
    20.         }
    21.     }
    22.     if($count) {
    23.         $out .= "<p>" . sprintf(__("Naytetaan %d tuotteista."), $count) . "</p>";
    24.         $out .= $prod;
    25.     }else{
    26.         $out .= "<p>". __('Ei osumia talla hakutermilla.') ."</p>";
    27.     }
    28.    
    29. } else {
    30.  
    31.     // get default output from page
    32.     $out .= $page->content;
    33.  
    34. }
    35. include './inc/_head.php'; ?>
    36.  
    37.     <article id="content">
    38.         <div class="wrapper">
    39.             <h1><?php echo $pagetitle; ?></h1>
    40.             <?php
    41.  
    42.             echo renderSearchForm();
    43.             echo $out;
    44.  
    45.             ?>
    46.         </div>
    47.     </article>
    48.  
    49. <?php include './inc/_foot.php'; ?>
     
  2. aleksbalt

    aleksbalt Новичок

    С нами с:
    26 апр 2019
    Сообщения:
    16
    Симпатии:
    0
  3. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    Это тест лишь по номерам через запятую, странно что из 3 выводит 2,
    посмотрите что приходит:
    PHP:
    1. // whitelist q value
    2. $input->whitelist('q', $q);
    Там кавычки в строке, так измените,
    PHP:
    1. if($v = (int)trim($v, '"')) {
     
    #28 keren, 1 май 2019
    Последнее редактирование: 1 май 2019
  4. aleksbalt

    aleksbalt Новичок

    С нами с:
    26 апр 2019
    Сообщения:
    16
    Симпатии:
    0
    upload_2019-5-1_17-18-0.png
     

    Вложения:

  5. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    Из-за кавычки пропадало значение, выше добавил что изменить,
    но это общий пример что можно сделать.
     
    aleksbalt нравится это.
  6. aleksbalt

    aleksbalt Новичок

    С нами с:
    26 апр 2019
    Сообщения:
    16
    Симпатии:
    0
    Да, так работает для номеров.
    Можно ли как то этот код поставить не на search.php, так как этот поиск не работает полностью как раньше.

    Можно даже без формы, например из адресной строки. Заместо q= типа s=