Программирование на Python и Objective-C в Mac OS

Программирование на Python и Objective-C под Mac OS и для iPhone / iPod Touch

Parents modx: Как получить родителя по id / Русскоязычное сообщество MODX

Содержание

Как получить parent parent’a или дедушку MODX revo

Тут возникла проблема: как получить парент парента (parent parent’a) или дедушку ресурса или прадедушку. Ну и разумеется решить эту задачу без всяких сниппетов. Оказалось это можно решить довольно просто. Первое это ставим PDOTools и вводим такой код:

 [ [#[ [#[ [*id]].parent]].parent]]

Это и есть наш дедушка. Точнее его id, ну а с ним то уж можно делать все что угодно.

Если нужно не id а поля там всякие есть еще один вариант:

[ [pdofield? &top=`2`]]

где &top Выбирает родителя указанного &id на уровне &top. Уровень отсчитывается от начала контекста. Ниже остальные параметры pdofield:








ПараметрПо умолчаниюОписание
&idТекущий документИдентификатор ресурса.
&fieldpagetitleПоле ресурса.
&top Выбирает родителя указанного &id на уровне &top.
&topLevel Выбирает родителя указанного &id на уровне &topLevel от корня контекста.
&default Указывает поле ресурса, которое вернётся, если &field окажется пуст. Более быстрый аналог фильтра :default=
&output Указывает строку, которая вернётся, если и &default, и &field оказались пусты.
&toPlaceholder Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.

Ну и еще один пример использования:

[ [pdoField? &id=`[ [*id]]` &field=`longtitle` &top=`2` ]]


Комментарии (2)

GoogleSheets / Импорт, Экспорт / Дополнения MODX / modstore.pro

Версия
1.6.5-pl

Дата выпуска
23.09.2021

Внимание, этот компонент требует версию PHP
5.6
или выше!
Если ваш сайт использует PHP ниже требуемого, установка этого
дополнения может его сломать.

Внимание, этот компонент требует версию MODX не ниже
2.6
!

Компонент для импорта и экспорта ресурсов, товаров minishop2, заказов, пользователей, а также migx таблиц.
Возможность менять данные на лету используя события. Более подробно о читайте в документации.

Интеграция

  • ms2Gallery2
  • msOptionsPrice2
  • msProductRemains
  • SEO Tab
  • SEO Pro

Документация:

Теги: import, export

  • Исправлено: ошибки
  • Исправлено:
    экспорт больших данных
    создание модификаций при импорте
  • Исправлено: ошибки
  • Исправлено: экспорт остатков
  • Улучшен импорт опций товара
  • Исправлена ошибка при импорте опций товара
  • Исправлена ошибка передачи пустого значения для изображения при импорте
  • Исправлен сниипет GoogleSheetsFront для крона
  • Добавлены параметры query и where в сниппет GoogleSheets
  • Исправлен импорт поля categories
  • Добавлена синхронизация по любому полю
  • Добавлено событие: gsOnAfterExportValues
  • Исправлено получение поля address_properties в плагине
  • Исправлено сообщение после экспорта
  • Добавление TV в экспорт категории
  • Исправлен экспорт изображений
  • Исправлена ошибка поиска в таблице
  • Добавлены события: gsOnAfterImportValues, gsOnAfterExportValues
  • Добавлено: копирование настроек
  • Поправлен экспорт заказов
  • Поправлен импорт/экспорт migx поля
  • Исправлен redirect_uri при авторизации
  • Обновлена авторизация
  • Исправлен экспорт товаров
  • Решена проблема с ограничением при экспорте
  • Добавлено: создание опций товара
  • Исправлен импорт товаров и опций
  • Удаление старых изображений в галереи товара(msGallery) при импорте
  • Добавлена ссылка для авторизации
  • Обновлен сниппет GoogleSheets
  • Исправлено удаление данных
  • Исправлена ошибка импорта при создании товара
  • Исправлена ошибка при экспорте картинок
  • Исправлена ошибка при инициализации класса GoogleSheets
  • Исправлены сниппеты
  • Исправлена функция hasError
  • Улучшен экспорт/импорт
  • Исправлен плагин GoogleSheetsSyncOrder
  • Добавлены события: gsOnBeforeGetVendors, gsOnGetVendors, gsOnBeforeGetClients, gsOnGetClients
  • Добавлена возможность получение данных через js
  • Исправление ошибок
    • подключение пользователей в getOrders
    • убран parent c дефолтных полей
    • исправлен разделитель для опций модификации товара
    • исправлен импорт по артиклу товара
  • Добавлены события
  • Импорт/Экспорт MIGX полей
  • Импорт/Экспорт msVendor(производители товара minishop2)
  • Импорт
    • переделан импорт
    • добавлен импорт категорий minishop2(msCategory)
    • возможность пропускать первую строку
  • Экспорт
    • добавлен экспорт покупателей minishop2(msClient)
    • изменены параметры заказов
    • добавлены параметры template_name, vendor_name(minishop2)
    • возможность использовать поля экспорта как заголовки
  • Интеграция
    • ms2Gallery2
    • msOptionsPrice2
    • msProductRemains
    • SEO Tab
    • SEO Pro
  • Поправлена синхронизация
  • Добавлена сортировка грида
  • Добавлен экспорт/импорт опций товара
  • Исправлены ошибки при создании заказа
  • Исправлена ошибка экспорта tv полей
  • Добавлен экспорт категорий(msCategory)
  • Добавлена фильтрация по условию category_id/category_name
  • Округление времени выполнения операции
  • Исправление ошибок при экспорте товаров
  • Исправлен баг с кешем при авторизации
  • Добавлена кнопка сброса авторизации
  • Переделан импорт(исправлена синхронизация)
  • Исправлена авторизация
  • Исправлены ошибки экспорта/импорта
  • Исправлен баг импорта при отсутствии условий
  • Пропуск пустой строчки в таблице
  • Улучшен импорт/экспорт
  • Добавлена поддержка TV для экспорта
  • Исправление ошибки при экспорте в режиме Update
  • Добавлен сниппет GoogleSheetsFront — для запуска экспорта/импорта с фронта
  • Добавлен файл action.php для запуска экспорта/импорта по ajax
  • Добавлены условия для Импорта и Экспорта
  • Экспорт в режиме Update теперь пропускает 1 строку в таблице
  • Рефакторинг кода
  • Исправлен лексикон import
  • Синхронизация ресурсов/товаров/пользователей
  • Удалены системные настройки для создание заказов
  • Синхронизация заказов minishop2
  • Добавлено описание для системных настроек
  • Обновлен хук GoogleSheetsSaveForm
  • Добавлена поддержка TV
  • Автоматически создание категорий, если указан родитель.
  • Добавлена поддержка мультикатегорий
  • Добавлены поля для экспорта: parent_name, category_name
  • Добавлена поддержка заголовков для полей импорта: parent, category
  • Добавлена поддержка галереи minishop2
  • Исправлены ошибки при импорте
  • Добавлены поля производителя товара для экспорта (vendor.name, vendor.logo, vendor.country…)
  • Добавлена проверка списка полей для импорта
  • Добавлена проверка уникального поля при импорте
  • Добавлено поле ‘список полей для импорта’
  • Удаление ресурсов/товаров через импорт
  • Добавлен экспорт ресурсов/товаров/заказов/пользователей
  • Добавлен тег ignore для пропуска ячейки при сохранении заказов/форм
  • Добавлены свойства товара при сохранении заказа
  • Добавлены доп. поля к заказу по инструкции https://modx.pro/solutions/10040
  • Улучшен модификатор table
  • Добавлены новые параметры для сниппета GoogleSheets: fields,ignore
  • Добавлен плагин для сохранение заказов minishop2
  • Добавлен импорт товаров minishop2
  • Добавлены сообщение о кол-во обновленных и созданных ресурсов
  • Добавлены настройки импорта
  • Добавлены лексиконы
  • Добавлен модификатор table
  • Добавлена защита дополнения

Шпаргалка по Fenom | BUSTEP.RU

Описание по подключению плейсхолдеров на страницу

информация с официальной документации pdotools

MODXFenomОписание
[[+pagetitle]]{$pagetitle}Заголовок
[[*pagetitle]]{$modx->resource->pagetitle}Заголовок
[[%lexicon]]{$modx->lexicon(‘lexicon’)}вывод словарей
[[~[[+id]]]]{$modx->makeUrl($id)}укл на страницу
[[++site_url]]{$modx->config.site_url}настройки modx
[[$chunkName]]{$pdoTools->getChunk(‘chunkName’)} или {include ‘chunkName’}чанк
[[!snippetName]]{$modx->runSnippet(«pdoResources», [‘parents’ => 0])}сниппет
[[*id:is=`1`:then=``:else=``]]{if $id = 1}{else}{/if}if else
[[+pagetitle:modificator]]{$pagetitle | modificator}модификатор
[[+pagetitle:modificator]]{$_modx->placeholders}массив с системными плейсхолдерами

Другие параметры

FenomОписание
{$_modx->placeholders}массив с системными плейсхолдерами
{$_modx->config}массив с системными настройками
{$_modx->context}массив (не объект!) с текущим контекстом
{$_modx->user}массив (не объект!) с текущим пользователем
{$_modx->resource}массив (не объект!) с текущим ресурсом
{$_modx->lexicon}служба загрузки лексиконов
{$_modx->lexicon()}функция для вывода строки из лексикона
{$_modx->runSnippet()}запуск сниппета
{$_modx->runProcessor()}запуск процессора
{$_modx->getChunk()}вывод чанка
{$_modx->runSnippet(‘!pdoResources’)}не кэшируемый
{$.get.test}GET
{$.post.test}POST
{$date|date:»Y»}текущий год
{55|url}Ссылка на документ

Модификаторы MODX FENOM

FenomОписание
{$date| date: «Y»}текущий год
{55| url}Ссылка на ресурс

Подключение наборов параметров

FenomОписание
{$_modx->getChunk(‘Name@PropertySet’)}для чанка
{include ‘Name@PropertySet’}
{$_modx->runSnippet(‘NameName@PropertySet’)}для сниппетов
{include ‘template:TemplateName@PropertySet’}

Подключение шаблона

FenomОписание
{include ‘template:имя шаблона’}подключение шаблока
{include ‘имя чанка’}подключение чанка
{include ‘имя чанка’}подключение чанка
{block ‘content’}контект{/block}расcтановка блоков
{extends ‘file:templates/base.tpl’}наследование шаблона

Примеры работы

    // загрукзка ресурсов
    {$_modx->runSnippet('pdoResources', [
        'parents' => 19,
        'depth' => 0,
        'where' => ['isfolder' => 0],
        'showLog' => 1,
    ])}

    // загрукзка меню
    {$_modx->runSnippet('pdoMenu', [
        'parents' => 0,
        'level' => 2
    ])}

    <p>
    {$_modx->lexicon->load('ms2gallery:default')}
        Проверка словарей ms2Gallery: {$_modx->lexicon('ms2gallery_err_gallery_exists')}
    </p>

    <p>
    {if $_modx->isAuthenticated('web')}
        Привет, {$_modx->user.fullname}!
    {else}
        Вам нужно авторизоваться =(
    {/if}
    </p>
    <p>Текущий контекст: {$_modx->context.key}</p>

Создание значения из переменной с добавление префикса

{set $lexicon = "ms2_product_{$field}"}
{('ms2_product_' ~ $name) | lexicon}

Тег foreach предоставляет простой способ перебора массивов.
Foreach работает только с массивами, объектами и интервалами.

{foreach $list [as [$key =>] $value] [index=$index] [first=$first] [last=$last]}
   {* ...code... *}
   {break}
   {* ...code... *}
   {continue}
   {* ...code... *}
{foreachelse}
   {* ...code... *}
{/foreach}

{foreach}

Перебор значений массива $list:

{foreach $list as $value}
 <div>{$value}</div>
{/foreach}

{foreach 1..7 as $value} {* так же хорошо работает и с интервалами *}
 <div>№{$value}</div>
{/foreach}

Перебор ключей и значений массива $list:

{foreach $list as $key => $value}
 <div>{$key}: {$value}</div>
{/foreach}

Получение номера (индекса) итерации, начиная с 0

{foreach $list as $value}
 <div>№{$value@index}: {$value}</div>
{/foreach}

или

{foreach $list as $value index=$index}
 <div>№{$index}: {$value}</div>
{/foreach}

Определение первой итерации:

{foreach $list as $value}
 <div>{if $value@first} first item {/if} {$value}</div>
{/foreach}

или

{foreach $list as $value first=$first}
 <div>{if $first} first item {/if} {$value}</div>
{/foreach}

Переменная $value@first будет иметь значение TRUE, если текущая итерация является первой.
Определение последней интерации:

{foreach $list as $value}
 <div>{if $value@last} last item {/if} {$value}</div>
{/foreach}

или

{foreach $list as $value last=$last}
 <div>{if $last} last item {/if} {$value}</div>
{/foreach}

Переменная $value:last будет иметь значение TRUE, если текущая итерация является последней.

Замечание:
Использование last требует от $list быть countable.

{break}

Тег {break} используется для выхода из цикла до достижения последней итерации.
Если в цикле встречается тег {break}, цикл завершает свою работу, и далее, выполняется код, следующий сразу за блоком цикла

{continue}

Тег {continue} используется для прерывания текущей итерации.
Если в цикле встречается тег {continue}, часть цикла, следующая после тега, не выполняется, и начинается следующая итерация.
Если текущая итерация была последней, цикл завершается.

{foreachelse}

Тег {foreachelse} ограничивает код, который должен быть выполнен, если итерируемый объект пуст.

{var $list = []}
{foreach $list as $value}
 <div>{if $last} last item {/if} {$value}</div>
{foreachelse}
 <div>empty</div>
{/foreach}

В блоке {foreachelse}...{/foreach} использование {break}, {continue} выбросит исключение Fenom\CompileException при компиляции

08 февраля 2019, 09:10    21870

MODX — Как вывести популярные статьи

Урок, на котором рассмотрим, как с помощью сниппетов pdoTools создать виджет, отображающий на сайте 5 самых популярных статей за последние 7 дней.

Описание виджета «Популярные статьи»

Виджет «Популярные статьи» предназначен для отображения на сайте 5 самых просматриваемых страниц за последние 7 дней.

Визуально данный виджет выполним в виде панели (компонента panel) front-end фреймворка Twitter Bootstrap. Содержимое панели организуем в виде нумерованного списка статей в порядке их убывания по количеству просмотров за неделю.

Необходимые компоненты

Рассматривать создание блока «Самое популярное» будем для сайта, в котором статьи организованы на базе компонента Tickets. По умолчанию просмотры тикетов в компоненте Tickets ведутся только для зарегистрированных пользователей. Для того чтобы просмотры регистрировались и для незарегистрированных посетителей, необходимо включить опцию «tickets.count_guests» в настройках.

Кроме компонента Tickets, потребуется ещё компонент pdoTools. Данный компонент, содержит хороший набор сниппетов. В этой статье будем использовать из этого набора только сниппет pdoResources.

Таблицы TicketView и Ticket

Для создания запросов понадобятся 2 таблицы: TicketView и Ticket.

Первая таблица (TicketView) содержит записи о просмотренных пользователями тикетах. Она состоит из четырёх полей, но для выполнения запроса понадобятся только 2. Первое поле — это parent, оно хранит id просмотренного пользователем тикета. Второе поле — это timestamp, оно предназначено для хранения даты просмотра.

Вторая таблица (Ticket) будет основной. Она понадобится для того чтобы выбрать из неё необходимые ресурсы для которых будем подсчитывать количество просмотров.

Взаимосвязь между таблицами представим на следующей схеме:

Разработка виджета «Популярные статьи»

Создание виджета осуществим за 2 шага:

  1. Напишем сниппет getDateWeekAgo, который будет возвращать дату, которая была 7 дней назад.
  2. Выберем и выведем необходимые ресурсы с помощью сниппета pdoResources и getTicket. Сравним время и ресурсы, затрачиваемые ими на обработку.

Создание сниппета getDateWeekAgo

Для создания сниппетов необходимо открыть в левой панели администрирования вкладку «Элементы» и нажать на значок «+» напротив надписи «Сниппеты». В открывшейся странице ввести следующее:

Выборка записей с помощью сниппета pdoResources

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


<section>
  <div>
    <h5>
      <i></i> <span title="Самые популярные статьи и уроки за последние 7 дней">Популярные статьи</span>
    </h5>
  </div>
  <div>
    [[!pdoResources?
      &loadModels=`tickets`
      &class=`Ticket`
      &leftJoin=`{
        "TicketView": {
          "class": "TicketView",
          "on": "Ticket.id = TicketView.parent"
        }
      }`
      &parents=`4`
      &where=`{"TicketView.timestamp:>":"[[!getDateWeekAgo]]"}`
      &select=`{
        "Ticket": "Ticket.id as id, Ticket.uri as uri, Ticket.pageTitle as pagetitle",
        "TicketView": "COUNT(TicketView.parent) as countviews"
      }`
      &hideContainers=`1`
      &groupby=`Ticket.id`
      &sortby=`{"countviews":"desc"}`
      &tpl=`@INLINE <p><span>[[+idx]]</span> <a href="[[+uri]]">[[+pagetitle]]</a> <span><i></i><span title="Количество просмотров за последние 7 дней"> [[+countviews]]</span></span></p>`
      &limit=`5`
    ]]  
  </div>
</section>  

Выборка записей с помощью сниппета getTickets

В качестве 2 способа рассмотрим выборку данных и их отображение с помощью сниппета getTickets.


<section>
  <div>
    <h5>
      <i></i> <span title="Самые популярные статьи и уроки за последние 7 дней">Популярные статьи</span>
    </h5>
  </div>
  <div>
    [[!getTickets?
      &leftJoin=`{
        "TicketView": {
          "class": "TicketView",
          "on": "Ticket.id = TicketView.parent"
        }
      }`
      &parents=`4`
      &where=`{"TicketView.timestamp:>":"[[!getDateWeekAgo]]"}`
      &select=`{
        "Ticket": "Ticket.id as id, Ticket.uri as uri, Ticket.pageTitle as pagetitle",
        "TicketView": "COUNT(TicketView.parent) as countviews"
      }`
      &hideContainers=`1`
      &groupby=`Ticket.id`
      &sortby=`{"countviews":"desc"}`
      &tpl=`@INLINE <p><span>[[+idx]]</span> <a href="[[+uri]]">[[+pagetitle]]</a> <span><i></i><span title="Количество просмотров за последние 7 дней"> [[+countviews]]</span></span></p>`
      &limit=`5`
    ]]  
  </div>
</section>  

Поиск нужных ресурсов вышепредставленные сниппеты осуществляют с помощью параметра &parent. Т.е. для того чтобы настроить виджет «Популярные статьи» на свой сайт, Вам достаточно изменить значение 4 на необходимое.

Сравнение результатов работы сниппетов

Как видно из результатов логов, сниппет pdoResources выбирает данные намного быстрее. Это связано с тем, что в запросе участвуют только нужные таблицы. В то время как сниппет getTickets дополнительно подключает ещё классы (таблицы) TicketsSection, modUser и modUserProfile.

Интервью с Райаном Трэшем из MODx CMS

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

Расскажите немного о себе и своем прошлом.

Я вырос в Тайлере, маленьком городке на востоке Техаса, с моими родителями и младшим братом. В 1994 году я переехал в Даллас, штат Техас, где поступил в колледж, чтобы получить степень по бизнесу в SMU.Спустя годы после окончания учебы я был настроен на свидание вслепую с великолепной женщиной, которую мне удалось убедить выйти за меня замуж, и вот уже 11 лет. Мне повезло, что у меня есть невероятно поддерживающий партнер, который при необходимости держит безумного предпринимателя более 20 лет в очереди. У нас есть дочь (4), сын (8) и наш новый щенок, который приехал на это Рождество.

В профессиональном плане я пришел из мира печати, открыв цех допечатной подготовки и производства рекламы, которым я владел около десяти лет. Хотя мне нравится потрясающая типографика, пустое пространство и красивые пропорции, я определенно не скучаю по миру CMYK.

Люди часто спрашивают, как мир печати трансформировался в бизнес программного обеспечения CMS. Мое первое знакомство с программированием произошло, когда я начал изучать мэйнфреймы в 4-м классе на летнем уроке для детей в соседнем общественном колледже. Хотя я, конечно, не разработчик в полном смысле этого слова — тем более, что CSS действительно имеет для меня смысл, — я знаю, чего можно достичь. Я всегда был ведущим специалистом в своем бизнесе, и, начиная с середины 90-х, я начал копаться в том, что тогда было PHP-FI, в моем цехе допечатной подготовки.

Моим первым опытом открытого исходного кода была osCommerce, в которой я некоторое время участвовал в этом сообществе. Я последовал за этим, став частью первых 10 или около того первых людей с ZenCart, баловался с Mambo и Etomite и, наконец, начал то, что оказалось MODX. Это, конечно, не было планом, но это была моя карьера на протяжении последних семи с лишним лет.

Как появился MODX?

В 2004 году я искал CMS, которая позволила бы мне избежать распространенных тогда макетов на основе таблиц и стилей сайтов с упрощенной разметкой и CSS.Тогда имела значение пропускная способность, и я перенес osCommerce для вывода семантической разметки и увидел огромное сокращение времени рендеринга; с тех пор я был продан.

Мне также нужна была платформа, которая упростила бы создание контента, защищенного входом в систему, чтобы мои клиенты могли брать и использовать для управления своими сайтами, не ломая ничего, и что они могли бы изучить в течение часа. Излишне говорить, что его не существовало. Таким образом, я объединился с небольшой группой людей, включая Рэймонда Ирвинга и Джейсона Кауарда, у которых были похожие цели, и мы начали свой путь к достижению некоторых очень конкретных целей:

  • Предоставьте простую систему шаблонов, в которой использовались стандартные (X) HTML / CSS, которые никоим образом не препятствовали дизайну или структуре сайта.
  • Позвольте пользователям быстро создавать контент сайта, защищенный логином.
  • Создайте разумный, надежный и расширяемый API, который разработчики могли бы использовать для расширения или переопределения платформы без необходимости взламывать ядро.
  • Позвольте людям организовать контент логичным и понятным образом.
  • Избегайте извилистых или длительных кривых обучения, характерных для многих других CMS.
  • Работает одинаково хорошо как для базовых маркетинговых веб-сайтов, так и для более сложных приложений.

Мы впервые выпустили MODX в мир в 2005 году, и было очень приятно наблюдать, как люди находят отклик в нашей работе. Наша первая награда Packt Award за самую многообещающую CMS с открытым исходным кодом была вручена в 2007 году, что стало большим стимулом для превращения страсти в профессию.

В 2010 году мы основали компанию вокруг MODX, чтобы уделять ей все свое внимание. В прошлом году я нанял нашего генерального директора, чтобы он сосредоточился на стратегических вопросах бизнеса, освободив остальную часть команды, чтобы сосредоточиться на трех ключевых областях: сообщество, MODX Complete (поддержка и обслуживание для бизнеса) и MODX Cloud, что станет просто невероятным платформу, о которой я хотел бы поговорить с вами подробнее позже.

Мы с нетерпением ждем встречи с множеством людей на выставке CMS Expo в этом году, которую мы считаем нашим первым крупным запуском. Это довольно забавно, учитывая, что у нас уже есть сотни тысяч сайтов, работающих на MODX, отличные партнеры и отличная популярность.

Почему название MODX?

МОДУЛЬНЫЙ и расширяемый. Или что-то в этом роде… на самом деле это было рабочее название, которое изначально планировалось называть Tattoo CMS с лозунгом «Сделай свой знак» и логотипом, напечатанным вручную, но оно было отложено, и прозвище MODX прижилось.Нам это нравится сейчас.

Каковы отличия между Evolution и Revolution для тех, кто не знает?

MODX Revolution, сокращенно «Revo», — это новая, полностью переписанная версия нашей классической кодовой базы. Revo сохранил те же парадигмы, что и MODX Evolution, но выполнялся в объектно-ориентированном PHP с использованием уровня базы данных, который позволяет MODX также работать на Microsoft SQL Server. Это дает разработчикам возможность переопределять и расширять Revo для достижения точной функциональности, необходимой для любого проекта, без необходимости «взлома» ядра, блокирующего обновление.

Вы не только получаете как настраиваемые функции, так и возможность обновления до следующей версии, но эта новая версия также предлагает больший контроль, возможность создавать сложные приложения и интеграции, которые были бы невозможны с Evo. Например, с Revo вполне возможно масштабирование до сотен миллионов просмотров страниц. Вы можете расширить слой кэширования для использования Memcache или Membase, сессий для использования Redis или какой-либо другой высокопроизводительной разновидности новейших технологий.

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

В чем уникальность MODX?

MODX позволяет невероятно легко использовать любой дизайн, который только можно придумать для своего веб-сайта, и делать это без необходимости кодирования — фактически, мы можем с уверенностью утверждать, что MODX поддерживает HTML7 и CSS5 уже сегодня.Он делает это, отделяя внешний вид сайта от того, как он функционирует. Пользователи любого уровня подготовки считают, что MODX легко и уверенно публиковать свой контент. Что еще больше отличает его, так это то, что интерфейс управления MODX может быть полностью настроен для пользователей и адаптирован к контенту. Это гарантирует, что люди, которые ежедневно используют MODX для управления сайтом, могут легко использовать этот инструмент и при необходимости быстро обучать других.

Что, по вашему мнению, является основной причиной, по которой люди используют его в качестве своей CMS?

MODX действительно дает возможность творческим людям иметь 100% -ный контроль с точностью до пикселя над тем, как выглядят сайты, без необходимости писать ни единой строчки на PHP.Вы можете использовать любой вариант HTML / CSS / JS, который хотите, и вам не нужно беспокоиться о том, чтобы погрузиться в тематическую систему, смешанные шаблоны / код или разобраться с таксономиями или ограниченными категориями. У нас также есть отличный послужной список в области безопасности, с момента создания очень мало критических проблем.

Можете ли вы указать какие-либо реализации значительного размера, о которых вы знаете?

Complex.com в настоящее время обслуживает около 100 миллионов просмотров страниц в месяц и приближается к 150 миллионам к декабрю 2012 года.MODX.com также обслуживает довольно небольшой объем трафика с тонной сложной серверной инфраструктурой, поддерживающей все наши сайты. Мы твердо убеждены в том, что наш главный маркетинговый сайт должен работать с нашим программным обеспечением, и постоянно работаем над тем, чтобы сделать его лучшим решением.

Какой сайт, по вашему мнению, лучше всего использует возможности MODX?

MODX.com имеет множество пользовательских интеграций и компонентов. Наше настраиваемое приложение единого входа привязано к хранилищу Mongo DB. Наши форумы построены с использованием MODX API и обслуживают десятки тысяч пользователей, опубликовавших около полумиллиона сообщений.Для новостей, объявлений и ведения блогов мы используем наш родной блог Extra, называемый «Статьи», и у нас есть транзакции электронной коммерции, привязанные к FoxyCart и Recurly.

У нас также есть внутренняя инфраструктура для платформы лидеров MODX, которую мы тестировали в течение нескольких месяцев, внутренняя панель управления, живая карта, показывающая, когда пользователи что-то загружают или публикуют на форумах (или что-то еще, что может их переместить вверх по таблице лидеров), интеграция с Redmine для управления продуктами и многое другое.Мы также работаем над программой Certified MODX Professional, которая будет использовать еще один MODX Extra для обработки экзаменов и динамического создания сертификатов об окончании в формате PDF.

Есть ли коммерческое предложение CMS? Как организация привлекает финансирование?

Программное обеспечение

MODX является открытым исходным кодом и всегда будет оставаться бесплатным для загрузки и использования кем угодно — мы на 100% привержены принципам открытого исходного кода. Компания MODX предлагает поддержку и обслуживание под ключ после запуска, а также профессиональные услуги, работая совместно с партнерами MODX и крупными организациями для завершения любого этапа проекта на основе MODX.

Позже в этом году мы запустим новую платформу для веб-разработчиков, основанную на MODX Revolution, под названием «MODX Cloud». Это кардинально меняет правила игры для людей, которые создают веб-сайты или управляют ими, особенно для творческих или маркетинговых организаций.

Кто основные участники проекта? Не могли бы вы немного рассказать о них?

Джейсон Кауард и Шон МакКормик выполнили большую часть разработки MODX Revolution, и они оба работают на MODX. В сообществе есть сотни участников, которые сообщают об ошибках и отправляют запросы на вытягивание в наш репозиторий GitHub.На ум сразу приходят Боб Рэй, автор MODX: The Official Guide, Сьюзан Отвелл из Израиля и Стефан Булар из Франции, которые значительно улучшили интерфейс внутреннего менеджера.

Для MODX Evolution русское и японское сообщества проделывают огромную работу по поддержке программного обеспечения. Майк Шелл, еще один из наших старших разработчиков MODX, проверяет вклад и занимается выпуском.

Если люди хотят участвовать в проекте, как они могут это сделать?

Есть много способов поучаствовать в MODX для людей любого уровня подготовки и из любого места.Самое простое, что люди могут сделать, чтобы внести свой вклад в MODX, — это сообщить нам, когда что-то нужно исправить или улучшить, или запросив новые функции в нашем трекере проектов. Это не ограничивается только нашим программным обеспечением. Если люди находят проблемы на наших форумах, в документации или где-нибудь на сайте modx.com, нам нравится слышать об этом, чтобы мы могли улучшить его. В этой связи мы всегда можем воспользоваться помощью в улучшении нашей документации. Разработчики и дизайнеры могут вносить свой код через GitHub. Чтобы принять участие в написании кода, не забудьте сначала подписать лицензионное соглашение с участником.

Форумы сообщества MODX с более чем 38 000 пользователей — это гостеприимное, позитивное и благоприятное место для изучения MODX. Ответы даже на самые простые вопросы — невероятный способ освоить MODX, подружиться и найти соавторов. Большая часть команды MODX привлекла наше внимание с форумов.

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

Заключительные мысли или напутственные комментарии.

Спасибо, что дали нам возможность поговорить о MODX. Мы прячемся у всех на виду уже несколько лет, и пора это изменить!

Я думаю, что действительно особенным в MODX по сравнению с большинством проектов с открытым исходным кодом является то, что мы очень дружелюбны к коммерческим интересам. Другими словами, хотя мы и являемся ярыми сторонниками открытого исходного кода, мы определенно не фанатики.Фактически, я написал об этом сообщение в блоге некоторое время назад. Мы, безусловно, поощряем людей лицензировать свою работу под лицензией на ОС в MODX, но мы также не будем обвинять их, если они решат поступить иначе.

Другими словами, мы не рассматриваем открытый исходный код как предложение по принципу «все или ничего». Если вы не изменяете основное приложение или не используете общедоступные API для создания чего-то крутого поверх MODX — например, потрясающего шаблона или дополнения, улучшающего работу MODX, — мы думаем, что вы сможете лицензировать это, как хотите.Мы не думаем, что лицензия GPL MODX должна «заразить» все, что касается ее, и, в свою очередь, диктовать лицензию, по которой вы выпускаете свой IP. Таким образом, мы находимся в прекрасном положении для создания невероятной коммерческой экосистемы на основе дополнений и тем MODX, которая невероятно удобна для разработчиков и дизайнеров. Подробнее об этом в конце 2012 года!

Настройки

— Фред

Наборы опций

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

Глобальные настройки

Следующее управление индивидуальными настройками и группировкой для элемента на странице, управляемой Фредом.

пульт

Установите значение true , чтобы запросы XHR отображали элемент через парсеры Twig и MODX. При изменении настроек элемента также выполняется повторный рендеринг как с помощью парсера Twig, так и MODX. Это означает, что вы можете иметь динамический контент, который ссылается на другие страницы в пределах страницы Fred, используя фрагменты MODX.По умолчанию: ложь .

кэш, вывод

Это кэширует вывод элемента в статический HTML, если установлено значение true и когда предыдущий глобальный параметр remote также установлен на true .

медиаисточник

Имя медиаисточника для использования в Finder. Несколько имен можно передавать через запятую , .

imageMediaSource

Имя медиаисточника для использования в полях изображения. Несколько имен можно передавать через запятую , .Этот параметр переопределяет mediaSource .

Панель инструментов

Плагины Включить

Список подключаемых модулей панели инструментов для включения элементов.

Панель инструментов

Плагины Исключить

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

Настройки

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

Параметры настроек

Следующие свойства применяются ко всем настройкам, независимо от типов ниже:

  • name — Имя настройки, может использоваться как переменная Twig
  • label — Метка настройки, отображается на панели «Параметры элемента»
  • значение — значение по умолчанию
  • тип — Тип настройки, см. Следующий раздел

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

Доступные типы настроек

Следующие типы настроек используются для настройки элементов в Fred.

текст
  • Однострочный элемент HTML элемент
  • Может иметь любое текстовое значение
текстовое поле
  • Многострочный HTML