Как вынести заголовок вверх поста

#1 25 ноября 2015 в 12:34

Есть стиль списка:

  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. 'is_expanded' => $ctype['options']['list_expand_filter']
  11. ));
  12. }
  13. ?>
  14.  
  15. <?php if ($items){ ?>
  16.  
  17. <div class="content_list featured <?php echo $ctype['name']; ?>_list">
  18.  
  19. <?php foreach($items as $item){ ?>
  20.  
  21. <?php $item['ctype'] = $ctype; ?>
  22.  
  23. <div class="content_list_item <?php echo $ctype['name']; ?>_list_item<?php if (!empty($item['is_vip'])){ ?> is_vip<?php } ?>">
  24.  
  25. <?php if (isset($fields['photo']) && $fields['photo']['is_in_list'] && !empty($item['photo'])){ ?>
  26. <div class="photo">
  27. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>">
  28. <?php echo html_image($item['photo'], $fields['photo']['options']['size_teaser'], $item['title']); ?>
  29. <?php unset($item['photo']); ?>
  30. </a>
  31. </div>
  32. <?php } ?>
  33.  
  34. <div class="fields">
  35.  
  36. <?php foreach($fields as $field){ ?>
  37.  
  38. <?php if (empty($item[$field['name']])) { continue; } ?>
  39. <?php if ($field['is_system']) { continue; } ?>
  40. <?php if (!$field['is_in_list']) { continue; } ?>
  41.  
  42. <?php if ($field['groups_read'] && !$user->isInGroups($field['groups_read'])) { continue; } ?>
  43.  
  44. <?php
  45. if (!isset($field['options']['label_in_list'])) {
  46. $label_pos = 'none';
  47. } else {
  48. $label_pos = $field['options']['label_in_list'];
  49. }
  50. ?>
  51.  
  52. <div class="field ft_<?php echo $field['type']; ?> f_<?php echo $field['name']; ?>">
  53.  
  54. <?php if ($label_pos != 'none'){ ?>
  55. <div class="title_<?php echo $label_pos; ?>"><?php echo $field['title'] . ($label_pos=='left' ? ': ' : ''); ?></div>
  56. <?php } ?>
  57.  
  58. <div class="value">
  59. <?php if ($field['name'] == 'title' && $ctype['options']['item_on']){ ?>
  60.  
  61. <?php if ($item['parent_id']){ ?>
  62. <a class="parent_title" href="<?php echo href_to($item['parent_url']); ?>"><?php echo htmlspecialchars($item['parent_title']); ?></a>
  63. &rarr;
  64. <?php } ?>
  65.  
  66. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>"><?php echo htmlspecialchars($item[$field['name']]); ?></a>
  67.  
  68. <?php } else { ?>
  69. <?php echo $field['handler']->setItem($item)->parseTeaser($item[$field['name']]); ?>
  70. <?php } ?>
  71. </div>
  72.  
  73. </div>
  74.  
  75. <?php } ?>
  76.  
  77. </div>
  78.  
  79. <?php
  80. $is_tags = $ctype['is_tags'] &&
  81. !empty($ctype['options']['is_tags_in_list']) &&
  82. $item['tags'];
  83. ?>
  84.  
  85. <?php if ($is_tags){ ?>
  86. <div class="tags_bar">
  87. <?php echo html_tags_bar($item['tags']); ?>
  88. </div>
  89. <?php } ?>
  90. </div>
  91.  
  92. <?php if ($perpage < $total) { ?>
  93. <?php echo html_pagebar($page, $perpage, $total, $page_url, $filters); ?>
  94. <?php } ?>
  95.  
  96. <?php } else { echo LANG_LIST_EMPTY; } ?>

Сейчас пост с фотографией выглядит вот так:
Какой кусок кода нужно передвинуть, чтобы заголовок был над фото?

#2 25 ноября 2015 в 13:43
под боком нет IDE'шки поэтому по коду могу немного ошибиться но смысл думаю понятен:
перед <?php if (isset($fields['photo']) && $fields['photo']['is_in_list'] && !empty($item['photo'])){ ?>
вставляете что-то на подобие
  1. <?php if (($item[$fields]['caption'])) { /*тут вывод заголовка echo $item[$fields]['caption']['title'];*/; unset $item[$fields]['caption']; } ?>
#3 25 ноября 2015 в 14:39
Val, увы не работает. Я также перед <?php if (isset($fields['photo']) && $fields['photo']['is_in_list'] && !empty($item['photo'])){ ?> какие только варианты не пробовал — не работает хоть убей… Хотя раньше я это реализовывал, но обновился и всё — не работает старая схема)))
#4 25 ноября 2015 в 14:47
Разобрался… Всего то нужно было вот этот кусок удалить

  1. <?php if (isset($fields['photo']) && $fields['photo']['is_in_list'] && !empty($item['photo'])){ ?>
  2. <div class="photo">
  3. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>">
  4. <?php echo html_image($item['photo'], $fields['photo']['options']['size_teaser'], $item['title']); ?>
  5. <?php unset($item['photo']); ?>
  6. </a>
  7. </div>
  8. <?php } ?>
#5 25 ноября 2015 в 14:53

Всего то нужно было вот этот кусок удалить

HostelB
а надо было перед ним добавить, что-то такое
  1. <?php if (isset($fields['title']) && $fields['title']['is_in_list'] && !empty($item['title'])){ ?>
  2. <div class="title">
  3. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>">
  4. <?php echo html($item['title']); ?>
  5. <?php unset($item['title']); ?>
  6. </a>
  7. </div>
  8. <?php } ?>
#6 25 ноября 2015 в 17:15
Loadырь, ну вот как то так у меня сейчас
#7 25 ноября 2015 в 17:54
HostelB, всё верно, если вам просто достаточно вывести последовательность полей в том порядке как они чередуются в админке. Но если вам нужна именно жёсткая привязка заголовка к картинке, чтобы порядок полей не влиял на выдачу в шаблоне, то тут уже надо конкретно выводить нужные поля и удалять их из из последующей выдачи.
#8 25 ноября 2015 в 18:22
Loadырь, да, я это понимаю. Но пока бьюсь над новым видом списка, буду идти по менее сложному пути) А потом уже буду смотреть что и как)
#9 25 ноября 2015 в 18:29

Но пока бьюсь над новым видом списка, буду идти по менее сложному пути

HostelB
И вам не жалко времени? Лучше бы сразу бросится с головой во все тяжкие, хапнуть горя experiencа. Вникнуть что, да как и уже творить нечто. А то так и будете топтаться по кругу усложняя лишь способы его прохождения. smile
#10 25 ноября 2015 в 21:26
Loadырь, думаю я на правильном пути)
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.