Jump to main content Jump to doc navigation

Как добавить Fancybox-изображения с отдельными плейсхолдерами в richtext-контент

Требования

Сначала установите дополнения, которые понадобятся в этой настройке:

  • MIGX: создание и заполнение блоков в бэкенде MODX и вывод на фронтенде.
  • TinyMCE: richtext-редактор для текстового контента.
  • phpThumbOf: изменение размера изображений под колонки.

Также скачайте fancybox и загрузите подпапку /fancybox/ пакета в установку MODX в /assets/fancybox/.

Шаблон

Для этого урока создайте новый шаблон с именем fancybox.

<html>
    <head>
        <title>[[++site_name]] - [[*pagetitle]]</title>
        <base href="[[++site_url]]" />
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
        <script type="text/javascript" src="[[++base_url]]assets/js/fancybox/jquery.fancybox-1.3.4.pack.js"></script>
        <script type="text/javascript" src="[[++base_url]]assets/js/fancybox/jquery.easing-1.4.pack.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                $("a.fancyimg").fancybox({
             'transitionIn' : 'elastic',
             'transitionOut' : 'elastic',
             'speedIn' : 600,
                    'speedOut' : 200,
                    'overlayShow' : false
                });

            });
        </script>
        <link rel="stylesheet" href="[[++base_url]]assets/js/fancybox/jquery.fancybox-1.3.4.css" type="text/css" media="screen" />
    </head>
    <body>
        <div>
            [[getImageList? &tpl=`fancybox`&tvname=`fancyboxTv`&toSeparatePlaceholders=`img`]]
            <div id="content">[[*content]]</div>
            <div id="footer">[^q^] queries, querytime [^qt^], phptime [^p^], totaltime [^t^], source [^s^]</div>
        </div>
    </body>
</html>

Input-TV

Нужны input-TV, которые вы используете в формах бэкенда позже.

name input-type default-value purpose
imageTV image выбор изображений через файловый менеджер
placeholderTV hidden img префикс плейсхолдера для корректного рендера плейсхолдера в сетке

Не давайте этим TV доступ к шаблонам. Они нужны только как типы ввода для форм.

MIGX TV

Создайте MIGX TV. Создайте новую TV.

Общая информация

Name

fancyboxTv

Параметры ввода

Input-type

migx

Form Tabs
[{
  "caption": "Image",
  "fields": [{
      "field": "placeholder",
      "caption": "Placeholder",
      "inputTV": "placeholderTV"
    },
    {
      "field": "title",
      "caption": "Title",
      "description": "Title for the image."
    },
    {
      "field": "image",
      "caption": "Image",
      "inputTV": "imageTV"
    }

  ]
}]
Grid Columns
[{
    "header": "Placeholder",
    "width": "10",
    "sortable": "true",
    "dataIndex": "placeholder",
    "renderer": "this.renderPlaceholder"
  },
  {
    "header": "Title",
    "width": "160",
    "sortable": "true",
    "dataIndex": "title"
  },
  {
    "header": "Image",
    "width": "50",
    "sortable": "false",
    "dataIndex": "image",
    "renderer": "this.renderImage"
  }
]
Template Access

шаблон fancybox

Чанк

Последний шаг: чанк для fancybox-изображений.

Name

fancybox

Chunk Code
<a href="[[+image]]" class="fancyimg">
    <img src="[[+image:phpthumbof=`w=100&h=75&zc=1`]]" alt=""/>
</a>

Добавление Fancybox-изображений с отдельными плейсхолдерами в richtext-контент

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

Создайте новый ресурс. Выберите шаблон fancybox. Перейдите на вкладку «Дополнительные поля (TV)».

В fancyboxTV нажмите «Add Item». Заполните поля Image и Title.

Добавьте столько изображений, сколько нужно в контент.

Напишите текст в richtext-поле и вставьте плейсхолдеры вроде [[+img.0]], [[+img.1]], [[+img.2]].

На фронтенде в тексте появятся миниатюры там, где вы вставили плейсхолдеры.

Щёлкните по ним, чтобы открыть fancybox с большими изображениями.

Не забудьте сохранить ресурс, когда закончите добавление или правку изображений в MIGX.

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • deJaya
  • JT Skaggs
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$204 per month—let's make that $500!

Learn more