Иконки Awesome Font в меню (icms2+)

#16 24 февраля 2016 в 21:15
Вставлю еще 5 копеек))
Всё таки как я прописал вполне работает! Только что проверил.
Другое дело, что нужно вручную в шаблоне прописывать каждый пункт меню отдельно, никакой автоматики)))
Залез в файл ..\templates\default\assets\ui\menu.tpl.php добавил пару строк, чисто для интереса:
в начале (16 строка) добавляем переменную:
  1. $awesome_icon = '';
на 22-ой строке проводим проверку:
  1. if (!empty($item['options']['class'])) {
  2. if (strripos($item['options']['class'], 'fa fa-')!==false) {
  3. $awesome_icon = '<i class="'.$item['options']['class'].'"></i>';
  4. }else{
  5. $css_classes[] = $item['options']['class'];
  6. }
  7. }
и в 48-ой выводим результат:
  1. <?php echo $awesome_icon; ?>
  1. <ul class="<?php echo $css_class; ?>">
  2.  
  3. <?php $last_level = 0; ?>
  4.  
  5. <?php foreach($menu as $id=>$item){ ?>
  6.  
  7. <?php for ($i=0; $i<($last_level - $item['level']); $i++) { ?>
  8. </li></ul>
  9. <?php } ?>
  10.  
  11. <?php if ($item['level'] <= $last_level) { ?>
  12. </li>
  13. <?php } ?>
  14.  
  15. <?php
  16. $awesome_icon = '';
  17. $is_active = in_array($id, $active_ids);
  18.  
  19. $css_classes = array();
  20. if ($is_active) { $css_classes[] = 'active'; }
  21. if ($item['childs_count'] > 0) { $css_classes[] = 'folder'; }
  22. if (!empty($item['options']['class'])) {
  23. if (strripos($item['options']['class'], 'fa fa-')!==false) {
  24. $awesome_icon = '<i class="'.$item['options']['class'].'"></i>';
  25. }else{
  26. $css_classes[] = $item['options']['class'];
  27. }
  28. }
  29.  
  30. $onclick = isset($item['options']['onclick']) ? $item['options']['onclick'] : false;
  31. $onclick = isset($item['options']['confirm']) ? "return confirm('{$item['options']['confirm']}')" : $onclick;
  32.  
  33. $target = isset($item['options']['target']) ? $item['options']['target'] : false;
  34. $data_attr = '';
  35. if (!empty($item['data'])) {
  36. foreach ($item['data'] as $key=>$val) {
  37. $data_attr .= 'data-'.$key.'="'.$val.'" ';
  38. }
  39. }
  40.  
  41. ?>
  42.  
  43. <li <?php if ($css_classes) { ?>class="<?php echo implode(' ', $css_classes); ?>"<?php } ?>>
  44. <?php if ($item['disabled']) { ?>
  45. <span class="item disabled"><?php html($item['title']); ?></span>
  46. <?php } else { ?>
  47. <a class="item" <?php echo $data_attr; ?> href="<?php echo !empty($item['url']) ? htmlspecialchars($item['url']) : 'javascript:void(0)'; ?>" <?php if ($onclick) { ?>onclick="<?php echo $onclick; ?>"<?php } ?> <?php if ($target) { ?>target="<?php echo $target; ?>"<?php } ?>>
  48. <?php echo $awesome_icon; ?>
  49. <span class="wrap">
  50. <?php if (!empty($item['title'])) { html($item['title']); } ?>
  51. <?php if (isset($item['counter']) && $item['counter']){ ?>
  52. <span class="counter"><?php html($item['counter']); ?></span>
  53. <?php } ?>
  54. </span>
  55. </a>
  56. <?php } ?>
  57.  
  58. <?php if ($item['childs_count'] > 0) { ?><ul><?php } ?>
  59.  
  60. <?php $last_level = $item['level']; ?>
  61.  
  62. <?php } ?>
  63.  
  64. <?php for ($i=0; $i<$last_level; $i++) { ?>
  65. </li></ul>
  66. <?php } ?>
Теперь, если хотим добавить иконку перед/или вместо пункта меню в опциях Класс CSS прописываем клас иконки FontAwesome, т.е. для <i class="fa fa-beer"></i> пишем fa fa-beer. Сохраняем и смотрим результат.

НО! Это решение не для продакшена! Только как пример. if (strripos($item['options']['class'], 'fa fa-')!==false) {... — так делать не надо)) Узко получается joke
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.