No Name

No Name

+86
Репутация
-94
Рейтинг
#1 AJAX фильтр без перезагрузки страницы 21 сентября 2023 в 15:32

код один и тот же )) понять не могу но на локалке всё работает а на хостинге ошибки — Uncaught SyntaxError: Unexpected token 'var'

Добавлено спустя 54 минуты

вроде разобрался, но просто интересно почему на локалке работало )))

#2 AJAX фильтр без перезагрузки страницы 21 сентября 2023 в 14:10

 Loadырь, рано радовался, на локалке на компе всё работает, а как перенёс на хостинг перестало работать ошибки посыпались, думаю проблема в том что мой сайт на поддомене, можно как то работать с localStorage на поддомене ?

#3 AJAX фильтр без перезагрузки страницы 18 сентября 2023 в 13:25

 Loadырь, большое спасибо, внедряю в код, пока что всё получается ))

#4 AJAX фильтр без перезагрузки страницы 17 сентября 2023 в 11:45

вот суть проблемы
есть файл шаблона, \templates\modern\content\default_list_person_in_perens.tpl.php
там выводится список работников  из типа контента работники, в этом файле при нажатии на кнопку «добавить в список» напротив каждого работника — id этого работника заносится в массив и кнопка возле работника меняется на галочку (типа добавлен — при нажатии на галочку вновь появляется надпись добавить и из массива работник удаляется), так же появляется кнопка сбоку сформировать список и при нажатии на эту кнопку method=«post» через скрипт массив с id улетает на страницу list_person.tpl.php (это шаблон виджета и этот виджет выведен на определенной странице сайта и там выводится список именно выделенных работников)
всё работает хорошо, но есть проблемы которые не могу решить:
1. так как работников много то используется стандартный фильтр и конечно при фильтрации массив обнуляется (видимо нужно как то через сессии сохранять этот массив)
2. хотелось бы вывести выделенных уже работников на самой странице где выделяем, что бы визуально было видно кто уже выделен

хотел код вставить в кнопку кода тут но что то вереска форума поехала и написало мне Слишком длинное значение (макс. длина: 65535) ошибка ))))


вот ФАЙЛ default_list_person_in_perens.tpl.php

<script>
 var arr = [];
 var butt_form = document.getElementsByClassName('my_no_botoon');
</script>


<?php
  
if( $ctype['options']['list_show_filter'] ) {
    $this->renderAsset('ui/filter-panel', [
        'css_prefix'   => $ctype['name'],
        'page_url'     => $page_url,
        'fields'       => $fields,
        'props_fields' => $props_fields,
        'props'        => $props,
        'filters'      => $filters,
        'ext_hidden_params' => $ext_hidden_params,
        'is_expanded'  => $ctype['options']['list_expand_filter']
    ]);
}
?>
<?php if (!$items){ ?>
 
    <p class=«alert alert-info mt-4 alert-list-empty»>
        <?php if(!empty($ctype['labels']['many'])){ ?>
            <?php echo sprintf(LANG_TARGET_LIST_EMPTY, $ctype['labels']['many']); ?>
        <?php } else { ?>
            <?php echo LANG_LIST_EMPTY; ?>
        <?php } ?>
    </p>
<?php return; } ?>


<?php $first_item = reset($items); ?>
<div class=«container»>
 <div class=«row»>
   <div class=«col-sm h-100 sticky-top order-2 order-sm-2 order-lg-2»>
 <!--  кнопка сформировать список  start --> 
<div style=«text-align:right;display:none;» class=«my_no_botoon»> 
 <form name=«send_mass_sotrud» method=«post» target="_blank" action="/list-person.html"> 
      <input type=hidden name='mass_list_sutrudnik' id=«id_input_form» value="">   
      <input type=«submit» value=«Сформировать документы» class=«btn btn-secondary»>
 </form> 
</div>
<?php 
var_dump(); 
?>
</div>
<!--  кнопка сформировать список end  -->


<div class=«col-sm-12 col-md-9 order-2 order-sm-2 order-lg-1»>
 
<div class=«content_list table <?php echo $ctype['name']; ?>_list table-responsive-md»>
    <table class=«table table-hover»>        
        <tbody>
        <?php foreach($items as $item){ ?> 
            <tr>
            <?php foreach($item['fields_names'] as $_field){ ?>
            <?php if ($_field['name'] != 'parent_company_id'){ ?>
                <td class=«align-middle field ft_<?php echo $_field['type']; ?> f_<?php echo $_field['name']; ?><?php if ($_field['label_pos'] === 'none') { ?> d-none d-lg-table-cell<?php } ?>»>
                    <?php if (!isset($item['fields'][$_field['name']])) { continue; } ?>
                    <?php $field = $item['fields'][$_field['name']]; ?>
                    <?php if ($field['name'] === 'title' && $ctype['options']['item_on']){ ?>
                        <h3 class=«h5 m-0»>                  
 <span class=«d-none d-md-inline-block»><?php html_svg_icon('solid', 'user'); ?></span>  
                        <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>">
                            <?php echo $item['lastname'] ;?>
 <?php html($item[$field['name']]); ?>
 <?php echo $item['surname'] ;?>
                        </a>
                        </h3>
                    <?php } else { ?>
 
                    <?php } ?>
                </td><?php } ?>
            <?php } ?>
            <?php if (!empty($item['info_bar'])){ ?>
                <td class=«align-middle d-none d-lg-table-cell»>
                    <div class=«info_bar»>
                        <?php foreach($item['info_bar'] as $bar){ ?>
                            <div class=«bar_item <?php echo !empty($bar['css'])? $bar['css']: ''; ?>» title="<?php html(!empty($bar['title'])? $bar['title']: ''); ?>">
                                <?php if (!empty($bar['icon'])){ ?>
                                    <?php html_svg_icon('solid', $bar['icon']); ?>
                                <?php } ?>
                                <?php if (!empty($bar['href'])){ ?>
                                    <a class=«stretched-link» href="<?php echo $bar['href']; ?>">
                                        <?php echo $bar['html']; ?>
                                    </a>
                                <?php } else { ?>
                                    <?php echo $bar['html']; ?>
                                <?php } ?>
                            </div>
                        <?php } ?>
                    </div>
                </td>
<!--    показываем кнопку добавить в список если есть сотрудники --> 
 <?php if (count($items) > 0) { ?>
 <td style=«width: 200px;text-align: center;»>
 <a href="#" id=«person_add<?php html($item['id']); ?>»>
 Добавить в список
 </a>
 </td>
 <?php } ?>
<!--    показываем кнопку добавить в список если есть сотрудники --> 
 
<script> 
 document.getElementById('person_add<?php html($item['id']); ?>').addEventListener('click', function (event) {
    event.preventDefault(); //отключает переход по ссылке
 
 if(this.innerHTML == '<?php html_svg_icon('solid', 'check'); ?>'){
 
 arr.forEach((item, index, array) => { 
  
 if (item == <?php html($item['id']); ?>) {arr.splice(index, 1);} // удаляем текущий id из массива
 if(arr.length == 0){butt_form[0].classList.remove(«d-block»);} //скрываем кнопку если массив пустой
 });


 console.log(arr); 
 this.innerHTML = 'Добавить в список';
 } else { 
 
 butt_form[0].classList.add(«d-block»); // показываем кнопку формирования документа
 arr.splice(0, 0, <?php html($item['id']); ?>); // добавляем текущий id в массив
 console.log(arr);
 //<?php $_SESSION['my_arr_new'] = html($item['id']); ?>
 //var sess = <?php echo $_SESSION['my_arr_new']; ?>;
 //console.log(sess);
 
    this.innerHTML = '<?php html_svg_icon('solid', 'check'); ?>';
 console.log(arr);
 var json_upload = JSON.stringify({arr});
 console.log(json_upload); 
 }
 
   // Получаем элемент input
      const myVarInput = document.getElementById('id_input_form');


      // Устанавливаем значение
   var json_upload2 = JSON.stringify({arr});
      myVarInput.value = json_upload2;


      // Отправляем форму на сервер
     // document.querySelector('form').submit;   
 
})


</script> 
            <?php } ?>
            </tr> 
        <?php } ?>
        </tbody>
    </table> 


<script>
   
</script>


</div>


</div>
<?php echo html_pagebar($page, $perpage, $total, $page_url, $filter_query); ?>

вот файл list_person.tpl.php

<?php
 //echo $_SESSION['my_arr_new'];
 echo '------------<br>';
 $list_sotrudnik = cmsCore::getModel('content')->getContentItems('person');
 $mass_list_sutrudnik = $_POST['mass_list_sutrudnik'];
 $decoded_json = json_decode($mass_list_sutrudnik, true); 
 //var_dump($decoded_json); 
 foreach ($decoded_json['arr'] as $value) {      
  echo $list_sotrudnik[$value]['title'];
  echo ' ';
  echo $list_sotrudnik[$value]['lastname'];
  echo '<br>';
 }
?> 
#5 AJAX фильтр без перезагрузки страницы 16 сентября 2023 в 16:39

Мой массив обнуляется когда фильтрую данные по кнопке фильтра, а не когда отправляю запрос, в самом начале об этом писал

#6 AJAX фильтр без перезагрузки страницы 16 сентября 2023 в 14:56

Можно поподробнее) если поменять метод передачи, это как то повлияет на то что бы массив при фильтрации не обнуляется? 

#1 AJAX фильтр без перезагрузки страницы 16 сентября 2023 в 13:53

Всем мира
подскажите можно ли как то вообще реализовать такое — AJAX фильтр без перезагрузки страницы
суть вопроса, — список контента, там я сделал кнопку возле каждого item и при нажатии в массив заносится id этой записи, потом при нажатии lheujq кнопки этот массив методом POST отправляется на нужную страницу (то есть на эту страницу мне нужно отправить id только определенных записей), но так как записей много нужно фильтровать и конечно при фильтрации страница обновляется и мой массив скидывается в первоначальное состояние, как победить эту проблему ?

#7 [ЕСТЬ РЕШЕНИЕ] как Изолировать блок от css системы ? 16 сентября 2023 в 13:40

 Hmelex, спасибо, почитал, разобрался

#8 [ЕСТЬ РЕШЕНИЕ] как Изолировать блок от css системы ? 14 сентября 2023 в 16:31

 Zau4man, спасибо, попробовал но к сожалению так немного не подошло для меня, в принципе почти все стили получилось нормализовать, но остался один и вот с ним не как не справится, это что вообще за тег такой ? — <o:p>, вот с ним походу проблемы именно в этом теге стоит пустой символ " "  и это влияет на высоту строки, можно как то боротся с этим тегом ?

#1 [ЕСТЬ РЕШЕНИЕ] как Изолировать блок от css системы ? 14 сентября 2023 в 08:14

Всем мира
есть документ в word его сохранил как страницу html вставляю на страницу  и конечно подтягиваются все стили системы, и документ уже не как оригинал в word, есть ли возможность закинуть как то в div и ему прописать собственные стили(что бы от бустрапа и системы стили вообще не влияли на этот блок ) ?

#9 Опасно ли прямой запрос в базу данных ? 5 сентября 2023 в 11:34

вы уверенны, что в переменную $user_email прилетит только email и ничто другое

Loadырь

валидатор в настройке поля включён на email, этого хватит ?

#1 Опасно ли прямой запрос в базу данных ? 5 сентября 2023 в 06:13

Всем привет!
краткая история - 
есть два сайта — один на основном домене, другой на поддомене, обои на последней версии движка, у каждого своя база данных
мне нужно получить данные пользователя из основного сайта на сайт который в поддомене, 
на сайте в поддомене который, я написал напрямую запрос в базу основного сайта и получаю данные пользователя нужного, всё работает
то есть прописываю напрямую типа так - 

  1. <?php
  2. $host = 'localhost';
  3. $user = '********';
  4. $pass = '********';
  5. $db_name = '*******'; // Имя базы данных
  6. $link = mysqli_connect($host, $user, $pass, $db_name); // Соединяемся с базой
  7.  
  8. // Ругаемся, если соединение установить не удалось
  9. if (!$link) {
  10. echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
  11. exit;}
  12.  
  13. $user_data_podersh_do = mysqli_query($link, "SELECT `data_podderska` FROM `cms_users` WHERE email='$user_email'");
  14. $row = mysqli_fetch_assoc($user_data_podersh_do);
  15. $data_user_podder_do = $row['data_podderska'];
  16. $date_podd_format = (new DateTime($data_user_podder_do))->Format('d.m.Y');
  17. echo $date_podd_format;
  18.  
  19. ?>
  20.  

всё работае как нужно, но так как только начал разбирается с базой, сомнения вообще правильный ли подход? какие последствия для безопасности? как по другому по правильному сделать ?
хотел через API но не нашел метода получения списка пользователей в компоненте от разработчиков
заранее спасибо

 


Добавлено спустя 11 часов

решил все таки делать через API — метод получение с другого сайта пользователей написал сам, работает, и вывести данные пользователей то же получилось на сайт донор, но вопрос по базе  данных что выше остаются открытым, спасибо

#10 Кнопка подписка в профиле убрать 4 сентября 2023 в 16:08

 Zau4man, Разрешить добавление друзей — у меня отключено!
не могу понять логику — если эту оптацию включаю то кнопка подписаться пропадает но появляется кнопка добавить в друзья, но мне социальность вообще  не нужна в профилях, то есть не нужно не подписывается не добавлять в друзья !  что то не могу разобраться 

#1 Кнопка подписка в профиле убрать 3 сентября 2023 в 05:30

Привет, отключил полностью компонент подписок, вроде облазил всю админку но не нашёл как убрать кнопку подписаться при заходе в другой профиль,, как убрать? хуком мутить *? или display; none срыть ? 

Изображение

#11 [ЕСТЬ РЕШЕНИЕ] как получить id открытого профиля в своём хуке ? 3 сентября 2023 в 05:26

 My-InstantCMS.Ru, Большое спасибо — работает!

🍪Мы используем файлы cookie для работы сайта. Читать подробнее.