Не могу понять где ошибка

InstantCMS 2.X
#1 21 мая 2019 в 13:58
Всем привет, хочу переставить фотографию ниже заголовка и краткого описания статьи. Работу веду в default_list.tpl.php. Может кто готовый вариант скинет.

Код по умолчанию такой —

  1. <?php
  2. if( $ctype['options']['list_show_filter'] ) {
  3. $this->renderAsset('ui/filter-panel', array(
  4. 'css_prefix' => $ctype['name'],
  5. 'page_url' => $page_url,
  6. 'fields' => $fields,
  7. 'props_fields' => $props_fields,
  8. 'props' => $props,
  9. 'filters' => $filters,
  10. 'ext_hidden_params' => $ext_hidden_params,
  11. 'is_expanded' => $ctype['options']['list_expand_filter']
  12. ));
  13. }
  14. ?>
  15.  
  16. <?php if ($items){ ?>
  17.  
  18. <div class="content_list default_list <?php echo $ctype['name']; ?>_list">
  19.  
  20. <?php foreach($items as $item){ ?>
  21.  
  22. <?php $stop = 0; ?>
  23.  
  24. <div class="content_list_item <?php echo $ctype['name']; ?>_list_item<?php if (!empty($item['is_vip'])){ ?> is_vip<?php } ?>">
  25.  
  26. <?php if (!empty($item['fields']['photo'])){ ?>
  27. <div class="photo">
  28. <?php if (!empty($item['is_private_item'])) { ?>
  29. <?php echo html_image(default_images('private', $fields['photo']['options']['size_teaser']), $fields['photo']['options']['size_teaser'], $item['title']); ?>
  30. <?php } else { ?>
  31. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>">
  32. <?php echo html_image($item['photo'], $fields['photo']['options']['size_teaser'], $item['title']); ?>
  33. </a>
  34. <?php } ?>
  35. <?php unset($item['fields']['photo']); ?>
  36. </div>
  37. <?php } ?>
  38.  
  39. <div class="fields">
  40.  
  41. <?php foreach($item['fields'] as $field){ ?>
  42.  
  43. <?php if ($stop === 2) { break; } ?>
  44.  
  45. <div class="field ft_<?php echo $field['type']; ?> f_<?php echo $field['name']; ?>">
  46.  
  47. <?php if ($field['label_pos'] != 'none'){ ?>
  48. <div class="title_<?php echo $field['label_pos']; ?>">
  49. <?php echo $field['title'] . ($field['label_pos']=='left' ? ': ' : ''); ?>
  50. </div>
  51. <?php } ?>
  52.  
  53. <?php if ($field['name'] == 'title' && $ctype['options']['item_on']){ ?>
  54. <h2 class="value">
  55. <?php if (!empty($this->menus['list_actions_menu'])){ ?>
  56. <div class="list_actions_menu controller_actions_menu dropdown_menu">
  57. <input tabindex="-1" type="checkbox" id="menu_label_<?php echo $item['id']; ?>">
  58. <label for="menu_label_<?php echo $item['id']; ?>" class="group_menu_title"></label>
  59. <ul class="list_actions menu">
  60. <?php foreach($this->menus['list_actions_menu'] as $menu){ ?>
  61. <li>
  62. <a class="<?php echo isset($menu['options']['class']) ? $menu['options']['class'] : ''; ?>" href="<?php echo string_replace_keys_values($menu['url'], $item); ?>" title="<?php html($menu['title']); ?>">
  63. <?php echo $menu['title']; ?>
  64. </a>
  65. </li>
  66. <?php } ?>
  67. </ul>
  68. </div>
  69. <?php } ?>
  70. <?php if ($item['parent_id']){ ?>
  71. <a class="parent_title" href="<?php echo rel_to_href($item['parent_url']); ?>"><?php html($item['parent_title']); ?></a>
  72. &rarr;
  73. <?php } ?>
  74.  
  75. <?php if (!empty($item['is_private_item'])) { $stop++; ?>
  76. <?php html($item[$field['name']]); ?> <span class="is_private" title="<?php html($item['private_item_hint']); ?>"></span>
  77. <?php } else { ?>
  78. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>"><?php html($item[$field['name']]); ?></a>
  79. <?php if ($item['is_private']) { ?>
  80. <span class="is_private" title="<?php echo LANG_PRIVACY_HINT; ?>"></span>
  81. <?php } ?>
  82. <?php } ?>
  83. </h2>
  84. <?php } else { ?>
  85. <div class="value">
  86. <?php if (!empty($item['is_private_item'])) { ?>
  87. <div class="private_field_hint"><?php echo $item['private_item_hint']; ?></div>
  88. <?php } else { ?>
  89. <?php echo $field['html']; ?>
  90. <?php } ?>
  91. </div>
  92. <?php } ?>
  93.  
  94. </div>
  95.  
  96. <?php } ?>
  97.  
  98. </div>
  99.  
  100. <?php if (!empty($item['show_tags'])){ ?>
  101. <div class="tags_bar">
  102. <?php echo html_tags_bar($item['tags'], 'content-'.$ctype['name']); ?>
  103. </div>
  104. <?php } ?>
  105.  
  106. <?php if (!empty($item['info_bar'])){ ?>
  107. <div class="info_bar">
  108. <?php foreach($item['info_bar'] as $bar){ ?>
  109. <div class="bar_item <?php echo !empty($bar['css']) ? $bar['css'] : ''; ?>" title="<?php html(!empty($bar['title']) ? $bar['title'] : ''); ?>">
  110. <?php if (!empty($bar['href'])){ ?>
  111. <a href="<?php echo $bar['href']; ?>"><?php echo $bar['html']; ?></a>
  112. <?php } else { ?>
  113. <?php echo $bar['html']; ?>
  114. <?php } ?>
  115. </div>
  116. <?php } ?>
  117. </div>
  118. <?php } ?>
  119.  
  120. </div>
  121.  
  122. <?php } ?>
  123.  
  124. </div>
  125.  
  126. <?php if ($perpage < $total) { ?>
  127. <?php echo html_pagebar($page, $perpage, $total, $page_url, array_merge($filters, $ext_hidden_params)); ?>
#2 21 мая 2019 в 14:13
Вы вынесли свой код из цикла, в итоге сначала показывается картинка в цикле, а потом и ваш код. Вам надо вставить перемещаемый код между строк
  1.  
  2. </h2>
  3. <?php } else { ?>
#3 21 мая 2019 в 14:30
Отключите показ поля изображения при просмотре списка для нужного типа контента.
#4 21 мая 2019 в 19:48
Loadырь
Здравствуйте, спасибо что не обошли стороной.

Попробовал как Вы советуете, в итоге не работает.

Вот что выяснил:

Этот код с картинкой:
  1. <?php if (!empty($item['fields']['photo'])){ ?>
  2. <div class="photo">
  3. <?php if (!empty($item['is_private_item'])) { ?>
  4. <?php echo html_image(default_images('private', $fields['photo']['options']['size_teaser']), $fields['photo']['options']['size_teaser'], $item['title']); ?>
  5. <?php } else { ?>
  6. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>">
  7. <?php echo html_image($item['photo'], $fields['photo']['options']['size_teaser'], $item['title']); ?>
  8. </a>
  9. <?php } ?>
  10. <?php unset($item['fields']['photo']); ?>
  11. </div>
  12. <?php } ?>
Этот код с заголовком и описанием (возможно что то и от картинки выводится).

  1. <?php foreach($item['fields'] as $field){ ?>
  2. <?php if ($stop === 2) { break; } ?>
  3. <div class="field ft_<?php echo $field['type']; ?> f_<?php echo $field['name']; ?>">
  4. <?php if ($field['label_pos'] != 'none'){ ?>
  5. <div class="title_<?php echo $field['label_pos']; ?>">
  6. <?php echo $field['title'] . ($field['label_pos']=='left' ? ': ' : ''); ?>
  7. </div>
  8. <?php } ?>
  9.  
  10. <?php if ($field['name'] == 'title' && $ctype['options']['item_on']){ ?>
  11. <h2 class="value">
  12. <?php if (!empty($this->menus['list_actions_menu'])){ ?>
  13. <div class="list_actions_menu controller_actions_menu dropdown_menu">
  14. <input tabindex="-1" type="checkbox" id="menu_label_<?php echo $item['id']; ?>">
  15. <label for="menu_label_<?php echo $item['id']; ?>" class="group_menu_title"></label>
  16. <ul class="list_actions menu">
  17. <?php foreach($this->menus['list_actions_menu'] as $menu){ ?>
  18. <li>
  19. <a class="<?php echo isset($menu['options']['class']) ? $menu['options']['class'] : ''; ?>" href="<?php echo string_replace_keys_values($menu['url'], $item); ?>" title="<?php html($menu['title']); ?>">
  20. <?php echo $menu['title']; ?>
  21. </a>
  22. </li>
  23. <?php } ?>
  24. </ul>
  25. </div>
  26. <?php } ?>
  27. <?php if ($item['parent_id']){ ?>
  28. <a class="parent_title" href="<?php echo rel_to_href($item['parent_url']); ?>"><?php html($item['parent_title']); ?></a>
  29. &rarr;
  30. <?php } ?>
  31.  
  32. ---
  33.  
  34. <?php if (!empty($item['is_private_item'])) { $stop++; ?>
  35. <?php html($item[$field['name']]); ?> <span class="is_private" title="<?php html($item['private_item_hint']); ?>"></span>
  36. <?php } else { ?>
  37. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>"><?php html($item[$field['name']]); ?></a>
  38. <?php if ($item['is_private']) { ?>
  39. <span class="is_private" title="<?php echo LANG_PRIVACY_HINT; ?>"></span>
  40. <?php } ?>
  41. <?php } ?>
  42. </h2>
  43. ---
  44. <?php } else { ?>
  45. <div class="value">
  46. <?php if (!empty($item['is_private_item'])) { ?>
  47. <div class="private_field_hint"><?php echo $item['private_item_hint']; ?></div>
  48. <?php } else { ?>
  49. <?php echo $field['html']; ?>
  50. <?php } ?>
  51. </div>
  52. <?php } ?>
  53. </div>
  54. <?php } ?>
В итоге из первого кода, это условие —
  1. <?php unset($item['fields']['photo']); ?>
Если ставится ниже строки —
  1. <?php foreach($item['fields'] as $field){ ?>
То не работает, и выходит фото с миниатюры записи и из самой статьи.
Сможете помочь мне?
#5 21 мая 2019 в 19:54
Dezerit
Здравствуйте, да это я знаю. Мне нужно как раз тут миниатюру которая выводится в статье, переместить ниже заголовка и все. Вот на фото будет нагляднее.


А вот что с ошибкой выходит
#6 21 мая 2019 в 20:26
Всё как я сказал, только после этого else
  1. </h2>
  2. <?php } else { ?>
Надо добавить строку
  1. <?php if ($field['name'] == 'photo') { continue; } ?>
#7 21 мая 2019 в 20:52

<?php if ($field['name'] == 'photo') { continue; } ?>

Loadырь
Отлично, это сработало. Заголовок выше фото, а само описание можно как то тоже переместить над фото (под заголовок)?

Вот что вышло —
  1. </h2>
  2. <?php if (!empty($item['fields']['photo'])){ ?>
  3. <div class="photo">
  4. <?php if (!empty($item['is_private_item'])) { ?>
  5. <?php echo html_image(default_images('private', $fields['photo']['options']['size_teaser']), $fields['photo']['options']['size_teaser'], $item['title']); ?>
  6. <?php } else { ?>
  7. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>">
  8. <?php echo html_image($item['photo'], $fields['photo']['options']['size_teaser'], $item['title']); ?>
  9. </a>
  10. <?php } ?>
  11. <?php unset($item['fields']['photo']); ?>
  12. </div>
  13. <?php } ?>
  14. <?php } else { ?>
  15. <?php if ($field['name'] == 'photo') { continue; } ?>
  16. <div class="value">
  17. <?php if (!empty($item['is_private_item'])) { ?>
  18. <div class="private_field_hint"><?php echo $item['private_item_hint']; ?></div>
  19. <?php } else { ?>
  20. <?php echo $field['html']; ?>
  21. <?php } ?>
  22. </div>
  23.  
  24. <?php } ?>
#8 22 мая 2019 в 17:44


Всё как я сказал, только после этого else

  1.  
  2.  
Надо добавить строку

Loadырь

Еще актуально, вопрос не решил…
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.