Вывести иконку возле названия статья в зависимости от набора. InstantCMS 2.8

#1 4 сентября 2017 в 18:12
Привет всем.

Подскажите, пожалуйста, как вывести иконку возле названия статья в зависимости от набора. InstantCMS 2.8

То есть, take.ms/jVVAi.

Спасибо. )
#2 4 сентября 2017 в 19:09
Dorimen, хороший вопрос! Некоторые материалы могут быть в нескольких наборах и реализация этого решения очень даже было бы интересной!
#3 4 сентября 2017 в 22:48
При отображении контента не известно в каких наборах лежит та или иная запись. Строго говоря это же величина не постоянная — сегодня лежит, а завтра может и не лежать(если условия фильтрации не выполнятся) тут без серии дополнительных запросов никак — нужно сделать N запросов(по количеству наборов), чтобы проверить какая запись куда попадает. Простого способа не вижу… потому что набор — это не список записей, это только правила фильтрации и сортировки. А что именно в них попадает считается при применении набора.
#4 4 сентября 2017 в 23:00
@SmartControl, а если просто добавить новое отдельное поле для записей типа "Контент" и в зависимости от значений этого поля выводить иконку ту или иную (заданную в настройках поля для каждого значения) возле заголовка?
#5 4 сентября 2017 в 23:22
Dorimen, это нааамного проще в плане реализации. Решается правкой шаблона.
#6 4 сентября 2017 в 23:26

Dorimen, это нааамного проще в плане реализации. Решается правкой шаблона.

@SmartControl

Подскажите, пожалуйста, как:
1. Сделать такое поле и что там нужно сделать
2. Как поправить шаблон, чтобы он реагировал на это поле исходя из хочушки )
#7 5 сентября 2017 в 00:15

Подскажите, пожалуйста, как:
1. Сделать такое поле и что там нужно сделать
2. Как поправить шаблон, чтобы он реагировал на это поле исходя из хочушки )

Dorimen

Видео про поле

  1.  
  2. <?php
  3. if( $ctype['options']['list_show_filter'] ) {
  4. $this->renderAsset('ui/filter-panel', array(
  5. 'css_prefix' => $ctype['name'],
  6. 'page_url' => $page_url,
  7. 'fields' => $fields,
  8. 'props_fields' => $props_fields,
  9. 'props' => $props,
  10. 'filters' => $filters,
  11. 'ext_hidden_params' => $ext_hidden_params,
  12. 'is_expanded' => $ctype['options']['list_expand_filter']
  13. ));
  14. }
  15. ?>
  16.  
  17. <?php if ($items){ ?>
  18.  
  19. <div class="content_list featured <?php echo $ctype['name']; ?>_list">
  20.  
  21. <?php foreach($items as $item){ ?>
  22.  
  23. <?php $stop = 0; ?>
  24.  
  25. <div class="content_list_item <?php echo $ctype['name']; ?>_list_item<?php if (!empty($item['is_vip'])){ ?> is_vip<?php } ?>">
  26.  
  27. <?php if (isset($fields['photo']) && $fields['photo']['is_in_list'] && !empty($item['photo'])){ ?>
  28. <div class="photo">
  29. <?php if (!empty($item['is_private_item'])) { ?>
  30. <?php echo html_image(default_images('private', $fields['photo']['options']['size_teaser']), $fields['photo']['options']['size_teaser'], $item['title']); ?>
  31. <?php } else { ?>
  32. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>">
  33. <?php echo html_image($item['photo'], $fields['photo']['options']['size_teaser'], $item['title']); ?>
  34. </a>
  35. <?php } ?>
  36. <?php unset($item['photo']); ?>
  37. </div>
  38. <?php } ?>
  39.  
  40. <?php if (isset($fields['icon']) && !empty($item['icon'])){ ?>
  41. <div class="photo">
  42. <img src="/templates/default/controllers/sc_smartslider/icons/icon<?php echo $item['icon']; ?>.png">
  43. <?php unset($item['icon']); ?>
  44. </div>
  45. <?php } ?>
  46. <div class="fields">
  47.  
  48. <?php foreach($fields as $field){ ?>
  49.  
  50. <?php if ($stop === 2) { break; } ?>
  51. <?php if ($field['is_system'] || !$field['is_in_list'] || !isset($item[$field['name']])) { continue; } ?>
  52. <?php if ($field['groups_read'] && !$user->isInGroups($field['groups_read'])) { continue; } ?>
  53. <?php if (!$item[$field['name']] && $item[$field['name']] !== '0') { continue; } ?>
  54.  
  55. <?php
  56. if (!isset($field['options']['label_in_list'])) {
  57. $label_pos = 'none';
  58. } else {
  59. $label_pos = $field['options']['label_in_list'];
  60. }
  61. ?>
  62.  
  63. <div class="field ft_<?php echo $field['type']; ?> f_<?php echo $field['name']; ?>">
  64.  
  65. <?php if ($label_pos != 'none'){ ?>
  66. <div class="title_<?php echo $label_pos; ?>"><?php echo $field['title'] . ($label_pos=='left' ? ': ' : ''); ?></div>
  67. <?php } ?>
  68.  
  69.  
  70. <?php if ($field['name'] == 'title' && $ctype['options']['item_on']){ ?>
  71. <h2 class="value">
  72. <?php if ($item['parent_id']){ ?>
  73. <a class="parent_title" href="<?php echo rel_to_href($item['parent_url']); ?>"><?php html($item['parent_title']); ?></a>
  74. &rarr;
  75. <?php } ?>
  76.  
  77. <?php if (!empty($item['is_private_item'])) { $stop++; ?>
  78. <?php html($item[$field['name']]); ?> <span class="is_private" title="<?php html($item['private_item_hint']); ?>"></span>
  79. <?php } else { ?>
  80. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>"><?php html($item[$field['name']]); ?></a>
  81. <?php if ($item['is_private']) { ?>
  82. <span class="is_private" title="<?php echo LANG_PRIVACY_HINT; ?>"></span>
  83. <?php } ?>
  84. <?php } ?>
  85. </h2>
  86. <?php } else { ?>
  87. <div class="value">
  88. <?php if (!empty($item['is_private_item'])) { ?>
  89. <div class="private_field_hint"><?php echo $item['private_item_hint']; ?></div>
  90. <?php } else { ?>
  91. <?php echo $field['handler']->setItem($item)->parseTeaser($item[$field['name']]); ?>
  92. <?php } ?>
  93. </div>
  94. <?php } ?>
  95.  
  96. </div>
  97.  
  98. <?php } ?>
  99.  
  100. </div>
  101.  
  102. <?php if ($ctype['is_tags'] && !empty($ctype['options']['is_tags_in_list']) && $item['tags']){ ?>
  103. <div class="tags_bar">
  104. <?php echo html_tags_bar($item['tags']); ?>
  105. </div>
  106. <?php } ?>
  107.  
  108. <?php
  109. $show_bar = !empty($item['rating_widget']) ||
  110. $fields['date_pub']['is_in_list'] ||
  111. $fields['user']['is_in_list'] ||
  112. !empty($ctype['options']['hits_on']) ||
  113. ($ctype['is_comments'] && $item['is_comments_on']) ||
  114. !$item['is_pub'] ||
  115. !$item['is_approved'];
  116. ?>
  117.  
  118. <?php if($show_bar){ ?>
  119. <div class="info_bar">
  120. <?php if (!empty($item['rating_widget'])){ ?>
  121. <div class="bar_item bi_rating">
  122. <?php echo $item['rating_widget']; ?>
  123. </div>
  124. <?php } ?>
  125. <?php if
#8 5 сентября 2017 в 09:25

Это то что придумалось за пару минут, но может устроит.

@SmartControl

Здорово. Это то. что нужно было. Большое спасибо. Еще тогда такой вопрос… А можно ли не только вывести иконку, но и поменять цвет текста заголовка в новости (и текст ссылки в каталоге новостей) в зависимости от типа?
#9 5 сентября 2017 в 20:20
Dorimen, да без проблем. Прямо в файле шаблона прописать массив цветов и в стили заголовка подставлять цвет номер N — значение из того же поля icon. Или CSS классы прописать class1, class2… и подставлять нужный класс. Доберусь до компьютера, скину пример. При желании то все можно)
#10 5 сентября 2017 в 22:55
@SmartControl

без примера не разберусь. вроде бы все ясно, но с реализацией плохо ( не программист(((
#11 6 сентября 2017 в 00:21

без примера не разберусь. вроде бы все ясно, но с реализацией плохо ( не программист(((

Dorimen


  1.  
  2. <?php
  3. if( $ctype['options']['list_show_filter'] ) {
  4. $this->renderAsset('ui/filter-panel', array(
  5. 'css_prefix' => $ctype['name'],
  6. 'page_url' => $page_url,
  7. 'fields' => $fields,
  8. 'props_fields' => $props_fields,
  9. 'props' => $props,
  10. 'filters' => $filters,
  11. 'ext_hidden_params' => $ext_hidden_params,
  12. 'is_expanded' => $ctype['options']['list_expand_filter']
  13. ));
  14. }
  15. ?>
  16.  
  17. <?php if ($items){ ?>
  18.  
  19. <div class="content_list featured <?php echo $ctype['name']; ?>_list">
  20.  
  21. <?php foreach($items as $item){ ?>
  22.  
  23. <?php $stop = 0; ?>
  24.  
  25. <div class="content_list_item <?php echo $ctype['name']; ?>_list_item<?php if (!empty($item['is_vip'])){ ?> is_vip<?php } ?>">
  26.  
  27. <?php if (isset($fields['photo']) && $fields['photo']['is_in_list'] && !empty($item['photo'])){ ?>
  28. <div class="photo">
  29. <?php if (!empty($item['is_private_item'])) { ?>
  30. <?php echo html_image(default_images('private', $fields['photo']['options']['size_teaser']), $fields['photo']['options']['size_teaser'], $item['title']); ?>
  31. <?php } else { ?>
  32. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>">
  33. <?php echo html_image($item['photo'], $fields['photo']['options']['size_teaser'], $item['title']); ?>
  34. </a>
  35. <?php } ?>
  36. <?php unset($item['photo']); ?>
  37. </div>
  38. <?php } ?>
  39.  
  40. <?php if (isset($fields['icon']) && !empty($item['icon'])){ ?>
  41. <div class="photo">
  42. <img src="/templates/default/controllers/sc_smartslider/icons/icon<?php echo $item['icon']; ?>.png">
  43. <?php unset($item['icon']); ?>
  44. </div>
  45. <?php } ?>
  46. <div class="fields">
  47.  
  48. <?php foreach($fields as $field){ ?>
  49.  
  50. <?php if ($stop === 2) { break; } ?>
  51. <?php if ($field['is_system'] || !$field['is_in_list'] || !isset($item[$field['name']])) { continue; } ?>
  52. <?php if ($field['groups_read'] && !$user->isInGroups($field['groups_read'])) { continue; } ?>
  53. <?php if (!$item[$field['name']] && $item[$field['name']] !== '0') { continue; } ?>
  54.  
  55. <?php
  56. if (!isset($field['options']['label_in_list'])) {
  57. $label_pos = 'none';
  58. } else {
  59. $label_pos = $field['options']['label_in_list'];
  60. }
  61. ?>
  62.  
  63. <div class="field ft_<?php echo $field['type']; ?> f_<?php echo $field['name']; ?>">
  64.  
  65. <?php if ($label_pos != 'none'){ ?>
  66. <div class="title_<?php echo $label_pos; ?> myslyle<?php echo $item['icon']; ?>"><?php echo $field['title'] . ($label_pos=='left' ? ': ' : ''); ?></div>
  67. <?php } ?>
  68.  
  69.  
  70. <?php if ($field['name'] == 'title' && $ctype['options']['item_on']){ ?>
  71. <h2 class="value">
  72. <?php if ($item['parent_id']){ ?>
  73. <a class="parent_title" href="<?php echo rel_to_href($item['parent_url']); ?>"><?php html($item['parent_title']); ?></a>
  74. &rarr;
  75. <?php } ?>
  76.  
  77. <?php if (!empty($item['is_private_item'])) { $stop++; ?>
  78. <?php html($item[$field['name']]); ?> <span class="is_private" title="<?php html($item['private_item_hint']); ?>"></span>
  79. <?php } else { ?>
  80. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>"><?php html($item[$field['name']]); ?></a>
  81. <?php if ($item['is_private']) { ?>
  82. <span class="is_private" title="<?php echo LANG_PRIVACY_HINT; ?>"></span>
  83. <?php } ?>
  84. <?php } ?>
  85. </h2>
  86. <?php } else { ?>
  87. <div class="value">
  88. <?php if (!empty($item['is_private_item'])) { ?>
  89. <div class="private_field_hint"><?php echo $item['private_item_hint']; ?></div>
  90. <?php } else { ?>
  91. <?php echo $field['handler']->setItem($item)->parseTeaser($item[$field['name']]); ?>
  92. <?php } ?>
  93. </div>
  94. <?php } ?>
  95.  
  96. </div>
  97.  
  98. <?php } ?>
  99.  
  100. </div>
  101.  
  102. <?php if ($ctype['is_tags'] && !empty($ctype['options']['is_tags_in_list']) && $item['tags']){ ?>
  103. <div class="tags_bar">
  104. <?php echo html_tags_bar($item['tags']); ?>
  105. </div>
  106. <?php } ?>
  107.  
  108. <?php
  109. $show_bar = !empty($item['rating_widget']) ||
  110. $fields['date_pub']['is_in_list'] ||
  111. $fields['user']['is_in_list'] ||
  112. !empty($ctype['options']['hits_on']) ||
  113. ($ctype['is_comments'] && $item['is_comments_on']) ||
  114. !$item['is_pub'] ||
  115. !$item['is_approved'];
  116. ?>
  117.  
  118. <?php if($show_bar){ ?>
  119. <div class="info_bar">
  120. <?php if (!empty($item['rating_widget'])){ ?>
  121. <div class="bar_item bi_rating">
  122. <?php echo $item['rating_widget']; ?>
  123. </div>
  124. <?php } ?>
  125. <?php if <
#12 7 сентября 2017 в 09:55
Спасибо.

Что-то работает, что-то нет. Не могу разобраться.

Вот код:



Добавлял в файле default_list_tiles.tpl.php

А вот вывод:



То есть для иконки нормально подставляет цифру в в конце, а для стиля не хочет. Хотя вроде все сделано аналогично )))
#13 7 сентября 2017 в 10:04

Хотя вроде все сделано аналогично )))

Dorimen
Вы под картинкой сразу удаляете переменную со значением цифры, поэтому до стилей она не доходит
Перенесите
  1. <?php unset($item['articles_icon']);?>
под вашу ссылку с классом.
И по уму в классе ещё надо проверять на существование данного поля. Всё таки в default_list_tiles.tpl.php правки вносите.
#14 7 сентября 2017 в 10:05

И по уму в классе ещё надо проверять на существование данного поля

Loadырь

а как это сделать?
#15 7 сентября 2017 в 10:15
Вместо
  1. <?php echo $item['articles_icon'];?>
писать
  1. <?php echo isset($item['articles_icon']) ? $item['articles_icon'] : '';?>
или
  1. <?php echo !empty($item['articles_icon']) ? $item['articles_icon'] : '';?>
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.