03/08/2016
Просмотры: 590

MODX Summary для вывода анонсов

MODX Summary 1.0.3 это по сути отдельный класс для формирования краткого описания на основании длинного текста. Данный класс вообще не зависит от MODX и поэтому на его базе были написаны сниппеты как для MODX Evolution, так и для MODX Revolution. В основе компонента лежит логика одноименного экстендера для сниппета Ditto из MODX Evolution.

Функционал summary частично схож с модификатором ellipsis в MODX Revolution, т.е. обрезание строки до заданного количества символов. Но в отличии от модификатора ellipsis, этот сниппет может удалять из строки HTML теги, преобразовывать MODX теги в entities сущности.

Помимо этого, summary понимает тег cut (который можно переопределить при желании) и если он не обнаружен, то сокращаемый текст не обрывается на половине слова или середине предложения, а заканчивается на ближайшей точке. Если в обрабатываемом тексте встречаются HTML теги, то они могут быть оставлены. Но при этом, если требуемая длинна текста достигнута, то все не закрытые теги будут закрыты автоматически.

В отличии от многих других аналогичных сниппетов, summary не добавляет бездумно троеточие в конец текста, т.к. не всегда в этом есть необходимость. Поэтому если хочется всегда иметь троеточие, то указывайте его после вызова сниппета.

Стоит помнить, что Summary может добавить точку в конец сокращенного текста. Но произойдет это только в том случае, если текст был обрезан по строке указанной в параметре cut и параметре dotted имеет значение 2. Более подробно смотрите в описании самого параметра dotted.

В основе компонента лежит логика одноименного экстендера для сниппета Ditto из MODX Evolution.

ПараметрОписаниеЗначение
len Длина текста для вывода
Возможные значения
целое число
Значение по умолчанию
200
Примечание
Округляется до ближайшей точки/слова в пределах 100 символов. Если этот же параметр был указан через параметр options, то значение будет переопределено.
text Обрабатываемый текст. В MODX Revolution этот параметр имеет псевдоним input для того, чтобы сниппет можно было вызывать как модификатор.
Возможные значения
строка с текстом
Значение по умолчанию
пусто
Примечание
Если строка пустая, то снипет так же вернет пустую строку и отправит в лог замечание типа modX::LOG_LEVEL_DEBUG
tags Идентификатор обработки HTML тегов - оставлять/вырезать
Возможные значения
0 - вырезать, 1 - оставлять
Значение по умолчанию
0
Примечание
Если этот же параметр был указан через параметр options, то значение будет переопределено.
noparser Идентификатор обработки MODX тегов - оставлять/вырезать
Возможные значения
0 - вырезать, 1 - оставлять
Значение по умолчанию
1
Примечание
Если этот же параметр был указан через параметр options, то значение будет переопределено.
dotted Схема добавления точек в конец текста
Возможные значения
0 - никогда не добавлять, 1 - добавлять только если сокращенный текст не совпал с оригинальным, 2 - добавлять точку если текст был обрезан по разделителю cut или троеточие, если текст был сокращен по числу символов в тексте.
Значение по умолчанию
0
Примечание
Если этот же параметр был указан через параметр options, то значение будет переопределено.
cut Разделитель вступительного текста в основном основного
Возможные значения
любая последовательность символов
Значение по умолчанию
Примечание
Если этот же параметр был указан через параметр options, то значение будет переопределено.
options Дополнительные параметры сниппета передаваемые во время вызова при помощи модификаторов MODX Revolution
Возможные значения
Строка с параметрами tags, len, noparser разделенные символом &
Значение по умолчанию
пусто
Примечание
Этот параметр доступен только в MODX Revolution

Установка сниппета Summary на MODX Revolution

Компонент доступен для скачивания в офф. репозитории MODX. В случае, если сайт окажется не доступен, то скачать пакет можно в разделе релизов на GitHub. Ну а если вы желаете доработать сниппет, то можете сделать форк проекта (опять таки на GitHub) и прислать PullRequest. Для желающих собрать пакет самостоятельно, в корне лежит папка _build.

Установка сниппета Summary на MODX Evolution

Необходимо скачать исходники сниппета с GitHub и залить в корень вашего сайта. После чего создать сниппет с именем summary и содержимым:

1
return require MODX_BASE_PATH.'assets/snippets/summary/snippet.summary.php';

1 пример вызова Summary 1.0.3

Удалить все теги из поля содержимое ресурса, а сам текст в содержимом ресурса сократить до длины 200 символов с плавающей длиной +/- 100 символов. Если в содержимом ресурса будет обнаружен тег cut, то сниппет должен вернуть отрезок текста до этого тега. Все HTML теги необходимо удалить, а MODX теги оставить:

1
2
3
[[summary? &text=`[*content*]`]] //MODX Evolution
[[summary? &text=`[[*content]]`]] //MODX Revolution
[[*content:summary]] //MODX Revolution с вызовом при помощи модификаторов

2 пример вызова Summary 1.0.3

В обрабатываемом тексте оставить HTML теги, а сам текст сократить до длины от 200 до 400 символов (300 +/- 100). Но если в тексте обнаружен тег cut, то сниппет должен вернуть отрезок текста до этого тега. Все MODX теги необходимо оставить:

1
2
3
[[summary? &text=`[*content*]` &len=`300` &tags=`1`]] //MODX Evolution
[[summary? &text=`[[*content]]` &len=`300` &tags=`1`]] //MODX Revolution
[[*content:summary=`len=300&tags=1`]] //MODX Revolution с вызовом при помощи модификаторов

3 пример вызова Summary 1.0.3

Обрабатываемый текст сократить до 50 символов. Если на первых 50 символах точка не будет обнаружена, то необходимо ее найти в пределах ближайших 100 символов (таким образом максимальная длина текста может быть 150 символов). Но если в тексте встретиться тег cut, то на выходе должен быть текст до этого тега. Все MODX теги преобразуются в HTML сущности, а HTML теги будут вырезаны.

1
2
3
[[summary? &text=`[+content+]` &len=`50` &noparser=`0`]] //MODX Evolution
[[summary? &text=`[[+content]]` &len=`50` &noparser=`0`]] //MODX Revolution
[[+content:summary=`len=50&noparser=0`]] //MODX Revolution с вызовом при помощи модификаторов

4 пример вызова Summary 1.0.3

Если в тексте будет обнаружен разделитель указанный параметре cut, то сниппет отдаст текст до этого разделителя (в конце будет установлена точка). Если же разделителя в тексте нет, то сниппет попробует сократить текст до 100 символов +/- 50. В случае успешного сокращения текста в конец будет добавлено троеточие. Если же текст короче 100 символов, то сниппет вернет этот же текст. На выходе во всех случаях будут удалены HTML теги, а MODX теги преобразуются в HTML сущности.

1
2
3
[[summary? &text=`[+content+]` &len=`50` &dotted=`2` &cut=`////CUT////` &noparser=`0`]] //MODX Evolution
[[summary? &text=`[[+content]]` &dotted=`2` &cut=`////CUT////` &len=`50` &noparser=`0`]] //MODX Revolution
[[+content:summary=`len=50&noparser=0&dotted=2&cut=////CUT////`]] //MODX Revolution с вызовом при помощи модификаторов

Версия 1.0.3 от 31.07.2013

  • Исправлен глюк с завершающим символом entities

Версия 1.0.2 от 31.07.2013

  • Добавлен параметр dotted для задания схемы расстановки точек в конце текста
  • Добавлен параметр cut для смены разделителя во вступительном тексте
  • Исправлена проблема с сокращением текста по html-тегу

Версия 1.0.1 от 14.03.2013

  • Исправлена обработка параметров noparser и tags
  • Исправлен глюк с TinyMCE с оберткой тега cut в тег p
Источник: https://ilyaut.ru
ТЕГИ: