Документация pdoresources: Документация по MODX pdoResources и примеры вывода ресурсов.

Примеры использования | Документация | Зона разработки

Во всех примерах используется библиотека pdoTools, которая, по моему скромному мнению, является обязательным дополнением.

1. Вывод списка ресурсов с сортировкой по количеству просмотров


[[!pdoResources?
    &tpl=`article.tpl`
    &loadModels=`sitestatistics`
    &leftJoin=`{
        "Statistics": {
            "class": "PageStatistics",
            "on": "modResource.id = Statistics.rid"
        }
    }`
    &select=`{
        "modResource": "*",
        "Statistics": "IFNULL(SUM(views),0) as views, COUNT(DISTINCT user_key) as users"
    }`
    &groupby=`modResource.id`
    &sortby=`views` // `users` для сортировки по посещениям
]] 

Соответственно в чанке можно использовать плейсхолдеры [[+views]] и [[+users]]. Выглядеть это будет приблизительно так

2.

Тоже самое, только для mFilter


[[!mFilter2?
    &class=`msProduct`
    &element=`msProducts`
    &loadModels=`sitestatistics`
    &leftJoin=`{
        "Statistics":{"class":"PageStatistics","on":"msProduct.id=Statistics.rid"}
    }`
    &select=`{
        "msProduct": "*",
        "Statistics": "IFNULL(SUM(views),0) as views, COUNT(DISTINCT user_key) as users"
    }`
    &groupby=`msProduct.id`
    &sortby=`views`
]] 

3. Пример вывода ресурсов, у которых referer содержит строку «google.ru», т.е. на которые заходили с гугла.


[[!pdoResources?
    &parents=`0`
    &tpl=`@INLINE <p>Заголовок "[[+pagetitle]]". Создан {{+createdon:date=`%d.%m.%Y`}}</p>`
    &loadModels=`sitestatistics`
    &where=`["modResource.id IN (SELECT DISTINCT Statistics.rid FROM `modx_stat_page_statistics` AS `Statistics` INNER JOIN `modx_stat_online_users` `StatUser` ON StatUser.
user_key = Statistics.user_key and StatUser.referer LIKE '%google.ru%')"]` ]]

4. Пример вывода недавно просмотренных страниц текущего пользователя.


[[!pdoResources?
    &parents=`0`
    &tpl=`@INLINE <p>[[+pagetitle]].</p>`
    &loadModels=`sitestatistics`
    &innerJoin=`{
        "Statistics":{"class":"PageStatistics","on":"modResource.id=Statistics.rid"}
    }`
    &select=`DISTINCT modResource.pagetitle`
    &where=`{"Statistics.user_key": "[[+sitestatistics.userKey]]"}`
    &sortby=`Statistics.date`
    &limit=`5`
]]

Можно ограничить периодом. Для этого нужно немного изменить условие


//1. Просмотренные пользователем ресурсы за текущий день
&where=`["Statistics.user_key = '[[+sitestatistics.userKey]]' AND Statistics.date = CURDATE()"]`
//2. Просмотренные пользователем ресурсы за конкретный день
&where=`["Statistics.
user_key = '[[+sitestatistics.userKey]]' AND Statistics.date = '2016-03-05'"]` //3. Просмотренные пользователем ресурсы за январь &where=`["Statistics.user_key = '[[+sitestatistics.userKey]]' AND Statistics.month = '2016-01'"]` //4. Просмотренные пользователем ресурсы за год &where=`["Statistics.user_key = '[[+sitestatistics.userKey]]' AND Statistics.year = 2016"]` //5. Просмотренные пользователем ресурсы за период &where=`["Statistics.user_key = '[[+sitestatistics.userKey]]' AND Statistics.date BETWEEN '2016-01-01' and '2016-03-31' "]` //6. Просмотренные пользователем ресурсы за последние 7 дней &where=`["Statistics.user_key = '[[+sitestatistics.userKey]]' AND Statistics.date >= DATE_SUB(CURDATE(),INTERVAL 7 DAY)"]`

5. Вывод статистики по пользователям за указанный период


[[!pdoUsers?
    &tpl=`@INLINE <p>[[+username]] - [[+views]].</p>`
    &loadModels=`sitestatistics`
    &innerJoin=`{
        "UserStat":{"class":"UserStatistics","on":"modUser. id=UserStat.uid"},
        "PageStat":{"class":"PageStatistics","on":"UserStat.user_key=PageStat.user_key"}
    }`
    &select=`{
        "PageStat": "SUM(PageStat.views) as views"
    }`
    &groupby=`UserStat.uid`
    &where=`["PageStat.date BETWEEN '2016-01-01' and '2016-01-31'"]`
]]

Если нужно вывести статистику только для текущего пользователя, то указываем его в

where


&where=`["UserStat.uid = [[+modx.user.id]] AND PageStat.date BETWEEN '2016-01-01' and '2016-01-31'"]`

Modx revo слайдер на owl-carousel в два ряда

Вопрос задан

Изменён 3 года назад

Просмотрен 371 раз

Есть верстка слайдера такого вида:

<div>
        <a href="#"><img src="img/miele. png" alt=""></a>
        <a href="#"><img src="img/miele.png" alt=""></a>
        <a href="#"><img src="img/miele.png" alt=""></a>
        <a href="#"><img src="img/miele.png" alt=""></a>
        <a href="#"><img src="img/miele.png" alt=""></a>
        <a href="#"><img src="img/miele.png" alt=""></a>
    </div>

Вывожу:

[[pdoResources?
&tpl=`Brands-index`
&sortdir=`ASC`
&limit=`0`
&depth=`0`
&parents=`5`
&includeTVs=`Brand-image`]]

есть чанк Brands-index:

<a href="[[+uri]]"><img src="[[+tv.Brand-image]]" alt=""></a>

иTV Brand-image с изображением. Сейчас все выводится в одну строку, надо, что бы в две строки, то есть 3 картинки в одной строке и три в другой…если ссылок меньше, например 5, то три вверху, две внизу. Как это можно сделать?

1 3 5
2 4 6

  • modx
  • owl-carousel

2

Я так понимаю, что вопрос перекликается с этим: MODX Вывести 50% ресурсов родителя только там надо было вывести половину страниц, а вам надо половину в первой строке и оставшуюся часть во второй.

Поэтому приведу тот ответ здесь, немного изменив:

Вам надо сначала получить общее кол-во картинок, потом вывести первую половину, потом вторую:

[[!pdoResources?
&parents=`5`
&depth=`0`
&limit=`0`
&tpl=`@INLINE`
&setTotal=`1`
&toPlaceholder=`tempout`
]]

Тут важное: setTotal — это указать, что надо заполнить плейсхолдер [[+total]] с кол-вом ресурсов. &tpl — пустой, просто чтобы быстрее обработался, &toPlaceholder — чтобы вывод попал в плейсхолдер а не на экран.

От этого вызова мы получаем плейсхолдер [[+total]] с количеством картинок, дальше вызываем с Вашими шаблонами обертками и т.д., но устанавливаем лимит 50%:

[[!pdoResources?
&parents=`5`
&depth=`0`
&limit=`0`
 &tpl=`Brands-index`
&sortdir=`ASC`
&includeTVs=`Brand-image`
&limit=[[+total:div=`2`]]
]]

Дальше выводим вторую половину, используя оператор offset (смещение)

[[!pdoResources?
&parents=`5`
&depth=`0`
&limit=`0`
 &tpl=`Brands-index`
&sortdir=`ASC`
&includeTVs=`Brand-image`
&offset=[[+total:div=`2`]]
]]

Подробная документация о pdoResources: https://docs. modx.pro/komponentyi/pdotools/snippetyi/pdoresources

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Как отобразить дополнительные поля дочерних ресурсов Pdoresources Modx Revo

aramisnegron master Полная документация для Фреда: https://modxcms. github.io/fred/ Журнал изменений для текущей версии Фреда находится в разделе Создание и организация коллекций элементов как строительные блоки для страниц; Чертежи обеспечивают настройку содержимого с помощью различных элементов управления, включая дату ввода текста.

MoreGallery — это интуитивно понятная и мощная галерея изображений для MODX с видео. Убедитесь, что миниатюра самого высокого качества загружена из модального изображения Vimeo [#217]; Исправьте селектор массового изображения, у которого zindex выше, чем у модальной маски Обеспечьте поддержку дополнительных функций, таких как FileSluggy, которые очищают имена файлов при загрузке [#142].

. пользователи могут вводить текст и загружать изображения без знания HTML или CSS. Когда компания использует CMS для публикации своих страниц, она снижает свою зависимость от Optimizely; Друпал; Джумла; Мадженто; МодХ; Квадратное пространство; Викс; Уибли; WordPress Вам нужно будет начать с составления списка деловых проблем, которые у вас есть.

В этом файле показаны изменения последних выпусков MODX. с кнопкой установки после изменения текста [#13078] Исправить проверку порта сервера в сценарии запуска установки в диспетчере [#5556] Включить пул соединений с поддержкой главного/подчиненного устройства [#5499] cacheactionmap modAccessibleObject: рефакторинг объектов и загрузчик коллекций.

. эволюция MODX Эволюция! Внесите свой вклад в разработку Dmi3yy/modx.evo.custom, создав учетную запись на GitHub. В этом файле показаны изменения в последних выпусках Evolution CMS. Самый последний выпуск [GitHub: # 128e35b88] исправляет легкие поля входа в систему Nicola TV var наследование для нового подресурса MrSwed.

. Фреймворк. Внесите свой вклад в разработку modxcms/revolution, создав учетную запись на GitHub. революция/ядро/docs/changelog.txt. Перейти к файлу Перейти к файлу T Исправить недопустимое слияние, оставшееся в основной ветке из 2.1.0rc1 modAccessibleObject: переработана логика загрузчика объектов и коллекций для повышения частоты попаданий в кэш.

Я также уже установил значение конфигурации отладки в Revolution на EALL. PS: Вы также можете задавать мне сложные вопросы или давать советы, где искать. Как я уже упоминал в Stack Overflow, я не могу воспроизвести это. С недавним объявлением Google для Reader я беспокоюсь, что они могут это сделать.

Я занимаюсь созданием сайтов с помощью ModX Revolution около 4 месяцев, но я слышал много хорошего о Craft. Вопросы должны быть вручную преобразованы в вики сообщества, если они не подходят или Обновление: Up and Running with Craft. Последняя версия Mijingo Learning Craft — The Overflow Blog.

Manual Этот документ Руководство по параметрам синтезатора и список данных. В то время как Описывает, как настроить ваш MODX6/MODX7/MODX8 и как выполнять основные операции. подробности относительно действия ручек 12 см. в разделе «Быстрое редактирование» на стр. 37. Когда значения настроек отображаются на нескольких страницах, вы.

Управление содержимым MODX modxcms Dallas TX http://modx. com/ Дополнение для MODX Revolution, которое обеспечивает управляемые и ограниченные коллекции ресурсов, поэтому его можно использовать для определения направления текста. Обновите locutus.codeworkspace

  • changelog.txt js/css сжатие в менеджере [#5556] Включить пул соединений с выходными фильтрами и поплавками с поддержкой master/slave [#4205] Убедитесь, что старый провайдер modxcms.com удален после изменения в modAccessibleObject: рефакторинг объектов и логика загрузчика коллекций для улучшения показателей попаданий в кэш.

    В этом руководстве мы собираемся установить CMS MODX Revolution 2.6.0 Теперь используйте команду su, чтобы переключиться на нового пользователя sudo user1 Чтобы избежать проблем с правами доступа к файлам с MODX Revolution позже Vultr Twitter Vultr Facebook Vultr Instagram Vultr LinkedIn Vultr GitHub Переполнение стека Vultr.

    Стек Bitnami MODX для облачного хостинга Bitnami Найдите инструкции по установке определенных модулей PHP. sudo aptget update sudo aptget install buildessential libtool autoconf unzip wget aptkey add curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list ПРИМЕЧАНИЕ. Y и Z являются заполнителями.

    1 2 В этом файле показаны изменения последних выпусков MODX. Исправить недопустимое слияние, сохранившееся в основной ветке из 2.1.0rc1 1904 Исправление [#4205] Убедиться, что старый провайдер modxcms.com удален после изменения в modAccessibleObject: переработана логика загрузчика объектов и коллекций для повышения частоты попаданий в кэш.

    MODX Revolution — быстрое, гибкое, масштабируемое приложение с открытым исходным кодом. Теперь используйте команду su, чтобы переключиться на новую учетную запись пользователя sudo user1. Просто ответьте Y на все остальные вопросы «да/нет» по умолчанию Vultr Twitter Vultr Facebook Vultr Instagram Vultr LinkedIn Vultr GitHub Vultr Stack Overflow.

    MODx CMS с годами набирает популярность, и в 1994 году я переехал в Даллас, штат Техас, где поступил в колледж, чтобы получить степень в области бизнеса в SMU. Revo сохранила те же парадигмы из MODX Evolution, но выполнила их. Ответы даже на самые простые вопросы — это невероятный способ.

    Зак Уоллес изучает MODX CMS, как она работает, как ею пользоваться и почему В 2009 году MODX был выпущен как Evolution и Revolution. Кстати, форумы построены на самом MODX с использованием свободно доступных дополнений, и вы можете найти людей, которые всегда готовы ответить на быстрые вопросы и проблемы.

    С момента публикации первой части Stack Overflow опубликовал хороший отчет о производительности Вопросы, скрытые из-за настроек игнорируемых тегов vuforia layar metaio rolify rubyonrails4 logentries favicon modxrevolution codefluent coreos var expandTags new HashSet; foreach var wildcard in.

    В моей статье «Руководство по кэшированию для MODX Revolution» @MadeMyDay Марк Хинз задал очень хороший вопрос о том, как определить, что является хорошим вопросом, и я не хочу оставлять его без ответа. однако ответ Теперь мы видим, что у нас есть кешированный тег TV с некэшированными фрагментами.

    Чтобы использовать это, вы должны обслуживать веб-страницы # через Apache с modrewrite. Вы можете сделать свои URL-адреса нечувствительными к регистру, добавив NC без восклицательного знака, чтобы повысить скорость загрузки страниц: RewriteCond %{THEREQUEST} [AZ]{39}\ /показатель\. Список действий Действия и меню.

    MODX Упрощенный импорт/экспорт с помощью importX и pdoResources Добавьте любые TV, которые вам также нужны, или другие поля, которые вы хотите, такие как editedon или Сначала перед выполнением большого запуска выполните небольшой тест, чтобы убедиться, что он работает нормально, затем выполните всю партию за вычетом тестовых данных. .

    Дополнение для MODX Revolution, которое обеспечивает коллекции ресурсов, управляемые CollectionContainer Resources modxcms/Collections. Официальную документацию по коллекциям можно найти здесь: https://docs.modx.com/extras/revo/.

    Вы можете отобразить миниатюру Image+ в столбце сетки Коллекции, установив параметр Чтобы использовать это поле Image+MIGXField во внешнем интерфейсе, вызовите фрагмент кода ImagePlus, проанализированный с помощью фрагмента getResources/pdoResources, убедитесь, что вы добавили файл .

    Поле шаблона не указано в документе как доступные поля http://rtfm.modx.com/display/revolution20/FCResource Но когда я добавляю дополнительный FC для другого ресурса, чтобы установить шаблон его подресурсов, у меня также есть .

    Еще одно отличие состоит в том, что нашему фрагменту требуется фрагмент для вывода каждого из них и вмещает любые поля или TV, которые мы хотим отобразить в нашем списке. /en/components/pdotools/snippets/pdoresources &parents целое число необязательно.

    Коллекции — это дополнение MODX Revolution, добавляющее пользовательскую метку вкладки. Настройте текст метки для вкладки «Дочерние элементы». в элементе h3 со ссылкой для редактирования и кнопками для просмотра обновления удалить публикацию в виде сетки статей.

    Найдите лучшие ссылки для входа на страницу Modx Login Docs напрямую. 9 марта 2018 г. Теперь перезапустите службу sshd, чтобы вы могли войти в систему через ssh с новым. https://stackoverflow.com/questions/18752570/modxrevolutionusingcap.

    Я работаю над учебным веб-сайтом MODX и хочу поместить тег MODX HTML CSS Javascript внутрь На этот вопрос ответил BobRay. Смотрите, я нашел этот пост, я на MODX Revolution 2.3.5pl традиционный.

    Как отобразить дополнительные поля подресурса pdoResources MODX Revo? +1 голос Или куски элементовУроки еще одна задача pdoResources, которые будут отображать уроки, но создадут кучу вызовов базы данных и.

    Настройте страницу, чтобы добавить столбцы данных для полей, которые вы хотите использовать. См. советы по настройке. После редактирования значений полей нажмите Сохранить. Где я могу отобразить user.

    Коллекции — это тип настраиваемого ресурса CRC, который выступает в качестве контейнера для группы ресурсов, скрытых в дереве ресурсов. Или, по крайней мере, все так.

    Сниппет хорошо работает при вызове из pdoResources. Например, вот фрагмент:

    [[+pagetitle]]

    [[+introtext]]

    [[pdoCrumbs?

    . Вход в политику. Вот список всех статей блога сайта, отсортированных по дате. Убедитесь, что ваш блог статей MODX не создает угрозы безопасности вашего сайта.

    Показать одну коллекцию. Действие collectionsingle позволяет отобразить список коллекций, возможно, отфильтрованных по теме категории RS и конкретной коллекции.

    Фрагмент SiteAtoZ использует getResources для перечисления ресурсов в алфавитном порядке с заголовком от A до Z со ссылками на якоря в тексте. Каждый раздел предоставляет a.

    Создание быстрого списка страниц от А до Я в MODX. Недавно у нас возникла необходимость создать список большого количества ресурсов от А до Я на сайте MODX. Наш список.

    Начиная с коллекций простой пример. Начните с чтения документации http://rtfm.modx.com/extras/revo/collections. Если вы еще этого не сделали.

    Заполнители устанавливаются в коде и отображаются с тегами заполнителей. Переменные шаблона — это дополнительные поля содержимого ресурса, созданные пользователем. Они могут быть.

    Информация о древовидном блоге; Нужна помощь и руководство с вопросами о деревьях и расчистке земли? Посетите наш блог, чтобы узнать, как мы можем сотрудничать вместе.

    Объедините это с коллекциями и тегами, доступными на MODX.com, для больших каталогов с мощной фильтрацией. Отображение цены SKU информации о продукте.

    . вашего сайта. См. наш глоссарий MODX для терминологии, используемой в вашей панели управления. Все остальные поля/флажки следует оставить в покое. Вот список.

    Платформа управления контентом с открытым исходным кодом, основанная на PHP и MySQL. Modx предлагает дистрибутив корпоративного уровня, который также включает Apache SOLR. 0.

    resource>id;. } если !emptyreturnIds {.

    Статьи в блоге Боба РэяКраткий список руководств Боба. 04.11.2013. Обработка расширенных полей пользовательского профиля MODX в коде. 23 апр 2015. Плагин для лога.

    [pdoMenu] Возврат #283 и исправление документов для &tplCategoryFolder. [pdoResources] Более быстрая обработка дополнительных параметров фрагмента для заполнителей.

    Как отобразить дополнительные поля подресурса pdoResources MODX Revo? Возможно, вы правы. Она сделала это, но теперь ничего не отображается, что не так? @брэди.

    Нужен практический подход к изучению того, как освоить известный контент, группировать данные в коллекции и запустить наш самый первый сайт MODX.

    Добавление настраиваемых полей в формы менеджера, такие как Create Chunk Update if issetscriptProperties[‘resource’] { / на экране обновления, поэтому установите значение.

    Добавление дополнительных параметров в специальное место, чтобы мы могли поместить их в результаты. / @var modSnippet фрагмент /. дополнительный массив свойств Placeholders;.

    После установки modx Revo 2.2.2 в менеджере только меню без содержимого. Dev Tool в логотипе Stack Overflow Новый токен CSRF для каждого запроса или НЕТ?

    ClassExtender Extra для MODX Revolution. Автор: Боб Рэй Путеводители Боба. Документация: Документы ClassExtender. Ошибки и пожелания: Проблемы с ClassExtender.

    Фрагмент для отображения списка ресурсов. Это расширенная замена getResources: имеет все функции, но без недостатков. Знает, как.

    ruКак отобразить дополнительные поля подресурс pdoResources MODX Modx MODX Revolution ContentBlocks ModX Revo База данных: Связь между членами.

    На этой странице перечислены наиболее часто используемые теги MODX Revolution в качестве вспомогательных тегов или заполнителей, а иногда и переменные шаблона, о которых мы упоминаем.

    Коллекция Vintage Keyboard для Yamaha Montage/MODX включает семь электромеханических клавиатур 1960-х и 1970-х годов. Они включают:.

    Этот документ предназначен для того, чтобы помочь вам начать работу с общими проблемами/вопросами, связанными с MODX Revolution, либо ответив на него, либо указав на нужную информацию.

    Доступен ли такой инструмент выбора в редакторе TinyMCE в MODX Revolution? Я имею в виду, что я не против использования синтаксиса ресурса, но я не вижу своих пользователей.

    Что такое коллекции? Для непосвященных Collections — это дополнительная часть программного обеспечения, которая расширяет основные функциональные возможности MODX Revolution.

    Collections — это дополнение MODX Revolution, которое добавляет пользовательский класс ресурсов CollectionContainer со следующим поведением: Любой прямой дочерний элемент.

    Вы можете указать строку JSON с массивом из нескольких полей для этих свойств, которые дополнительно определяют, какие данные извлекать и как их отображать.

    мод. MODX, также известный как MODX Revolution, представляет собой CMS с открытым исходным кодом и платформу веб-приложений, написанную на PHP с использованием базы данных MySQL или MSSQL.

    Создание быстрого списка страниц от А до Я в MODX. Энн Торокио. Недавно у нас возникла необходимость создать список от А до Я из большого количества.

    Переменная шаблона TV является настраиваемым полем или, точнее, когда ресурс отображается в Интернете, теги TV заменяются на .

    Дом блога. Приемочные испытания XVIII Отдельные файлы среды. Автор: Боб Рэй | Теги: среды PhpUnit Codeception отдельные файлы.

    . полезная опция &showLog для ваших нужд из pdoTools дополнительно: https://docs.modx.pro/en/components/pdotools/snippets/pdoresources Для теста.

    Открытый в октябре 1993 года Майком Смитом, давним ветераном лондонской барной и ресторанной сцены, Jim Bob’s фактически уже начал свое существование.

    Мы просмотрели фрагмент SiteAtoZ, думая, что можем улучшить файл ://docs.modx.pro/en/components/pdotools/snippets/pdoresources.

    Имена переменных: независимо от вашего стиля кодирования. Если вы хотите использовать имена переменных в стиле camelCase, убедитесь, что все ваши переменные.

    Подробнее о коллекциях читайте в документации. Демо. Сайт MODX Cloud был развернут только с элементами, описанными здесь. Ты.

    Срочная разработка сайта MODx

    Когда мы обновляли демо-сайт нашей компании (игровая площадка для клиентов), мы поняли, что разработка сайта идет намного быстрее, когда контент и структура уже есть. Мы не просто экономили время, которое обычно тратили на настройку структуры. Очень важно иметь структуру на месте. В результате ваша команда разработчиков будет работать примерно в 20 раз быстрее, чем обычно.

    В этой статье мы рассмотрим несколько вещей, которые мы делали (неправильно) в прошлом, но которые мы не собираемся делать снова в будущем, особенно для больших или растущих сайтов.

    Разработка сайта MODx — восхитительная работа. По нескольким причинам:

    • «Есть несколько способов сделать это»
    • Нет ограничительного механизма шаблонов, говорящего вам, где что размещать
    • Нет уязвимых «популярных» плагинов, которые сводят вас с ума
    • Никаких попыток взлома пароля (после смены адреса менеджера)
    • Нет сценария, в котором вы должны сказать своему клиенту, что «это просто невозможно»

    Нам всем нравится свобода творчества в MODx. И, что более важно, нам нравится, как мы можем настраивать менеджер, переименовывать файлы, добавлять или удалять их, отключать их, иметь очень специфический уровень разрешений под нашим программным обеспечением, с которым мы можем работать, а с чем нет.

    Однако доведение сайта до рабочего уровня требует больших усилий. И мы хотели бы поделиться нашими достижениями за последние несколько лет со всеми, кто начинает с нуля, или, что более вероятно, с людьми, которые создали несколько сайтов и хотели бы улучшить свои навыки, не учась этому на собственном опыте.

    Предварительные требования

    Это статья с рекомендациями для разработчиков, знакомых со следующими частями программного обеспечения:

    • getResources
    • получить страницу
    • Навигатор
    • МИГКС
    • Коллекции

    Есть еще несколько вещей, о которых нам нужно знать. На самом деле речь идет не о знании этих конкретных пакетов, а об уровне вашего опыта разработки сайтов в целом.

    Что еще нужно знать о
    • Настройка разрешений
    • Настройка отдельного медиа-источника для ваших клиентов
    • Настройка менеджера/формы

    Зачем вам об этом знать? Мы обращаемся к тем из вас, кто планирует предоставить своим клиентам «идеальный» продукт, который трудно сломать и который легко поддерживать, даже если он поддерживает сложный веб-сайт.

    Делать вещи в правильном порядке

    Это самая важная часть, где мы чаще всего ошибались. Даже если это трудно сделать, попробуйте придерживаться следующего порядка:

    1. Соберите всю информацию, которую вы можете получить о сайте, который вы должны создать
    2. Создайте структуру на сайте, как она будет выглядеть, какой сайт вы хотите иметь, примеры страниц, образцы коллекций и т. д.
    3. Добавьте большинство переменных шаблона и выборочные фрагменты (да, большинство из них, вы пропустите хотя бы один 🙂 )

    После этого можно приступать к работе. Вы можете начать делать шаблоны. Вот как это сделать быстро и элегантно:

    1. Выберите шаблон с наибольшим количеством элементов (скорее всего, страница приветствия)
    2. Начните разбивать шаблон на повторно используемые фрагменты, которые вы можете использовать в других шаблонах (шапка, нижний колонтитул, новости, участники, welcomeSlider и т. д.)
    3. Получите этот  один шаблон и запустите его, собрав всю информацию из связанных ресурсов и т.  д.
    4. После этого скопируйте из этого шаблона и повторно используйте уже проделанную работу. Это намного быстрее, когда у вас уже есть все куски, которые можно использовать и извлекать из них.
    5. Когда все будет готово, вы можете приступить к настройке настроек менеджера, разрешений и всего остального. Это тоже работа, которую нужно сделать last , потому что вы можете дублировать свои наборы настройки, что также сэкономит вам много работы.

    Теперь ваши шаблоны должны выглядеть чистыми и простыми (как и ваши формы). К настоящему времени большая часть кода шаблона должна умещаться в одном окне. Если все еще есть какие-то огромные блоки HTML, подумайте, не являются ли они чем-то избыточным, принадлежащим chunl.

    Примечание: мы написали это, потому что выполнение действий в неправильном порядке оставит вам примерно в три раза больше работы, только настройки менеджера.

    Избегайте «дорогих» фрагментов

    Мы использовали getResources, WayFinder, getPage и некоторые другие почти на каждом сайте, который мы создавали в прошлом, что было хорошо для страниц среднего размера, но однажды у нас было несколько вызовов связанных данных на одна страница, все начало значительно замедляться.

    Кэширование базы данных, переключение на memcache, множество других улучшений, но все это, похоже, не имело значения. Но ждать! Было много реликвий разработки: почти половина наших вызовов сниппетов были некэшированными. Это сделало некоторое улучшение. Но все же страница грузилась около 2 секунд.

    Большинство из этих улучшений, которые действительно помогают, касаются мелочей. Избегайте некэшированных вызовов, а также правильно используйте парсер:

    Это может показаться не таким уж большим, но сэкономит вам половину времени рендеринга. Либо $chunk1, либо $chunk2 будут оставлены, заключенные в две дополнительные скобки, что заставит MODx обрабатывать только результат, а не рендерить каждый отдельный фрагмент.

    Если вы еще не делаете вышеперечисленное, возможно, вы все еще используете фрагмент «Если». Удалите его и используйте выходные фильтры. Если очень медленно.

    getResources, getPage, WayFinder

    …все они могут быть заменены пакетом под названием «pdoTools». Использование эквивалентов pdoTools для упомянутых выше сниппетов ускорит вашу страницу в среднем в 10 раз.

    Это делается для того, чтобы избежать ненужных вызовов. Таким образом, этот подход также имеет некоторые недостатки. Поскольку pdoTools использует xpdo напрямую вместо использования getCollection, это также означает, что он обходит безопасность MODx, поэтому разрешения и все, что в них нуждается (что не так на большинстве сайтов, потому что большинство сайтов не имеют большого количества логики или разных пользователей). -groups) необходимо активировать вручную. Однако есть флаг под названием &checkPermissions, чтобы включить их, если они вам понадобятся.

    Однако в большинстве случаев это не требуется, поэтому вы можете безопасно использовать pdoTools в качестве замены для ваших вызовов.

    Другие отличия:

    includeTVs : это не флаг 0 или 1 в pdoResources, а список конкретных TV, которые нужно захватить, что делает его более тонким и быстрым, чем getResources

    родителей : окончательно согласовано. pdoMenu не использует startId вместо родителей, а флаги tpl немного отличаются. Кроме того, это замена Wayfinder. Поскольку вы, скорее всего, рендерите меню на ВСЕ ваших страниц, включая нижний колонтитул и другие меню, изменение этого параметра сильно повлияет на производительность ваших сайтов.

    pdoPage также более удобен и больше не нуждается в этом неортодоксальном синтаксисе.

    Вместо того, чтобы читать это, вам, вероятно, следует прочитать документацию pdoTools и попробовать.

    pThumb, resizer, getCache, MinifyX, autoFixImageSize

    Существует также множество других фрагментов кода, которые заменяют «дорогие» фрагменты кода, которые увеличивают нагрузку на страницу и в большинстве случаев просто неправильно настроены (или отсутствуют). Многие люди забывают изменить размер фоновых изображений, изображений слайдера и общего контента, и, что более важно, сделать так, чтобы pthumb отображал их с качеством 85% и принудительно форматировал их в jpg, чтобы избежать bmp, tiffs и pngs для огромных изображений. Это значительно уменьшит размер вашей страницы. Просто прочитайте, что делают другие фрагменты.

    Общие улучшения

    На самом деле это не относится к улучшениям MODx, но это не меняет того факта, что эти факторы улучшают производительность — очень сильно.

    MinifyX не может объединить все Javascript и CSS, иногда это приводит к путанице. Но вы можете. После того, как сайт будет готов, вы можете использовать Google Closure Compiler, чтобы загрузить только ОДИН минимизированный файл javascript вместо загрузки множества отдельных файлов.

    Уменьшите размеры изображений, уменьшите размер файлов CSS и старайтесь придерживаться приведенных выше правил.

    Разработка сайта не должна занимать более двух дней, если не требуется разработка на заказ. Но соблюдение правильного порядка и выполнение задач с первого раза сэкономит вам много времени.

    Итог

    Избегайте getResources, избегайте WayFinder, замените phpThumbof на pthumb, настройте кэширование базы данных, замените большую часть используемого вами материала эквивалентом pdoTools и начните делать вещи в правильном порядке.

    Как сказал бы Монк:

    Вы поблагодарите меня позже.
    Приложение

    Для вашего личного развлечения, вот несколько вещей, где мы пошли не так:

    #1 После планирования сайта для нашего клиента мы приступили к разработке сайта, добавили в него много данных, настроили модные страницы для рекомендателей и членов команды, настроили персональные настройки менеджера для всех из них и представили им работу, которую мы уже выполнили, чтобы они могли увидеть, как легко поддерживать свою информацию.

    — Оказывается, текучесть кадров слишком высока, чтобы назвать кого-либо из команды, фотографий не существует, а рекомендации/портфолио не нужны, потому что они не хотят, чтобы кто-либо знал, кто их клиенты. Большинство из них являются конкурентами. Возможно, у нас была возможность сначала спланировать структуру сайта. Мы как-то пропустили.

    #2 Один и тот же клиент предоставляет нам много информации. Мы исходим из шаблонов, которые у нас уже есть, и начинаем исправлять вещи. Наряду с этим большинство настроек менеджера, потому что клиенты хотели начать поддерживать свои продукты, пока мы имеем дело с шаблонами.

    — каждые две недели мы добавляли одно поле, еще одно поле, дополнительную картинку и прикрепленный к ней PDF-файл. Затем файл PDF должен был быть изображением первой страницы PDF, и он должен был быть кликабельным. После этого необходимо подсчитать загрузки файла.

    Примерно через шесть недель клиенты спрашивают: «Возможно ли вообще вести список общей информации вместо того, что мы только что добавили». — в этот момент вы можете захотеть убить своего клиента. Но с другой стороны, это наша вина. Мы должны были сначала собрать всю эту информацию, и мы должны были сделать предложение о том, как сохранить и представить эту информацию.

    Часы, потраченные впустую на настройки менеджера, отсутствующие поля в настройках менеджера, отсутствие MIGX, неработающий MIGX, разные метки и т. д. и т. д. — всего этого можно было бы избежать, если бы мы просто сделали все в правильном порядке.

  • Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *