Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы Как ограничить количество символов в краткой новости

Как ограничить количество символов в краткой новости


     20.06.2011    Общие вопросы    18942

вопрос
Я встречал пока только два способа.
1. через правку файлов движка.
2. Через css - overflow:hidden.

Есть ли еще способы работающие непосредственно с текстом?

Ответил: ПафНутиЙ


Да, действительно есть два широко известных способа:

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

Открываем engine/modules/show.full.php
находим

}
        // Обработка дополнительных полей


И ниже вставляем:

$row['short_story'] = strip_tags(str_replace(array('<br>','<br />')," ",$row['short_story']));
    if (strlen($row['short_story'])>130) $row['short_story'] = substr($row['short_story'],0,130)."...";
    $tpl->set('{short-story}', stripslashes($row['short_story']));



Второй способ лучше, но недостаток в том, что не удаляется разметка, картинки, и т.д. и т.п. что тоже не очень хорошо влияет на восприятие материала.

Второй способ (CSS)
Задаём блоку определённую высоту, желательно чтобы она совпадала с окончанием строки, а не с её серединой smile
И добавляем блоку свойство overflow: hidden;
Выглядеть должно примерно так:

.news {height:108px; overflow:hidden;}
/*При условии что высота линии (line-height) равна 18px */




Но есть ещё и третий (возможно не последний) способ - на jquery, он лишён недостатков обоих первых способов, но и имеет свой - не терпит отключения jvascript


Для реализации этого метода нужно открыть файл main.tpl
перед
</head>
вставить:

[not-aviable=showfull]
<script type="text/jvascript" >
$(function shorting_news () {
    nShort = $("div[id^=news-id-]")
    nShort.each(function (shortme) {
        $(this).replaceWith("<span id='short-id"+shortme+"' class='shortme'>" + $(this).text().substr(0,200) + "&hellip;</span>");
    });
});
</script>
[/not-aviable]


Всё, теперь все короткие новости будут обрезаны до 200 символов и в конец будет добавлено троеточие, при этом ПС будут видеть полный текст новости smile

Комментарии пользователей (21)

Sander
1125

1637 | 1202

Sander - 25 июля 2011 12:47 - Эксперт

Есть еще 4й способ, PHP+CSS.
В PHP удаляем теги (т.е. текст весь остается), а на CSS скрываем лишнее.

SanDev.pro - мой блог.

ICQ: 404-037-556
Skype: Sander8804

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 25 июля 2011 14:17 - Админ

Сайт ещё не открылся, а пользователи уже комментируют ЫыыЫ вот это популярность wink

Каков вопрос - таков и ответ. Просто помните об этом.

Valentine
27 | 28

Valentine - 27 июля 2011 00:47 - Юзер

дизайн просто прелесть! необычно

Borchun
12 | 7

Borchun - 26 июля 2011 11:49 - Юзер

А можно подробнее про теги?

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 26 июля 2011 11:53 - Админ

$row['short_story'] = strip_tags(str_replace(array('<br>','<br />')," ",$row['short_story']));

Каков вопрос - таков и ответ. Просто помните об этом.

RomaNuch
32 | 33

RomaNuch - 26 июля 2011 10:13 - Юзер

ПафНутиЙ, а шо ты думал???) мы только ЗА такие полезные сайты!!!

WEZANGO
5

57 | 57

WEZANGO - 29 июля 2011 22:13 - Юзер

У меня не работает 3й способ. Просто ничего не происходит

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 30 июля 2011 06:08 - Админ

Способ работает - проверено, чтото делаете на то.

Каков вопрос - таков и ответ. Просто помните об этом.

RomaNuch
32 | 33

RomaNuch - 30 июля 2011 09:46 - Юзер

Пафнутий, у меня он тож не работает

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 31 июля 2011 20:39 - Админ

Подключаете к custom?
ссылку в студию.

Каков вопрос - таков и ответ. Просто помните об этом.

WEZANGO
5

57 | 57

WEZANGO - 31 июля 2011 21:23 - Юзер

да через custom

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 31 июля 2011 21:59 - Админ

nShort = $("div[id^=news-id-]")

это выборка по id блоков. соответственно скрипт не находит блоки, вот и не работает.
меняйте на
nShort = $("div[id^=n-id-]")

а в шаблон короткой новости пишите так:
<div id="n-id-{news-id}">{short-story}</div>

Каков вопрос - таков и ответ. Просто помните об этом.

WEZANGO
5

57 | 57

WEZANGO - 31 июля 2011 22:39 - Юзер

Спасибо, а можно такое же сделать по строкам, а не по символам ?

nowheremany
192

1659 | 1292

nowheremany - 16 августа 2011 16:32 - Эксперт

Что уже maxlength не канает чтоле?

Благодарность принимаю тут Связь

mngl
4 | 3

mngl - 11 сентября 2011 20:55 - Юзер

Можно ли поподробнее третий способ описать? Не получается почему-то sad

AndreY_ZO_o
28 | 28

AndreY_ZO_o - 9 февраля 2012 15:06 - Юзер

3-ий способ не работает... Странно... no Выручайте, гуру DLE winked

maxvel0007
128 | 17

maxvel0007 - 7 августа 2013 05:09 - Гости

Эх... Всё проще не куда )))
limit="x"

Warlog
5 | 2

Warlog - 27 декабря 2013 09:28 - Юзер

3й способ не сработал.
limit="x" не устраивает, т.к. не обрабатывается html код

Как ещё можно ограничить кол-во символов\строк без изменения *.php файлов движка ??

vitnet
218

2171 | 930

vitnet - 29 декабря 2013 15:08 - Эксперт


vitnet
218

2171 | 930

vitnet - 29 декабря 2013 15:52 - Эксперт

text/javascript
[not-aviable=showfull]
<script type="text/javascript">
$(function shorting_news () {
    nShort = $("div[id^=news-id-]");
    nShort.each(function (shortme) {
        $(this).replaceWith("<span id='short-id"+shortme+"' class='shortme'>" + $(this).text().substr(0,200) + "…</span>");
    });
});
</script>
[/not-aviable]

sibvalenki
2

sibvalenki - 1 февраля 2014 07:29 - Юзер

vitnet,
Как исправить скрипт, что бы и картинка и заголовок были?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы