[siteExtra] Версия 1.4.0 — шаблонизация Fenom

В новой версии сборки siteExtra шаблон и все чанки переписаны на Fenom.


При установке дополнения системная настройка pdotools_fenom_parser будет включена, чтобы Fenom был доступен в шаблоне и на страницах.

Благодаря Fenom настройка форм обратной связи на сайте удалось несколько облегчить. Чанк contact_form теперь может кастомизироваться за счёт параметров. Вы можете делать на его основе несколько совершенно разных форм:

  • form — чанк с HTML-разметкой формы
  • tpl — чанк с текстом письма
  • subject — тема письма
  • validate — валидация полей
  • success — HTML-разметка сообщения об успешной отправке формы
  • error — текст ошибки отправки формы

Например, чтобы сделать форму для заказа обратного звонка, можно вызвать чанк contact_form с такими параметрами:

{$_modx->getChunk('contact_form', [
  'form' => 'form.callback',
  'subject' => 'Заказ обратного звонка',
  'validate' => 'phone:required'
])}

В остальные параметры будут значения по умолчанию.

В чанке gallery можно найти пример обработки значения MIGX-ТВ на Fenom (без использования сниппета getImageList).
Илья Уткин
17 июня 2017, 13:08
modx.pro
4
7 499
+18

Комментарии: 52

Дмитрий Суворов
17 июня 2017, 17:48
+2
Круто!
Кстати, ссылка на siteExtra уже не актуальна, верный url: modstore.pro/packages/sites-themes/siteextra
    Илья Уткин
    17 июня 2017, 17:52
    +1
    Поправил. Странно, откуда я такую ссылку взял =))
      man
      man
      18 июня 2017, 11:35
      0
      Добрый день Илья!
      А стоит ожидать версию с фалами?
      P.S. Иногда твой пак очень помогает, спасибо)
        Александр
        19 июня 2017, 16:13
        0
        Илья, спасибо большое
      Валентина Павлова
      30 июня 2017, 01:51
      0
      Спасибо за обновление сборки! Но по умолчанию параметр pdotools_fenom_parser был отключен…
        Иван Чуваев
        10 июля 2017, 11:18
        0
        Спасибо за сборку!
        Возможно это не относится конкретно к этой сборке, но экспериментальным путем было выявлено, что на PHP 5,6 тормозит, на PHP 7 и выше все хорошо, все «летает».
        Никита Серов
        18 июля 2017, 15:11
        0
        Илья, возможно глупый вопрос, однако не могу разобраться. В дереве ресурсов есть пункт, допустим «О компании». Как я могу изменить его название? При редактировании нигде нет такой надписи, как «О компании»?
        Кажется у меня опять что-то не так установилось(( Несколько компонентов не установились, как и в прошлый раз, на старой версии.
          Илья Уткин
          18 июля 2017, 15:24
          +1
          «О компании» — это «пункт меню». Поле находится в правой части:



          Насколько я помню, были какие-то проблемы при попытке установить MIGX. Попробуй сначала устанавливать MIGX, а потом siteExtra. Если при установке что-то зависло, можно обновить и попробовать установить siteExtra ещё раз — ничего дублироваться не будет, просто всё доустанавливается.
            Никита Серов
            18 июля 2017, 15:26
            0
            О, точно! Увидел! Спасибо. Да, установил все компоненты и сделал переустановку siteExtra и все работает!
          Никита Серов
          20 июля 2017, 16:14
          0
          Вот еще вопрос, а почему сайт перестает работать, если подключить к нему vkAPI?
          А именно блок комментариев?
          vk.com/dev/Comments

          Страница перестает выводиться, как-будто не формируется, однако блок комментариев загружается…
            Илья Уткин
            21 июля 2017, 09:06
            +1
            В коде виджета комментариев поставь пробелы перед и после всех фигурных скобок
            ...
            VK.init( { apiId: 000000000, onlyWidgets: true } ); // Здесь
            ...
            VK.Widgets.Comments("vk_comments", { limit: 10, attach: "*" } ); // и здесь
            ...
              Никита Серов
              21 июля 2017, 09:23
              0
              Спасибо большое! Получилось. Вот я так и знал, что решение очень простое.
            Miša Bulic
            25 июля 2017, 10:54
            0
            Сборка интересная, только я вот феном никогда не использовал. Полгода не заходил сюда и после установки сборки вообще ничего не понимаю, как там всё сделано, где квадратные скобки? =) Как этим вообще пользоваться? Где почитать документацию?
            Никита Серов
            04 августа 2017, 09:19
            0
            Вот простите, но опять вопрос. Может у меня что-то криво установилось, но не могу понять почему с формы контактов не приходят сообщения. Адрес электронной почты указал везде и в системных настройках и контактах. Может где-то не там смотрю… Помогите разобраться.
              Илья Уткин
              04 августа 2017, 09:43
              +1
              FormIt без AjaxForm письма нормально отправляет? QuickEmail ошибку не показывает?

              siteExtra — это не готовый сайт, а просто помощник программиста. Без усилий сайт не сделать, за это программисту и платят.
                Никита Серов
                04 августа 2017, 09:46
                0
                Да я понимаю, ошибку вроде не показывает. Раньше я по другому делал, там указывался адрес куда отправлять письма, тут не могу понять. Буду разбираться.
              Ivanov Denis
              21 августа 2017, 16:24
              0
              Приветствую. Спасибо за сборку. Сделали один сайт с его помощью. Реально упрощает. Но локально не получается. Как решить проблему с дружественными урл на XAMPP, установленный в Mac OS?
                Илья Уткин
                22 августа 2017, 13:17
                0
                Понятия не имею… Я работаю на Ubuntu. А как вы решали эту проблему раньше, когда сборку не использовали?
                  Ivanov Denis
                  22 августа 2017, 13:25
                  0
                  Пока кроме запуска Винды на виртуальной машине ничего не помогает. Если найдется решение, кричите.
                Андрей
                01 сентября 2017, 08:47
                0
                Илья, подскажите, как сделать свои поля по примеру того, как вы сделали на странице контактов? То есть не на вкладке Дополнительные поля, я прямо на основной вкладке.
                Дмитрий
                Дмитрий
                11 октября 2017, 13:09
                0
                Огромная Благодарность за Вашу сборку! Для новичка это — настоящая «палочка-выручалочка»
                  DeHuCkA
                  27 ноября 2017, 22:56
                  0
                  Илья, здравствуйте!
                  Сборка отличная, но Fenom не хочется учить, возможно ли его отключить?
                    Илья Уткин
                    28 ноября 2017, 08:27
                    0
                    Отключить можно, но все чанки надо будет переписать тогда на обычный синтаксис парсера MODX.
                      DeHuCkA
                      07 декабря 2017, 22:47
                      0
                      Илья, я правильно понимаю, что установка на рабочий сайт не рекомендуется? Например я уже внес изменения в чанки, они перепишутся?

                      Еще заметил глюк, при переносе с хостинга на хостинг (в рамках одного хостинга) и смены адреса core в отчете об ошибках сыпется следующие

                      [2017-12-07 22:40:18] (ERROR @ xxx/core/model/modx/transport/modtransportpackage.class.php : 672) Could not retrieve from fastuploadtv-1.0.0-pl.transport.zip?revolution_version=Revolution-2.6.0-pl
                      [2017-12-07 22:40:18] (ERROR @ xxx/core/model/modx/transport/modtransportpackage.class.php : 435) MODX could not download the file. You must enable allow_url_fopen, cURL or fsockopen to use remote transport packaging.
                      [2017-12-07 22:40:21] (ERROR @ xxx/core/model/modx/transport/modtransportpackage.class.php : 207) Невозможно осуществить передачу пакета versionx-2.1.3-pl.transport.zip в /home/o/oshinberg/stombest.ru/core/packages/.
                      И так по каждому дополнению которое вшито в сборку, происходит это из за обновления списков установленных дополнений. Если удалить дополнение и поставить заново из репозитария, то ошибка пропадает. Может есть комплексное решение этой болячки?
                        DeHuCkA
                        07 декабря 2017, 22:48
                        0
                        Все на что ругается MODx включено, пробовал поменять с https на http.
                    DeHuCkA
                    07 декабря 2017, 23:01
                    0
                    И еще один глюк, иногда (я не понял логики), при обращении к страницам сайта (те страницы которые были в сборке) страница открывается, но использует не свой шаблон. Выглядит это как редерект, я даже создал отдельный пост на эту тему. Но в адресной строке стоит правильный урл, а вот шаблон похоже что нет.

                    Ошибок ни в modx не в серверном файле нет
                      Александр Янк
                      04 января 2018, 13:07
                      0
                      Баг репорт:

                      В чанке form.contact_form указан неправильный тип инпут полю type=«phone» такого в синтаксисе нет, есть type=«tel»
                      <input type="phone" id="af_phone" name="phone" value="" placeholder="" class="form-control" />
                      .
                      Вот так правильно:
                      <input type="tel" id="af_phone" name="phone" value="" placeholder="" class="form-control" >
                      Кстати, обратные слеши тоже не нужны!

                      Личный вопрос от меня:
                      В чанке tpl.contact_form есть такой код {$message | nl2br}, что означает nl2br?

                      joxi.ru/nAyXp7jHXdJ5d2
                        Илья Уткин
                        04 января 2018, 13:13
                        +1
                        Да, надо будет поправить)

                        nl2br — New line to br — переносы строк превращаются в тег <br>
                        Александр Янк
                        04 января 2018, 13:40
                        0
                        Еще два бага:

                        В чанке form.contact_form пустой action="" на него ругается валидатор:

                        <form action="" method="post" class="ajax_form form-horizontal well" style="max-width: 530px;">
                        раньше я так заполнял action="[[~[[*id]]]]" а вот как сейчас, на феноме, надо в документации порыться.

                        — В тебе письма приходит «Сообщение с сайта http://*****.ru/» раньше это решалось такой строкой

                        &emailSubject=`Письмо с сайта [[++site_url:replace=`http://== `:replace=`https://== `:replace=`/== `]]`
                        согласись, не очень красиво joxi.ru/82Q7jyzs1an7Dr
                          Илья Уткин
                          04 января 2018, 13:44
                          1
                          +2
                          Можно использовать [[++http_host]] — тогда не надо ничего реплейсить)
                          Александр Янк
                          12 января 2018, 10:30
                          0
                          Илья, если не сложно поясни действия этого кода:
                          {var $defaul = true}
                          {switch $_modx->resource.id}
                              {case 4}
                                  {var $defaul = false}
                                  {include 'specialists'}
                          {/switch}
                          {switch $_modx->resource.parent}
                              {case 4}
                                  {var $defaul = false}
                                  {include 'content_specialist'}
                          {/switch}
                          {if $defaul}
                              {include 'content_default'}
                          {/if}
                          В целом я вижу условия, я их понимаю, но не понимаю, что означает
                          {var $defaul = false}
                            Илья Уткин
                            12 января 2018, 13:09
                            +1
                            Это нужно, чтобы не выводить дефолтный чанк на страницах, у которых контент имеет другой вид. Если бы условие было одно (например, проверка только по id), то такая конструкция не понадобилась бы:

                            {switch $_modx->resource.id}
                                {case 4}
                                    {include 'specialists'}
                                {case default}
                                    {include 'content_default'}
                            {/switch}

                            Но тут мы проверяем id, потом проверяем parent и нам надо как-то понять, что ни одно из условий не выполнилось. Для этого используется так называемый «флаг» — переменная $default. Если условие выполнено, я флаг выключаю (ставлю false) — тогда дефолтный чанк не будет выведен.
                              Алексей
                              12 января 2018, 13:09
                              +1
                              Если сработает условие по modx->resource.id и/или modx->resource.parent то блок
                              {if $defaul}
                                  {include 'content_default'}
                              {/if}
                              не сработает т.к. переменная default будет иметь булевое значение false.

                              Из доки по php:
                              Если выражение принимает значение TRUE, PHP выполнит инструкцию, а если оно принимает значение FALSE — проигнорирует.
                              p.s. Одновременно ответили :-)
                              Miša Bulic
                              19 января 2018, 17:26
                              0
                              Вышел релиз Bootstrap 4, Не хотите переделать шаблон под него?
                              И по умолчанию можно убрать расширение у html документов?
                              Дмитрий
                              27 января 2018, 15:56
                              0
                              Я только одного не понял, зачем было все всовывать в один шаблон, а потом с такими костылями решать кучу проблем. И по большому счету, куча ошибок, замысловатых логических вычислений и полностью вывернутая на изнанку идея MODx о шаблонах ресурсов и группировании документов по общему признаку (шаблону).

                              А как по вашему начинающему разработчику (ведь именно для них сделана эта сборка) понимать эту идеологию, если вы уводите его в сторону от традиционного подхода? Они еще не понимают и не читают «традиционный язык MODx» и не понимают взаимосвязей, а вы им Fenom для развлечения – «Благодаря Fenom настройка форм обратной связи на сайте удалось несколько облегчить». Не велика ли плата за это?

                              Я понимаю, что вам нравится Fenom и все замысловатые решения перекликаются с другими Дополнениями, но такой подход мне кажется не оправданным для такого простого сайта.
                              Для сайта-визитки всего этого не нужно, задача решается простыми «стандартными» решениями, без необходимости наворачивать такой огород.
                              Здравым объяснением такому подходу может быть только одно – забота об админе, чтобы тот не «заблудился» в 2-5 шаблонах.

                              А может я Вас не понял. Если можно, ответьте только на один вопрос, зачем вы «Все» поместили в один шаблон? Ответ: «- Второй мне не понадобился», не катит :)

                              Благодарю Вас за интересный опыт и возможность почитать ваш код.
                                Владимир
                                27 января 2018, 20:35
                                +1
                                Если я правильно помню, идея была в том, что бы создать свои сборки для своих нужд. Т.е. это как раз не в продакшн, а к осмыслению и переделыванию под себя.
                                Олег
                                18 мая 2018, 19:11
                                0
                                Перестал устанавливаться пакет. Уже на втором сайте подряд (ставил в обоих случаях ни чистую 2.6.2).
                                Страницы создает, а пакеты не устанавливает
                                Список ошибок во время установки к сожалению не сохранил.
                                Хостинг — timeweb и reg.ru
                                пробовал php 5.6,7.1,7.2

                                После установки пакетов вручную попробовал переустановить siteExtra и получил такие ошибки:
                                /*
                                * MODX Console Output
                                *
                                * @date 2018-05-18 19:02:42
                                */
                                Пробуем установить пакет с подписью: siteextra-1.4.6-rc

                                Пакет найден… сейчас идёт подготовка к его установке.

                                Загрузка рабочего пространства пакета…

                                Рабочее пространство загружено, сейчас устанавливаем пакет…

                                Skipping vehicle object of class modChunk (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => head
                                )

                                Skipping vehicle object of class modChunk (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => menu
                                )

                                Skipping vehicle object of class modChunk (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => child_list
                                )

                                Skipping vehicle object of class modChunk (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => header
                                )

                                Skipping vehicle object of class modChunk (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => content
                                )

                                Skipping vehicle object of class modChunk (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => content_default
                                )

                                Skipping vehicle object of class modChunk (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => content_specialist
                                )

                                Skipping vehicle object of class modChunk (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => aside
                                )

                                Skipping vehicle object of class modChunk (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => footer
                                )

                                Skipping vehicle object of class modChunk (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => contact_form
                                )

                                Skipping vehicle object of class modChunk (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => form.contact_form
                                )

                                Skipping vehicle object of class modChunk (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => tpl.contact_form
                                )

                                Skipping vehicle object of class modChunk (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => specialists
                                )

                                Skipping vehicle object of class modChunk (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => gallery
                                )

                                Skipping vehicle object of class modChunk (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => block.gallery
                                )

                                Skipping vehicle object of class modChunk (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => scripts
                                )

                                Skipping vehicle object of class modSnippet (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => clearPhone
                                )

                                Skipping vehicle object of class modSnippet (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => rtrim
                                )

                                Skipping vehicle object of class modPlugin (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => addManagerCss
                                )

                                Skipping vehicle object of class modPluginEvent (data object exists and cannot be upgraded); criteria: Array
                                (
                                [pluginid] => 1
                                [event] => OnManagerPageInit
                                )

                                Skipping vehicle object of class modPlugin (data object exists and cannot be upgraded); criteria: Array
                                (
                                [name] => siteRedirect
                                )

                                Skipping vehicle object of class modPluginEvent (data object exists and cannot be upgraded); criteria: Array
                                (
                                [pluginid] => 2
                                [event] => OnHandleRequest
                                )

                                Skipping vehicle object of class modTemplate (data object exists and cannot be upgraded); criteria: Array
                                (
                                [templatename] => siteExtra
                                )

                                Attempting to preserve files at /путь/assets/components/siteextra into archive /путь/core/packages/siteextra-1.4.6-rc/modCategory/c983a246ddd203de34c0f0615d86f21e.0.preserved.zip

                                Attempting to preserve files at /путь/core/components/siteextra into archive /путь/core/packages/siteextra-1.4.6-rc/modCategory/c983a246ddd203de34c0f0615d86f21e.1.preserved.zip

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                PHP notice: Undefined index: install_addons

                                PHP warning: in_array() expects parameter 2 to be array, null given

                                Успешно установлен пакет siteextra-1.4.6-rc

                                /* EOF */
                                  Андрей
                                  18 мая 2018, 23:01
                                  +1
                                  Обнови движок до 2.6.3, там исправлено.

                                  MODX Revolution 2.6.3-pl (April, 19, 2018)
                                  ====================================
                                  — Fix installation of transport packages with setup options [#13861]
                                    Олег
                                    26 мая 2018, 20:13
                                    0
                                    Спасибо за ответ.
                                    Обновил, но все равно полно ошибок во время установки и опять установились только ресурсы и шаблоны/чанки.
                                  Александр Янк
                                  25 июня 2018, 11:35
                                  0
                                  Илья, к тебе вопрос. Галерея выводится на внутренней странице, а что если я хочу вывести 6 послдених фоток на какую нибудь другую страницу, например на главную.

                                  Вот мой вопрос тут modx.pro/help/15735/ развернуто, прошу внеси ясность.
                                    Илья Уткин
                                    25 июня 2018, 12:00
                                    +1
                                    В сборке есть чанк block_gallery. Его можно вызвать на любой странице и будет выведена галерея.
                                  Евгений Ка
                                  07 марта 2019, 17:51
                                  0
                                  Вопрос про версию 1.5.0.

                                  Установил с нуля.
                                  Написано, что контактные данные перенесены в ClientConfig

                                  Однако там есть только 5 параметров
                                  admin_groups
                                  clear_cache
                                  context_aware
                                  google_fonts_api_key
                                  vertical_tabs

                                  Может я не там ищу или это всё-таки глюк?
                                  Благодарю.
                                    Илья Уткин
                                    07 марта 2019, 19:27
                                    0
                                    В админке в верхнем меню должен появиться пункт «Контакты» (это где содержимое, медиа, пакеты и пр.)
                                    Максим
                                    19 июня 2020, 10:12
                                    0
                                    А кто-нибудь делал резолвер для кастомизации главного меню в админке, чтобы не руками каждый раз пункты добавлять/переносить? Или может знает куда копать или найти похожее что-то?
                                    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                    52