Обрезать текст при просмотре списка для поля "Текст" аналогично "Текст HTML"

 
Посетитель
small user social cms
Медаль
Сообщений: 191
Доброго времени суток, сообщество.
Вопрос:" Как обрезать текст при просмотре списка для поля "Текст" также как это реализовано для поля "Текст HTML" ?
Вопрос в том числе и об удалении форматирования - не секрет что в поле "текст" легко вставляется код.
Спасибо
Посетитель
small user social cms
Медаль
Сообщений: 577
У меня более реальная проблема.
Поле текст "Обрезать текст при просмотре списка"

указываешь, например, 600 символов
но перед текстом вставляешь картинку или видео
и они тоже обрезаются! Выводится только текст

как это вылечить?
Реклама
cms
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 420
@iKrym, видео и картинки отдельными полями + чекбокс "показывать в списке"
Посетитель
no avatar
Сообщений: 8
Алексей:
Вопрос:" Как обрезать текст при просмотре списка для поля "Текст" также как это реализовано для поля "Текст HTML" ?

Тоже интересует, как это сделать?
Посетитель
small user social cms
МедальАвторитет форумаПочетный донор проектаКубок зрительских симпатий
Сообщений: 3099
Можно попробовать вытянуть поле из цикла и дальше http://ruseller.com/lessons.php?id=1769
Посетитель
small user social cms
Медаль
Сообщений: 191
я в 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%)
}

* к своему проекту доработать напильником
Посетитель
no avatar
Сообщений: 8
Jestik:

Можно попробовать вытянуть поле из цикла и дальше http://ruseller.com/lessons.php?id=1769

Спасибо, но для меня пока сложновато ))
Посетитель
no avatar
Сообщений: 8
Алексей:

я в 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%)
}

* к своему проекту доработать напильником


Спасибо!
Пожалуйста, можно поподробнее, в каком файле и где именно вставить этот код или заменить?
Посетитель
small user social cms
МедальПочетный донор проектаКубок зрительских симпатийАвторитет форумаПочетный донор проекта
Сообщений: 2892
@Igoreha247, уточните: вам при просмотре списка записей типа контента обрезать нужно?
Украинский для инстант
Посетитель
no avatar
Сообщений: 8
Олег Васильевич я:

@Igoreha247, уточните: вам при просмотре списка записей типа контента обрезать нужно?

Да, в списке, тип контента "Текст". Чтобы при просмотре списка не отображался весь текст, а был обрезан до нужной длины, как сделано для типа поля "Текст HTML" там есть "Обрезать текст при просмотре списка". Странно, что это сразу не сделано для типа поля "Текст".
Посетитель
small user social cms
МедальПочетный донор проектаКубок зрительских симпатийАвторитет форумаПочетный донор проекта
Сообщений: 2892
Если устраивает работа встроенной в коробку функции, можете так попробовать:
В нужном файле списков (templates\default\content\ файлы содержащие в названии _list) найти:
Код PHP:
  1.  
  2. <?php echo $field['handler']->setItem($item)->parseTeaser($item[$field['name']]); ?>
  3.  
заменить на:
Код PHP:
  1.  
  2. <?php if($field['name'] == 'shorttext') { ?>
  3. <?php echo string_short($field['handler']->setItem($item)->parseTeaser($item[$field['name']]), 50); ?>
  4. <?php } else { ?>
  5. <?php echo $field['handler']->setItem($item)->parseTeaser($item[$field['name']]); ?>
  6. <?php } ?>
  7.  
Где:
shorttext - имя поля, текст которого будет обрезан,
50 - количество знаков (1:1 работает только до первой точки)
Украинский для инстант
Посетитель
no avatar
Сообщений: 8
Олег Васильевич я:

Если устраивает работа встроенной в коробку функции, можете так попробовать:
В нужном файле списков (templates\default\content\ файлы содержащие в названии _list) найти:
Код PHP:
  1.  
  2.  
  3.  
заменить на:
Код PHP:
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
Где:
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;
}
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.