Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Как ограничить количество символов в краткой новости

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


     20.06.2011    верстка, краткая новость, количество символов, php, css, jquery    Все вопросы » Общие вопросы    21258

вопрос
Я встречал пока только два способа.
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
Эксперт

Sander - 25 июля 2011 12:47 -

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

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

ICQ: 404-037-556
Skype: Sander8804

ПафНутиЙ
Админ

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

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

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

Valentine
Юзер

Valentine - 27 июля 2011 00:47 -

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

Borchun
Юзер

Borchun - 26 июля 2011 11:49 -

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

ПафНутиЙ
Админ

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

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

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

RomaNuch
Юзер

RomaNuch - 26 июля 2011 10:13 -

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

WEZANGO
Юзер

WEZANGO - 29 июля 2011 22:13 -

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

ПафНутиЙ
Админ

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

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

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

RomaNuch
Юзер

RomaNuch - 30 июля 2011 09:46 -

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

ПафНутиЙ
Админ

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

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

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

WEZANGO
Юзер

WEZANGO - 31 июля 2011 21:23 -

да через custom

ПафНутиЙ
Админ

ПафНутиЙ - 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
Юзер

WEZANGO - 31 июля 2011 22:39 -

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

nowheremany
Эксперт

nowheremany - 16 августа 2011 16:32 -

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

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

mngl
Юзер

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

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

AndreY_ZO_o
Юзер

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

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

maxvel0007
Гости

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

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

Warlog
Юзер

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

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

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

vitnet
Эксперт

vitnet - 29 декабря 2013 15:08 -


vitnet
Эксперт

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
Юзер

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

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

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

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

наверх