Вопрос:" Как обрезать текст при просмотре списка для поля "Текст" также как это реализовано для поля "Текст HTML"?
Вопрос в том числе и об удалении форматирования — не секрет что в поле "текст" легко вставляется код.
Спасибо
Поле текст "Обрезать текст при просмотре списка"
указываешь, например, 600 символов
но перед текстом вставляешь картинку или видео
и они тоже обрезаются! Выводится только текст
как это вылечить?
Вопрос:" Как обрезать текст при просмотре списка для поля "Текст" также как это реализовано для поля "Текст HTML" ?
Тоже интересует, как это сделать?
.content_list_item .ft_text.f_content{
max-height:60px;
overflow:hidden;
margin-top:-20px;
}
.content_list_item .ft_text.f_content:before{
content:"";
display:block;
height:15px;
position:relative;
top:50px;
background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0), #fff 75%)
}
* к своему проекту доработать напильником
Можно попробовать вытянуть поле из цикла и дальше ruseller.com/lessons.php?id=1769
Спасибо, но для меня пока сложновато ))
я в php не силен — сделал так:
.content_list_item .ft_text.f_content{
max-height:60px;
overflow:hidden;
margin-top:-20px;
}
.content_list_item .ft_text.f_content:before{
content:"";
display:block;
height:15px;
position:relative;
top:50px;
background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0), #fff 75%)
}
* к своему проекту доработать напильником
Спасибо!
Пожалуйста, можно поподробнее, в каком файле и где именно вставить этот код или заменить?
@Igoreha247, уточните: вам при просмотре списка записей типа контента обрезать нужно?
Да, в списке, тип контента "Текст". Чтобы при просмотре списка не отображался весь текст, а был обрезан до нужной длины, как сделано для типа поля "Текст HTML" там есть "Обрезать текст при просмотре списка". Странно, что это сразу не сделано для типа поля "Текст".
В нужном файле списков (templates\default\content\ файлы содержащие в названии _list) найти:
<?php echo $field['handler']->setItem($item)->parseTeaser($item[$field['name']]); ?>
<?php if($field['name'] == 'shorttext') { ?> <?php echo string_short($field['handler']->setItem($item)->parseTeaser($item[$field['name']]), 50); ?> <?php } else { ?> <?php echo $field['handler']->setItem($item)->parseTeaser($item[$field['name']]); ?> <?php } ?>
shorttext — имя поля, текст которого будет обрезан,
50 — количество знаков (1:1 работает только до первой точки)
Если устраивает работа встроенной в коробку функции, можете так попробовать:
В нужном файле списков (templates\default\content\ файлы содержащие в названии _list) найти:
заменить на:
Где:
shorttext — имя поля, текст которого будет обрезан,
50 — количество знаков (1:1 работает только до первой точки)
Спасибо! Ваш вариант работает.
Тоже разобрался, вот ещё вариант. Я изменил сам тип поля "Текст" как в типе поля "Текст HTML" Так можно в админке устанавливать количество знаков.
В файл sistem/fields/text.php добавил строки из sistem/fields/html.php :
new fieldNumber('teaser_len', array(
'title' => LANG_PARSER_HTML_TEASER_LEN,
'hint' => LANG_PARSER_HTML_TEASER_LEN_HINT,
)),
и
public function parseTeaser($value) {
$max_len = $this->getOption('teaser_len');
if ($max_len){
$url = href_to($this->item['ctype']['name'], $this->item['slug']. ".html");
$value = string_short($value, $max_len);
$value .= ' <a class="read-more" href="'.$url.'">'.LANG_MORE.'</a>';
}
return $value;
}