Неверное отображение выпадающего списка в фильтре (чистая система)

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#16 29 сентября 2021 в 09:58

 KoRn, пробуйте вот так:

  1. <?php
  2. $device_type = cmsRequest::getDeviceType(); //сначала пробуйте без этой строки (скорей всего переменная уже есть и содержит что надо)
  3. if($device_type == 'desktop'){ //не выполняем на пк
  4. ob_start(); ?>
  5. <script>
  6. $(function(){
  7. $(".f_sroc > label").hide();//скрываем заголовки полей
  8. $(".f_rion > label ").hide();
  9. $(".f_metro > label").hide();
  10. $(".f_orientir > label").hide();
  11. });
  12. </script>
  13. <?php $this->addBottom(ob_get_clean()); } ?>

При этом учтите: код выполнится ровно столько раз, сколько будет на странице виджетов с шаблоном где этот код есть (в т.ч и оболочек виджетов, если код вставить код туда). В принципе, можно сделать для каждого виджета свой дополнительный шаблон. Не делайте так, если код понадобится больше одного раза. Либо выносите во внешний скрипт и подключайте его через штатные функции с тем же условием на устройство, либо уж просто вставьте скрипты внизу того же main.tpl.php

Самое главное: для скрытия заголовков вообще скрипт не нужен! Если не собираетесь переключать их видимость динамично, достаточно только стилей:

  1. /* Скрываем заголовки на телефонах и планшетах. Скорей всего понадобится правила с id соответствующего виджета (чтобы скрыть только у них) */
  2. #mobile_device_type .f_sroc > label,
  3. #tablet_device_type .f_sroc > label {
  4. display: none;
  5. }

Удачи!

 

#17 29 сентября 2021 в 18:20

В общем господа, вроде бы работает. На мобилках отключается.

  1. if($device_type != 'desktop'){
  2. $(function(){
  3. $("#etaj_filter163 option[value='']").remove();
  4. $("#sroc_filter163 option[value='']").remove();
  5. $("#orientir_filter163 option[value='']").remove();
  6. $("#rion_filter163 option[value='']").remove();
  7. $("#metro_filter163 option[value='']").remove();
  8. $("#teh_filter163 option[value='']").remove();
  9. });
  10. };

Ну и собственно поместить в шаблон виджета труда не составит))

KoRn

Можно в одну строчку выбрать эти элементы.

  1. $('select[id$="_filter163"] option:first-child').remove();
#18 29 сентября 2021 в 20:48
  1. <? if($device_type == 'desktop'){ // выполняем на пк
  2. ?> <script>
  3. $(function(){
  4. $(".f_sroc > label").hide();//скрываем заголовки полей
  5. $(".f_rion > label ").hide();
  6. $(".f_metro > label").hide();
  7. $(".f_orientir > label").hide();
  8. $(".f_etaj > label").hide();
  9. $(".f_price > label").hide();
  10. $(".f_dop > label").hide();
  11. $(".f_teh > label").hide();
  12. });
  13. </script>
  14. <? } ?>

Данный вариант сработал, всем спасибо за помощь. Собственно я хотел добить этот вопрос, а так скрывать планирую стилями)).

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.