Сниппеты: обрезаем текст до точки
Выводить анонсы статьи на сайте можно по-разному. В MODX Revolution даже существует поле «Аннотация», информацию из которого можно отображать где угодно. Но встречаются ситуации, когда некоторым причинам аннотации не пишутся, а анонсы тем не менее нужны. Для такого случая существует вариант выборки текста из непосредственно начала самого контента.
Способов на самом деле много, этот – несколько измененный пример из официальной документации MODX Revo. Производит обрезку текста до последней точки в заданных пределах.
Создаем новый сниппет, даем ему название tCut, вставляем нижеприведенный код:
$options) < $output = substr($input, 0, strrpos(substr($input, 0, $options), '.')); >else < $output = $input; >> return $output;
В нужном месте шаблона производим вызов сниппета:
[[+content:tCut =`150`]]
Теперь ваши контент-менеджеры могут сэкономить время на написании вступительных предложений, используя его для более важных рабочих моментов.
- Безопасный протокол
- Вывод названия родителя
Cacher is the code snippet organizer for pro developers
We empower you and your team to get more done, faster
1/10/2016 — 7:35 AM
share Share add_circle_outline Save
MODx Evolution: аннотация с TinyMCE
MODx Evolution: аннотация с TinyMCE
Без WYSIWYG-редактора править аннотацию к статье порой бывает очень неудобно. Лично мне особенно неприятен был тот момент, когда была необходимость прилепить несколько изображений к вырезке. Как оказалось достаточно было просто написать две строчки кода, оформив всё это мини-плагином. Решение: 1. Авторизовавшись на сайте, в админке идем с главной вкладки "Управление элементами" на вкладку "Плагины". 2. Кликаем по "Создать плагин". 3. Вбиваем любое понятное самому себе название и описание. 4. Обратите внимание на отсутствие . 5. В многострочное текстовое поле "Код" вставляем такое: global $replace_richtexteditor; $replace_richtexteditor[] = "introtext"; 6. Перемещаемся на таб "Системные события". Навешиваем срабатывание на OnDocFormRender, ставя галочку в группе Documents. 7. Наконец, как само собой разумеющееся: определяем новый плагин в удобную для восприятия категорию (см. таб "Конфигурация").
© 2023 Penguin Labs, LLC
All Rights Reserved
Сниппет для вывода аннотации статьи
Нужен сниппет для вывода аннотации статьи на главную.
Необходимо на главную выводить начальную часть текста раздела. Ditto для этого не очень подходит, он выводит содержимое дочерних файлов, а мне необходимо выводить основной.
Пока использую Ditto+FirstChildRedirect, но это меня не слишком устраивает — пришлось создать лишний документ и url немного портится.
Прошу прощения, если окажется, что решение очевидно, я только начала разбираться с MODx, первый сайт на ней делаю.
- 227 Posts Send PM
TonatosSN Reply #2, 16 years, 4 months ago
Прочитал раза три. Не понял — или пиво еще меня не покинуло, или правдо тут путаница в изложении.
Необходимо на главную выводить начальную часть текста раздела. Ditto для этого не очень подходит, он выводит содержимое дочерних файлов, а мне необходимо выводить основной.
Что Вы тут написали?
Что значит «текст раздела», «выводить основной» и т.д.? Какого раздела? И какой-такой «основной» Вы подразумеваете?
Ditto может вывдить аннотации ЛЮБЫХ документов, вплоть до конкретных перечисленных ай-дишников. Подробно опишите Вашу задачу, желательно, с иллюстрацией в виде дерева документов.
http://www.avizion.ru/ — строим стартап!
http://tonatos.ru/ — Заходите в гости.
- 34 Posts Send PM
rellocat Reply #3, 16 years, 4 months ago
Есть раздел, есть дочерние документы в нем.
Насколько я разобралась при указании startID Ditto будет выводить в месте вызова начало текста или аннотацию именно дочерних документов. В моем случае дочерние документы отсутствуют, мне нужно просто вывести на главную страницу аннотацию или начало текста определенного документа.
Дерево документов в понимании не поможет, но пожалуйста пример:
«Главная» (на главной странице необходимо вывести часть текста «О компании», который берется из документа «О компании»)
«О компании» (содержит в себе текст, часть которого необходимо вывести на главной.)
Судя по вашей реплике, я поняла, что это возможно с помощью Ditto — расскажите, пожалуйста, как именно.
- 227 Posts Send PM
TonatosSN Reply #4, 16 years, 4 months ago
Ну вот Совсем другой разговор.
Как я понял Вашу проблему, так проще вообще свой сниппет написать.
Готовых у меня таких нет, так что может быть на форуме что-нибудь выложит.
Второй вариант — руками написать нужный текст на главной.
Третий — все же Дитто. Тяжеловесно только больно для такой задачи
Вот тут лежит ссылка на архив с документацией.
http://modxcms.com/forums/index.php/topic,13533.0.html
Вот. Там есть параметр «&documents», который позволяет подставлять специфические документы в вывод.
Просто в документ указываете ID вашей страницы «О компании» и все.
Вызов должен выглядеть примерно так:
[!Ditto? &documents=`ID страницы «О компании»`!]
Естественно, подставите в параметры нужные tpl, пораметры trunk и т.д.
http://www.avizion.ru/ — строим стартап!
http://tonatos.ru/ — Заходите в гости.
- 34 Posts Send PM
rellocat Reply #5, 16 years, 4 months ago
Спасибо! &documents то что надо.
Для написания сниппета я пока не созрела — я еще скорее дизайнер, чем разработчик. А прописывать руками — лишние сложности для будущего менеджера сайта.
- 1,084 Posts Send PM
openagate Reply #6, 16 years, 4 months ago
Quote from: rellocat at Jul 14, 2007, 01:24 PM
Судя по вашей реплике, я поняла, что это возможно с помощью Ditto — расскажите, пожалуйста, как именно.
rellocat, скорее всего, Дитто для того, что тебе требуется, — это перебор!
Ммм, на своём примере могу пояснить.
на странице воткнут сниппет [!Catalog?&pid=1&chunk=`catalog`!]
pid=1 — это id’шник каталога.
Вот сам сниппет:
$children = $modx->getActiveChildren($pid, 'menuindex', 'ASC', 'id, pagetitle, description, alias, longtitle, menutitle, introtext'); $c = count($children); foreach ($children as $ch) < $id = $ch['id']; $pagetitle = $ch['pagetitle']; $longtitle = $ch['longtitle']; $introtext = $ch['introtext']; $description = $ch['description']; $alias = $ch['alias']; $a = $modx->getChunk($chunk); $modx->setPlaceholder('id', $id); $modx->setPlaceholder('title', $pagetitle); $modx->setPlaceholder('longtitle', $longtitle); $modx->setPlaceholder('description', $description); $modx->setPlaceholder('introtext', $introtext); $modx->setPlaceholder('alias', $alias); $fields = array ('[+id+]', '[+alias+]', '[+title+]', '[+longtitle+]', '[+introtext+]', '[+description+]'); $values = array ($id, $alias, $pagetitle, $longtitle, $introtext, $description); $output .= str_replace ($fields, $values, $a); > return $output;
- [+longtitle+]
[+title+] →
Понятно, что сниппет надо обозвать Catalog, а чанк — catalog.
Оформление надо выносить в чанк, чтобы не ковырять каждый раз сниппет ради того, чтобы скорректировать оформление.
В спешке, но надеюсь, что хоть чем -то помог.
Сообшники, что php курят, поправляйте, если у меня в сниппете ошибка.
Да, для аннотаций надо использовать соответствующие поля в админке: introtext и description. не знаю, как по-русски, у меня не русифицировано.
UPD, сниппет подправил, там был косяк
Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
- 1,084 Posts Send PM
openagate Reply #7, 16 years, 4 months ago
сниппет можешь даже не трогать, надо только по себя выправить чанк.
Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
- 34 Posts Send PM
rellocat Reply #8, 16 years, 4 months ago
openagate, спасибо. но, насколько я разобралась в Вашем сниппете, он выводит как раз аннотации дочерних документов, что мне не нужно.
- 1,084 Posts Send PM
openagate Reply #9, 16 years, 4 months ago
только сейчас понял, то он немного не подходит, но по причине того, что он подразумевает упорядоченный вывод нескольких дочерних элементов.
Насчёт дочерних/не_дочерних элементов понял, необходим вообще простой сниппет.
Если я правильно понял, то необходим сниппет, который по определённому id’ишнику выводит ссылку на документ и аннотацию!
Господа php-кодеры, призываю, упростите мой сниппет в разы, чтобы реализовать сие, у меня времени вообще нет, убегаю.
rellocat, помощь придёт %) делов-то реально на парсек для знающих:)
Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
- 1,084 Posts Send PM
openagate Reply #10, 16 years, 4 months ago
Надо потестить, но по-моему, достаточно в моём сниппете заменить
modx->getDocument или что-то в этом роде. убрать счётчик детей.
Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
Don’t have a MODX.com account? Create one
Launch new projects in seconds in MODX Cloud
Don’t Be That Guy
Be nice, respectful and patient. Inflammatory or inappropriate posts will get your post nuked and flood your life with bans and bad karma.
Thank the People that Help
Remember, this is an Open Source project and the volunteers here assist out of love for the project and a desire to help others.
Создание (редактирование) страниц в системе управления MODx
Вы вошли в систему управления MODx Revo. В блоке слева, на вкладке «Ресурсы«, находится древо ресурсов. Для редактирования нажмите левой кнопкой мыши на наименовании соответствующего ресурса, например, «Продукция».
Чтобы добавить новый дочерний документ в папку, щёлкните по ней правой кнопкой мыши, в выпадающем меню выберите пункт «Создать — Дочерний документ«. Появится бланк с формами для заполнения.

Редактор страницы делится на 4 вкладки:
- Документ
- Настройки
- Дополнительные поля
- Группы ресурсов
Вкладка «Документ»
Заголовок. В поле «Заголовок» введите наименование страницы. Нажмите на значок выпадающего списка «Шаблон» и выберите наименование необходимое значение.
Расширенный заголовок. Данное поле необходимо заполнять в том случае, если оно будет выводиться на сайте. Если расширенный заголовок нигде не выводится, то данное поле можно оставить пустым.
Описание. Аннотация ресурса, которую необходимо заполнять в том случае, если она выводится на сайте.
Аннотация. Краткий (превью) текст ресурса, который необходимо заполнять в том случае, если он выводится на сайте. Например, аннотация к ресурсу может отбражаться в общем списке статей или в списке продукции каталога.
Содержимое ресурса. Основной текст, который будет отображаться на странице. В данном поле можно добавлять изображения, ссылки, видео.
Шаблон. В выпадающем меню выберите шаблон страницы. Каждому типу страницы присваивается свой шаблон. Например, если мы размещаем статью в разделе Статьи, то шаблон может быть таким «Новости/Статьи«.
Псевдоним. Если поле URL оставить пустым, то адрес страницы будет сформирован автоматически на основании заголовка страницы. Если необходимо указать определенный URL, отличный от заголовка, то введите в данном поле необходимый псевдоним. Например, etiketki-alkogol (т.е. на сайте адрес страницы в результате будет выглядеть следующим образом: http://someone’ssite.ru/produkciya/etiketki-alkogol/). Путь к странице с учётом папок устанавливается автоматически.
Примечание. Псевдоним страницы прописывается латинскими буквами, без пробелов (если необходимо указать несколько слов, разделять псевдоним необходимо либо через «-» (дефис), либо «_» (нижнее подчеркивание), например: pechat-etiketok), с маленькой буквы.

Поставьте флажок напротив пункта » Опубликован «. Это действие опубликует вашу страницу на сайте. Если флашок убрать, то страница будет скрыта.
