[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Присвоение функции каждой записи
o2designe
Здравствуйте. Разбираемся с движком instantcms. Возникла необходимость применить решение, при котором посты бы "обрезались" и имели кнопку "Развернуть" и "свернуть" соответственно. У инстанта есть вот такая конструкция вывода постов:

<?php
if( $ctype['options']['list_show_filter'] ) {
$this->renderAsset('ui/filter-panel', array(
'css_prefix' => $ctype['name'],
'page_url' => $page_url,
'fields' => $fields,
'props_fields' => $props_fields,
'props' => $props,
'filters' => $filters,
'is_expanded' => $ctype['options']['list_expand_filter']
));

}
?>
<?php
if ($items){ ?>
<div class="content_list featured <?php echo $ctype['name']; ?>_list">
<?php foreach($items as $item){ ?>
<?php
$item['ctype'] = $ctype; ?>
<div class="content_list_item <?php echo $ctype['name']; ?>_list_item<?php if (!empty($item['is_vip'])){ ?> is_vip<?php } ?>">

<
div id="content_text">

<
div class="fields">
<?php foreach($fields as $field){ ?>
<?php
if (empty($item[$field['name']])) { continue; } ?>
<?php
if ($field['is_system']) { continue; } ?>
<?php
if (!$field['is_in_list']) { continue; } ?>
<?php
if ($field['groups_read'] && !$user->isInGroups($field['groups_read'])) { continue; } ?>
<?php

if (!isset($field['options']['label_in_list'])) {
$label_pos = 'none';
} else {
$label_pos = $field['options']['label_in_list'];
}
?>
<div class="field ft_<?php echo $field['type']; ?> f_<?php echo $field['name']; ?>">
<?php if ($label_pos != 'none'){ ?>
<div class="title_<?php echo $label_pos; ?>"><?php echo $field['title'] . ($label_pos=='left' ? ': ' : ''); ?></div>
<?php } ?>
<div class="value">
<?php if ($field['name'] == 'title' && $ctype['options']['item_on']){ ?>
<table style="width: 100%; border-collapse: collapse;"><tbody><tr><td style="background-color: rgb(230, 230, 250);
letter-spacing: 0px; word-spacing: 0px; border-left: 4px solid rgb(255, 99, 71);"
><span style="font-size: 16pt;">
<?php if ($item['parent_id']){ ?>
<a class="parent_title" href="<?php echo href_to($item['parent_url']); ?>"><?php echo htmlspecialchars($item['parent_title']); ?></a>
&
rarr;
<?php } ?>
<a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>"><?php echo htmlspecialchars($item[$field['name']]); ?></a>

</
span><br></td><td style="vertical-align: middle; background-color: rgb(255, 218, 185);
letter-spacing: 0px; word-spacing: 0px; text-align: center; width: 80px;
background-image: none; background-repeat: repeat; background-position: 0% 0%;"
align="right" valign="top">

<?php if ($ctype['is_rating']){ ?>
<div class="bar_item bi_rating">
<?php echo $item['rating_widget']; ?>
</div>
<?php } ?>
<div id="content_text">

<
br></td></tr></tbody></table>

<?php } else { ?>
<?php
echo $field['handler']->setItem($item)->parseTeaser($item[$field['name']]); ?>
<?php
} ?>

</div>
</
div>
<?php } ?>
</div>
</
div>
<
div id="shadow"></div>
<
a class="read-next" style="display: inline;">Читать полностью</a>
<?php
$is_tags = $ctype['is_tags'] &&
!
empty($ctype['options']['is_tags_in_list']) &&
$item['tags'];
?>
<?php
if ($is_tags){ ?>
<div class="tags_bar">
<?php echo html_tags_bar($item['tags']); ?>
</div>
<?php } ?>
<?php

$show_bar = $ctype['is_rating'] ||
$fields['date_pub']['is_in_item'] ||
$fields['user']['is_in_item'] ||
!
empty($ctype['options']['hits_on']) ||
!
$item['is_pub'] ||
!
$item['is_approved'];
?>
<?php
if ($show_bar){ ?>
<div class="info_bar">
<?php if ($fields['date_pub']['is_in_list']){ ?>
<div class="bar_item bi_date_pub" title="<?php echo $fields['date_pub']['title']; ?>">
<?php echo $fields['date_pub']['handler']->parse( $item['date_pub'] ); ?>
</div>
<?php } ?>
<?php
if (!$item['is_pub']){ ?>
<div class="bar_item bi_not_pub">
<?php echo LANG_CONTENT_NOT_IS_PUB; ?>
</div>
<?php } ?>

<?php
if ($fields['user']['is_in_list']){ ?>
<div class="bar_item bi_user" title="<?php echo $fields['user']['title']; ?>">
<?php echo $fields['user']['handler']->parse( $item['user'] ); ?>
</div>
<?php if (!empty($item['folder_title'])){ ?>
<div class="bar_item bi_folder">
<
a href="<?php echo href_to
('users',
$item['user']['id'], array('content', $ctype['name'], $item['folder_id'])); ?>">
<?php echo $item['folder_title']; ?></a>
</
div>
<?php } ?>
<?php
} ?>
<?php
if ($ctype['is_comments']){ ?>
<div class="bar_item bi_comments">
<
a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>
#comments"
title="<?php echo LANG_COMMENTS; ?>"><?php echo intval($item['comments']); ?></a>
</
div>
<?php } ?>
<?php
if (!$item['is_approved']){ ?>
<div class="bar_item bi_not_approved">
<?php echo LANG_CONTENT_NOT_APPROVED; ?>
</div>
<?php } ?>

<?php
if ($ctype['is_favorites']){ ?>
<div class="bar_item bi_favorite">
<?php echo $item['favorite_widget']; ?>
</div>
<?php } ?>

</div>

<?php } ?>

</div>

<?php } ?>

</div>

<?php if ($perpage < $total) { ?>
<?php
echo html_pagebar($page, $perpage, $total, $page_url, $filters); ?>
<?php
} ?>

<?php
} else { echo LANG_LIST_EMPTY; } ?>


Мы уже внесли в данную конструкцию код, который должен сворачивать и разворачивать посты.

<div id="content_text">
<
p>Lorem ipsumLorem ipsum Lorem ipsumLorem ipsum</p>
<
p>Lorem ipsumLorem ipsum Lorem ipsumLorem ipsum</p>
<
p>Lorem ipsumLorem ipsum Lorem ipsumLorem ipsum</p>
<
p>Lorem ipsumLorem ipsum Lorem ipsumLorem ipsum</p>
<
p>Lorem ipsumLorem ipsum Lorem ipsumLorem ipsum</p>
</
div>
<
div id="shadow"></div>
<
a class="read-next" style="display: inline;">Читать далее</a>

<
script>
window.onload = function(){
blok = document.getElementById('content_text');
shadow = document.getElementById('shadow');
parent = blok.parentNode;
blok_height = blok.style.height ? blok.style.height : blok.offsetHeight;

if(blok_height > 80){
blok.style.maxHeight = '80px';
link = parent.getElementsByClassName('read-next')[0];
link.style.display = 'inline';

link.onclick = function(){

if(blok.style.maxHeight){
blok.style.maxHeight = '';
shadow.style.display ='none';
link.innerHTML = 'Скрыть';
} else {
blok.style.maxHeight = '80px';
link.innerHTML = 'Читать далее...';
shadow.style.display ='block';
}
return false;
}
}
}

</script>


Но, к сожалению, срабатывает только для первого поста...Для остальных постов кнопка показывается, но не работает. По логике вещей понимаем, что нужно дописать како-то код, который бы заставил эту кнопку работать у всех записей.

Вот так выглядит первая запись в ленте (скрипт работает)

user posted image

А вот так выглядят последующие записи в ленте:

user posted image

Здесь кнопка "читать полностью" уже не работает...

Уважаемые мастера! Подскажите пожалуйста, в каком направлении копать, так как с PHP отношения очень натянутые, пока только учимся...Заранее благодарны!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.