Главная | Новости | Блог (rss) | Ответы | Учебник | Правила |
Вы здесь: ГлавнаяБлогКак создать анонс статьи
Вход | Регистрация

Как создать анонс статьи

Часто требуется на главной странице (или в списке) создать анонс статьи. При этом добавлять отдельное поле с сокращенным текстом лень. Чаще всего, в анонсе используется начало статьи определенной длины или первый абзац статьи.
Кажется, что нет ничего проще. Отрезать от статьи кусок в N символов и всё. Но это не всегда работает, а если и работает, то неправильно.
Вот один из примеров. Самой распространенной кодировкой является UTF-8. Русские символы кодируются двумя байтами. Начинающие программисты просто берут и обрезают текст по N-ный символ, в итоге, разрезая русскую букву пополам. И вместо буквы на странице отображается непонятный символ. А некоторые бразуеры вообще отказываются отображать такую страницу. Видел тысячи сайтов с такой проблемой.
Вторым примером может быть обрезание тэга при использовании в тексте html тэгов или bb кода. Часть кода входит в анонс, а вторая часть не входит. В связи с этим получается неправильная разметка.
Этапы решения задачи:
1. Удалить из текста все html тэги или bb код.
2. Проанализировать длину получившегося текста. Если больше нужной нам длины, то перейти на пункт 3, если меньше - то на пункт 5.
3. Вырезать начало статьи, но не по N-ный символ, а часть, начиная с N-ного символа до первого пробела.
4. К концу текста добавить троеточие.
5. Вывести текст.

Пусть изначальный текст будет в переменной {message}.
Удаление html тэгов: <?function({mess}=strip_tags;{message})?>
Определение длины строки с уже удаленными тегами: <?function({len}=strlen;{mess})?>
Вырезать первые 500 символов по пробелу: <?function({mess}=substrchar;{mess};0; ;500)?>
Вывести строчку с учетом замен: <?function(replace;{mess})?>

Представим, что вместо html тэгов Вы используете bb код. Тогда удаление bb происходит немного другим способом. Есть два варианта:
1. Вам нужно кроме основного файла замены создать еще один. В дополнительном файле замены необходимо переопределить обработку bb кода. Если "[url={*}]{*}[/url]" меняется на "<a href='{1}'}{2}</a}", то в дополнительном "[url={*}]{*}[/url]" замените на "{2}". А при замене вызывать не <?function(replace;{mess})?>, а <?function(replace;{mess};названиефайладругойзамены)?>
2. Перед удалением html тэгов сделайте вызов замены и только потом удаляйте тэги.

Вот пример готового кода вырезания начала статьи при разрешенном html коде (взято без изменений из структуры блога).
<?function({mess}=strip_tags;{message})?>
<?function({len}=strlen;{mess})?>
<?ifcmp({len}>550)?>
<?function({mess}=substrchar;{mess};0; ;500)?>
<?function(replace;{mess})?>...<br/><a href='{_urldetail}'>Читать всё</a>
<?else?>
<?function(replace;{mess})?>
<?endif?>

Некоторые сайтостроители, особенно новички, могут спросить, зачем всё так сложно, и не проще ли было сделать "галочку" и автоматом создавать короткое описание. Отвечаем. Не проще. Конструктор Letnick.com предназначен для создания самых разнообразных сайтов в том числе и сложных проектов, а предусмотреть все способы обрезания с помощью "галочек" невозможно. Предложенный механизм обработки с помощью функций позволяет максимально гибко обрабатывать данные. Для тех, кто не понимает или не хочет разбираться с шаблонизатором, есть готовые структуры. Достаточно установить и разместить нужную структуру, а при необходимости изменить под свой проект.
27 апр 2012г 12:41:36
Просмотров: 1978
← предыдущая следующая →
29 апр 2015г 17:34:30, Андрей
Здравствуйте пользователи конструктора Letnick.com! Предлагаю всем нам об единица на сайте http://let-info.ru Есть форум, на котором можно обсуждать создавать и помогать в работе с созданном сайтом на конструкторе. Есть большой выбор смайликов для ваших сайтов и многое другое! Присоединяйтесь!
01 май 2012г 14:28:54, Владимир(ака коммунити)
Ну теперь осталось только синхронизацию переделать.
Нужно сделать менеджер задач где можно указывать приоритет синхронизации и синхронизируемые объекты с описанием изменения и ссылкой подтвердить и наоборот отменить(всяко бывает) да сделать отдельную синхронизацию объектов(изменяемых) с возможностью вернуть в изначальный вариант в течении дня(не дольше иначе изменить будет невозможно, исключит ошибки и обращения к администрации проекта ЛетНик с претензиями безпочвенными) такие меры предостарожностей повысят авторитет да и странно что Админ позиционирует это как ограничение а автоматическую синхронизацию как некую коммерческую услугу.
Для остальных есть автоматическая синхронизация.
Как пример можно рассматривать WiKi.

Ваш комментарий
Имя *
E-mail
Сообщение *
Введите цифры * Цифры ?

Введите цифры с картинки без букв
 

О нас | Написать нам | Сообщить о правонарушении |

Создать свой сайт © Конструктор сайтов Letnick.com 2006-2017