Выпадающее меню из наборов

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X

pills-menu

#1 25 октября 2018 в 21:36
Доброго времени суток друзья!
Имеем код:
  1.  
  2. <ul class="pills-menu">
  3. <?php $ds_counter = 0; ?>
  4. <?php foreach($datasets as $set){ ?>
  5. <?php $ds_selected = ($dataset_name == $set['name'] || (!$dataset_name && $ds_counter==0)); ?>
  6. <li class="<?php if ($ds_selected){ ?>active <?php } ?><?php echo $set['name'].(!empty($set['target_controller']) ? '_'.$set['target_controller'] : ''); ?>">
  7.  
  8. <?php $ds_url = sprintf($base_ds_url, ($ds_counter > 0 ? $ds_prefix.$set['name'] : '')); ?>
  9.  
  10. <?php if ($ds_selected){ ?>
  11. <div><?php echo $set['title']; ?></div>
  12. <?php } else { ?>
  13. <a href="<?php echo $ds_url; ?>"><?php echo $set['title']; ?></a>
  14. <?php } ?>
  15.  
  16. </li>
  17. <?php $ds_counter++; ?>
  18. <?php } ?>
  19. </ul>
  20.  
Хочу сделать выпадающим через select, получаю:
  1.  
  2. <select class="pills-menu">
  3. <?php $ds_counter = 0; ?>
  4. <?php foreach($datasets as $set){ ?>
  5. <?php $ds_selected = ($dataset_name == $set['name'] || (!$dataset_name && $ds_counter==0)); ?>
  6. <option value="<?php if ($ds_selected){ ?>active <?php } ?><?php echo $set['name'].(!empty($set['target_controller']) ? '_'.$set['target_controller'] : ''); ?>"selected>
  7.  
  8. <?php $ds_url = sprintf($base_ds_url, ($ds_counter > 0 ? $ds_prefix.$set['name'] : '')); ?>
  9.  
  10. <?php if ($ds_selected){ ?>
  11. <div><?php echo $set['title']; ?></div>
  12. <?php } else { ?>
  13. <a href="<?php echo $ds_url; ?>"><?php echo $set['title']; ?></a>
  14. <?php } ?>
  15.  
  16. </option>
  17. <?php $ds_counter++; ?>
  18. <?php } ?>
  19. </select>
  20.  
В итоге при выборе параметра из наборов ничего не происходит.
Я может фигней занимаюсь или эта идея способна на существование? :)
#2 25 октября 2018 в 23:54
  1. <?php if(!isset($ds_prefix)){ $ds_prefix = '/'; } ?>
  2. <div class="content_datasets">
  3. <select onchange="if (this.value) window.location.href=this.value" class="pills-menu">
  4. <?php $ds_counter = 0; ?>
  5. <?php foreach($datasets as $set){ ?>
  6. <?php $ds_selected = ($dataset_name == $set['name'] || (!$dataset_name && $ds_counter==0)); ?>
  7. <li class="<?php if ($ds_selected){ ?>active <?php } ?><?php echo $set['name'].(!empty($set['target_controller']) ? '_'.$set['target_controller'] : ''); ?>">
  8.  
  9. <?php $ds_url = sprintf($base_ds_url, ($ds_counter > 0 ? $ds_prefix.$set['name'] : '')); ?>
  10.  
  11. <?php if ($ds_selected){ ?>
  12. <option value="<?php echo $ds_url; ?>"><?php echo $set['title']; ?></option>
  13. <?php } else { ?>
  14. <option value="<?php echo $ds_url; ?>"><?php echo $set['title']; ?></option>
  15. <?php } ?>
  16.  
  17. </li>
  18. <?php $ds_counter++; ?>
  19. <?php } ?>
  20. </select>
  21. </div>
  22. <?php if (!empty($current_dataset['description'])){ ?>
  23. <div class="content_datasets_description">
  24. <?php echo $current_dataset['description']; ?>
  25. </div>
  26. <?php } ?>
#3 26 октября 2018 в 11:24
DrDooM, попробуйте так:
  1.  
  2. <select onchange="top.location=this.value">
  3. <?php $ds_counter = 0; ?>
  4. <?php foreach($datasets as $set){ ?>
  5. <?php $ds_selected = ($dataset_name == $set['name'] || (!$dataset_name && $ds_counter==0)); ?>
  6. <?php $ds_url = sprintf($base_ds_url, ($ds_counter > 0 ? $ds_prefix.$set['name'] : '')); ?>
  7. <?php if ($ds_selected){ ?>
  8. <option value="" selected="selected">
  9. <?php echo $set['title']; ?>
  10. </option>
  11. <?php } else { ?>
  12. <option value="<?php echo $ds_url; ?>">
  13. <?php echo $set['title']; ?>
  14. </option>
  15. <?php } ?>
  16. <?php $ds_counter++; ?>
  17. <?php } ?>
  18. </select>
  19.  
#4 26 октября 2018 в 17:05
Благодарю господа, оба варианта рабочие😊теперь даже не знаю какой выбрать :)
#5 26 октября 2018 в 17:08
Проблема решена
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.