За последние 24 часа нас посетили 17130 программистов и 1642 робота. Сейчас ищут 1225 программистов ...

Поправить фильтр

Тема в разделе "Wordpress", создана пользователем DePacos, 29 янв 2018.

  1. DePacos

    DePacos Новичок

    С нами с:
    25 ноя 2017
    Сообщения:
    9
    Симпатии:
    1
    Здравствуйте уважаемые форумчане, подскажите пожалуйста, как поправить, фильтр так, что бы вместо "не выбрано" в строках отображалось: Образование, Опыт работы, Тип занятости, График работы, Специальность, Зарплата.

    https://clip2net.com/s/3RsvoBQ

    PHP:
    1. <?php
    2.  
    3. $filters = array(
    4.     'education' => array(
    5.         'name' => 'Образование',
    6.         'options' => array('1' => 'Высшее', '2' => 'Незаконченное высшее', '3' => 'Среднее профессиональное', '4' => 'Среднее')
    7.     ),
    8.     'experience' => array(
    9.         'name' => 'Опыт работы',
    10.         'options' => array('1' => '1-3 года', '2' => '3-5 лет', '3' => '&gt; 5 лет')
    11.     ),
    12.     'employment' => array(
    13.         'name' => 'Тип занятости',
    14.         'options' => array('1' => 'Полная', '2' => 'Частичная', '3' => 'Сезонная', '4' => 'Временная', '5' => 'Стажировка', '6' => 'Удалённая')
    15.     ),
    16.     'schedule' => array(
    17.         'name' => 'График работы',
    18.         'options' => array('1' => 'Полный день', '2' => 'Неполный день', '3' => 'Гибкий график', '4' => 'Сменный график', '5' => 'Вахтовый метод', '6' => 'Ненормированный')
    19.     ),
    20.     'specialisation' => array(
    21.         'name' => 'Специальность',
    22.         'options' => array(
    23.             '1' => 'Здравоохранение, спорт, красота, социальное обеспечение', '2' => 'Искусство, культура и развлечения', '3' => 'Туризм, гостиницы, рестораны')
    24.     ),
    25.     'salary' => array(
    26.         'name' => 'Зарплата',
    27.         'options' => array(
    28.             '10000' => '&gt; 10000 руб.', '30000' => '&gt; 30000 руб.', '50000' => '&gt; 50000 руб.',
    29.             '65000' => '&gt; 65000 руб.', '80000' => '&gt; 80000 руб.', '100000' => '&gt; 100 000 руб.'
    30.         )
    31.     )
    32. );
    33. $text = empty($_POST['text']) ? '' : htmlspecialchars(trim($_POST['text']), ENT_QUOTES);
    34. $js_filters = '{text: "' . $text . '"';
    35. foreach ($filters as $name => $val) {
    36.     $filters[$name]['value'] = (!empty($_POST[$name]) && !empty($val['options'][$_POST[$name]])) ? $_POST[$name] : '0';
    37.     $js_filters .= ', ' . $name . ': ' . intval($filters[$name]['value']);
    38. }
    39. $js_filters .= '};';
    40.  
    41. ?>
    42.  
    43. <?php get_header(); ?>
    44.  
    45. <script type="text/javascript">
    46.         document.filter = <?= $js_filters ?>
    47.         function load_vacancies(page) {
    48.             var search_results = jQuery('#search_results');
    49.             post_data = document.filter;
    50.             post_data.page = page;
    51.             search_results.html('<center><img src="/wp-includes/images/loading.gif" alt=""></center>');
    52.             jQuery.post('/job-search/get.php', post_data, function(data) {
    53.                 jQuery(".vcsl-items").masonry('destroy');
    54.                 search_results.html(data);
    55.                 jQuery("[data-job-num="+page+"]").addClass("active");
    56.                 setTimeout(function(){
    57.                     jQuery(".vcsl-items").masonry({
    58.                         percentPosition: true,
    59.                         columnWidth: '.grid-sizer',
    60.                         itemSelector: '.vcsl-item-box'
    61.                     });
    62.                 }, 500);
    63.             });
    64.         }
    65.  
    66.         function load_vacancies_plus(page) {
    67.             post_data = document.filter;
    68.             post_data.page = page;
    69.             post_data.plus = 'plus';
    70. //            jQuery('#search_results').html('<center><img src="/wp-includes/images/loading.gif" alt=""></center>');
    71.             jQuery.post('/job-search/get.php', post_data, function(data) {
    72.                 var vcsl_items = jQuery(".vcsl-items");
    73.                 jQuery('.vcsl-items-more-wrap').remove();
    74. //                jQuery('.vcsl-items-pagination').remove();
    75.                 vcsl_items.masonry('destroy');
    76.                 vcsl_items.append(data);
    77. //                jQuery(".vcsl-items-pagination li").removeClass("active");
    78. //                console.log(page);
    79.                 setTimeout(function(){
    80.                     jQuery(".vcsl-items").masonry({
    81.                         percentPosition: true,
    82.                         columnWidth: '.grid-sizer',
    83.                         itemSelector: '.vcsl-item-box'
    84.                     });
    85.                     vcsl_items.after(jQuery('.vcsl-items-more-wrap'));
    86.                     jQuery("[data-job-num="+page+"]").addClass("active");
    87.  
    88.                 }, 50);
    89.  
    90.             });
    91.         }
    92.  
    93.         jQuery(document).ready(function () {
    94.             load_vacancies(1);
    95.  
    96.             setTimeout(function(){
    97.                 jQuery(".vcsl-items").masonry({
    98.                     percentPosition: true,
    99.                     columnWidth: '.grid-sizer',
    100.                     itemSelector: '.vcsl-item-box'
    101.                 });
    102.             }, 50);
    103.  
    104.             jQuery('#filter').click(function () {
    105.                 document.filter = {
    106.                     text: jQuery("#text").val(),
    107.                     education: jQuery("#education").val(),
    108.                     experience: jQuery("#experience").val(),
    109.                     employment: jQuery("#employment").val(),
    110.                     schedule: jQuery("#schedule").val(),
    111.                     specialisation: jQuery("#specialisation").val(),
    112.                     salary: jQuery("#salary").val()
    113.                 }
    114.                 load_vacancies(1);
    115.             });
    116.  
    117.  
    118.  
    119.  
    120.         });
    121.     </script>
    122.  
    123.     <main>
    124.         <section class="top-heading">
    125.             <div class="container">
    126.                 <?php dimox_breadcrumbs(); ?>
    127.  
    128.                 <h2 class="page-title">Трудоустройство</h2>
    129.  
    130.                 <div class="th-filters">
    131.                     <div class="th-filters-block">
    132.                         <input placeholder="Название вакансии, ключевые слова" class="s field" id="text" type="text"  value="<?= $text ?>">
    133.                     </div>
    134.                     <?php $countSearch = 1; ?>
    135.                         <?php foreach ($filters as $name => $val): ?>
    136.                             <div class="th-filters-block">
    137.                                 <span>0<?php echo $countSearch; ?></span>
    138.                                 <select id="<?= $name ?>">
    139.                                     <option value="0">не выбрано</option>
    140.                                     <?php foreach ($val['options'] as $n => $v): ?>
    141.                                         <option value="<?= $n ?>"<?= ($val['value'] == $n) ? ' selected="selected"' : ''; ?>><?= $v ?></option>
    142.                                     <?php endforeach; ?>
    143.                                 </select>
    144.                             </div>
    145.                             <?php $countSearch++; ?>
    146.                         <?php endforeach; ?>
    147.                         <br>
    148.                         <button id="filter">Применить фильтр</button>
    149.  
    150.                 </div>
    151.  
    152.             </div>
    153.         </section>
    154.  
    155.         <div class="vcs">
    156.             <div class="container">
    157.                 <div class="vcs-box">
    158.                     <div id="search_results" class="vcsl">
    159.  
    160. <!--                            AJAX-->
    161.  
    162.                     </div>
     
    #1 DePacos, 29 янв 2018
    Последнее редактирование модератором: 30 янв 2018
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.861
    Симпатии:
    752
    Адрес:
    Татарстан
    да что вы как дети малые - правил не читаете, спец теги для кода не используете - не уважаете сообщество, заставляете глаза "ломать"
     
  3. DePacos

    DePacos Новичок

    С нами с:
    25 ноя 2017
    Сообщения:
    9
    Симпатии:
    1
    извините, исправлюсь, если есть возможность подскажите пожалуйста, как реализовать задачу.
     
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @DePacos, в 139-й строке вместо "не выбрано" можете подставить значение, соответствующее индексу 'name', аналогично тому, как чуть ниже используются значения массива по индексу 'options'