Как разместить блок свойств после определенного поля

InstantCMS 2.X

Перенос блока свойств в произвольное место

#1 29 августа 2017 в 13:37
Добрый день, подскажите решение. Как перенести блок свойств например сразу после поля изображение. По умолчанию оно всегда находиться в самом низу что не совсем удобно. Хотелось бы его разместить между созданными полями МЕЖДУ ФОТО И ОПИСАНИЕМ. Пример.

Иллюстрация
#2 29 августа 2017 в 14:18
Clear,
А поле со свойствами в админке перетащить повыше нельзя?
#3 29 августа 2017 в 14:20
В файле шаблона вывода записи вывести поле фотографии и после него вставить блок свойств. И исключить вывод фото второй раз. Допустим, у Вас тип контента с системным именем catalog. тогда для для версии 2.8.0 файл templates/вашшаблон/content/catalog_item.tpl.php (возможно, его придется создать) будет выглядеть как-то так:
  1. <?php $user = cmsUser::getInstance(); ?>
  2.  
  3. <?php if ($fields['title']['is_in_item']){ ?>
  4. <h1>
  5. <?php html($item['title']); ?>
  6.  
  7. </h1>
  8. <?php if ($item['parent_id'] && !empty($ctype['is_in_groups'])){ ?>
  9. <h2 class="parent_title item_<?php echo $item['parent_type']; ?>_title">
  10. <a href="<?php echo rel_to_href($item['parent_url']); ?>"><?php html($item['parent_title']); ?></a>
  11. </h2>
  12. <?php } ?>
  13. <?php unset($fields['title']); ?>
  14. <?php } ?>
  15.  
  16. <?php if ($this->hasMenu('item-menu')){ ?>
  17. <div id="content_item_tabs">
  18. <div class="tabs-menu">
  19. <?php $this->menu('item-menu', true, 'tabbed'); ?>
  20. </div>
  21. </div>
  22. <?php } ?>
  23.  
  24. <div class="content_item <?php echo $ctype['name']; ?>_item">
  25.  
  26. <div class="field ft_photo f_photo">
  27. <div class="value"><?php echo html_image($item['photo'], $fields['photo']['options']['size_teaser']); ?></div>
  28. </div>
  29. <?php unset($fields['photo']); ?>
  30. <?php if ($props && array_filter((array)$props_values)) { ?>
  31. <?php
  32. $props_fields = $this->controller->getPropsFields($props);
  33. $props_fieldsets = cmsForm::mapFieldsToFieldsets($props);
  34. ?>
  35. <div class="content_item_props <?php echo $ctype['name']; ?>_item_props">
  36. <table>
  37. <tbody>
  38. <?php foreach($props_fieldsets as $fieldset){ ?>
  39. <?php if ($fieldset['title']){ ?>
  40. <tr>
  41. <td class="heading" colspan="2"><?php html($fieldset['title']); ?></td>
  42. </tr>
  43. <?php } ?>
  44. <?php if ($fieldset['fields']){ ?>
  45. <?php foreach($fieldset['fields'] as $prop){ ?>
  46. <?php if (isset($props_values[$prop['id']])) { ?>
  47. <?php $prop_field = $props_fields[$prop['id']]; ?>
  48. <tr>
  49. <td class="title"><?php html($prop['title']); ?></td>
  50. <td class="value">
  51. <?php echo $prop_field->setItem($item)->parse($props_values[$prop['id']]); ?>
  52. </td>
  53. </tr>
  54. <?php } ?>
  55. <?php } ?>
  56. <?php } ?>
  57. <?php } ?>
  58. </tbody>
  59. </table>
  60. </div>
  61. <?php } ?>
  62.  
  63. <?php if (!empty($fields)) { ?>
  64.  
  65. <?php $fields_fieldsets = cmsForm::mapFieldsToFieldsets($fields, function($field, $user) use ($item) {
  66. if (!$field['is_in_item'] || $field['is_system']) { return false; }
  67. if ((empty($item[$field['name']]) || empty($field['html'])) && $item[$field['name']] !== '0') { return false; }
  68. if ($field['groups_read'] && !$user->isInGroups($field['groups_read'])) { return false; }
  69. return true;
  70. } ); ?>
  71.  
  72. <?php foreach ($fields_fieldsets as $fieldset_id => $fieldset) { ?>
  73.  
  74. <?php $is_fields_group = !empty($ctype['options']['is_show_fields_group']) && $fieldset['title']; ?>
  75.  
  76. <?php if ($is_fields_group) { ?>
  77. <div class="fields_group fields_group_<?php echo $ctype['name']; ?>_<?php echo $fieldset_id ?>">
  78. <h3 class="group_title"><?php html($fieldset['title']); ?></h3>
  79. <?php } ?>
  80.  
  81. <?php if (!empty($fieldset['fields'])) { ?>
  82. <?php foreach ($fieldset['fields'] as $name => $field) { ?>
  83.  
  84. <div class="field ft_<?php echo $field['type']; ?> f_<?php echo $field['name']; ?> <?php echo $field['options']['wrap_type']; ?>_field" <?php if($field['options']['wrap_width']){ ?> style="width: <?php echo $field['options']['wrap_width']; ?>;"<?php } ?>>
  85. <?php if ($field['options']['label_in_item'] != 'none') { ?>
  86. <div class="title_<?php echo $field['options']['label_in_item']; ?>"><?php html($field['title']); ?>: </div>
  87. <?php } ?>
  88. <div class="value"><?php echo $field['html']; ?></div>
  89. </div>
  90.  
  91. <?php } ?>
  92. <?php } ?>
  93.  
  94. <?php if ($is_fields_group) { ?></div><?php } ?>
  95.  
  96. <?php } ?>
  97.  
  98. <?php } ?>
  99.  
  100.  
  101.  
  102. <?php
  103. $hooks_html = cmsEventsManager::hookAll("content_{$ctype['name']}_item_html", $item);
  104. if ($hooks_html) { echo html_each($hooks_html); }
  105. ?>
  106.  
  107. <?php if ($ctype['is_tags'] && !empty($ctype['options']['is_tags_in_item']) && $item['tags']){ ?>
  108. <div class="tags_bar">
  109. <?php echo html_tags_bar($item['tags']); ?>
  110. </div>
  111. <?php } ?>
  112.  
  113. <?php
  114. $show_bar = !empty($item['rating_widget']) ||
  115. $fields['date_pub']['is_in_item'] ||
  116. $fields['user']['is_in_item'] ||
  117. !empty($ctype['options']['hits_on']) ||
  118. !$item['is_pub'] ||
  119. !$item['is_approved'];
  120. ?>
  121.  
  122. <?php if ($ctype['item_append_html']){ ?>
  123. <div class="append_html"><?php echo $ctype['item_append_html']; ?></div>
  124. <?php } ?>
  125.  
  126. <?php if ($show_bar){ ?>
  127. <div class="info_bar">
  128. <?php if (!empty($item['rating_widget'])){ ?>
  129. <div class="bar_item bi_rating">
  130. <?php echo $item['r
#4 29 августа 2017 в 14:21

поле со свойствами в админке перетащить повыше нельзя?

Ris
Нельзя. Нет такого поля))
#5 29 августа 2017 в 14:58


В файле шаблона вывода записи вывести поле фотографии и после него вставить блок свойств. И исключить вывод фото второй раз. Допустим, у Вас тип контента с системным именем catalog. тогда для для версии 2.8.0 файл templates/вашшаблон/content/catalog_item.tpl.php (возможно, его придется создать) будет выглядеть как-то так:

DK

Спасибо за решение. А как привязать новый созданный _item.tpl к конкретному типу контента, а у других оставить дефолтный, тут непонятно. В категориях я знаю что есть выбор шаблона, а в записях не видел такого
#6 29 августа 2017 в 15:03

А как привязать новый созданный _item.tpl к конкретному типу контента

Clear
Он сам привяжется.
#7 29 августа 2017 в 15:09



А как привязать новый созданный _item.tpl к конкретному типу контента

Clear
Он сам привяжется.

Loadырь

Не совсем понял, привяжеться же он ко всем типам контента а не к конкретному

Clear

Аааа блин догнал, ща попробую )))
#8 29 августа 2017 в 16:48
С изображением получилось, пытаюсь сделать набор изображений не выходит. Там само поле как вывести?
#9 29 августа 2017 в 17:21

пытаюсь сделать набор изображений не выходит

Clear
Таким способом и не выйдет. Там сложнее всё. Как? — спросите Вы. Не знаю. Но есть костыль))

Выводите после блока свойств все остальные поля, которые должны быть ниже свойств.
#10 29 августа 2017 в 18:44
Че я никак не могу разобраться с выводами. в шаблоне. Вот попробовал вывести по аналогии обычное поле HTML Текст, не выходит. Я вывожу так

  1.  
  2. <div class="field ft_html f_texthtml">
  3. <div class="value"><?php html($item['texthtml']); ?></div>
  4. </div>
  5.  
Вроде верно же все?
#11 29 августа 2017 в 18:56

Вроде верно же все ?

Clear
Не совсем, но для текста и строки пойдёт.
#12 29 августа 2017 в 19:22

Не совсем, но для текста и строки пойдёт.

Loadырь
Ну хрошо, уфффф. Можете подсказать тогда как? Пробовал и html_textarea и html_wysiwyg ничего не подходит
#13 29 августа 2017 в 19:51
В большинстве случаев работает так
  1.  
  2. <div class="field ft_<?php echo $fields['photos']['type']; ?> f_<?php echo $fields['photos']['name']; ?> <?php echo $fields['photos']['options']['wrap_type']; ?>_field" <?php if($fields['photos']['options']['wrap_width']){ ?> style="width: <?php echo $fields['photos']['options']['wrap_width']; ?>;"<?php } ?>>
  3. <?php if ($fields['photos']['options']['label_in_item'] != 'none') { ?>
  4. <div class="title_<?php echo $fields['photos']['options']['label_in_item']; ?>"><?php html($fields['photos']['title']); ?>: </div>
  5. <?php } ?>
  6. <div class="value"><?php echo $fields['photos']['html']; ?></div>
  7. <?php unset($fields['photos']); ?>
  8. </div>
  9.  
Но если не сработает, (особенно это касается нестандартных полей), то так
  1.  
  2. <div class="field ft_<?php echo $fields['photos']['type']; ?> f_<?php echo $fields['photos']['name']; ?> <?php echo $fields['photos']['options']['wrap_type']; ?>_field" <?php if($fields['photos']['options']['wrap_width']){ ?> style="width: <?php echo $fields['photos']['options']['wrap_width']; ?>;"<?php } ?>>
  3. <?php if ($fields['photos']['options']['label_in_item'] != 'none') { ?>
  4. <div class="title_<?php echo $fields['photos']['options']['label_in_item']; ?>"><?php html($fields['photos']['title']); ?>: </div>
  5. <?php } ?>
  6. <div class="value"><?php echo $fields['photos']['handler']->setItem($item)->parse($item['photos']); ?></div>
  7. <?php unset($fields['photos']); ?>
  8. </div>
  9.  
где photos — системное название поля photos
#14 29 августа 2017 в 23:59
Не сработало да и черт с этими наборами изображений. Мне бы стандартное поле html-текст вывести. Я вывожу так
  1. <?php html($item['opsanie']); ?>
Где opsanie это системное имя поля поля

А мне почему то выводит с тегами так <p>Тут должен быть обычный HTML Текст</p>
Вот я и не пойму почему теги видны во фронтенде, должен же вывестись стандартный HTML формат абзаца без видимых тегов <p>

Вот СсылкА на тестовую страницу. Там в желтом блоке ниже свойств видно как выводит это поле.
#15 30 августа 2017 в 00:15

Не сработало да и черт с этими наборами изображений.

Clear
Должно сработать, у меня сработало)) Но если Вам достаточно

поле html-текст вывести

Clear
без опций и всего остального, то попробуйте так:
  1. <?php $item['opsanie']; ?>
где opsanie — это системное имя типа контента.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.