Расширение файла php не допускается modx
MODX отлично работает на большинстве виртуальных / облачных хостингов, а также на VPS и выделенных блоках. MODX написан на PHP, обычно использует базу данных MySQL и нуждается в веб-сервере, таком как Apache или NGINX, для обслуживания веб-запросов.
Компонент | Минимально | Рекомендация |
---|---|---|
PHP | 5.6.x | 7.2 или 7.3 |
Database | Последняя MySQL 5.6.x | MariaDB 10.1.x или Percona Server 5.6.x и выше |
Webserver | * | Последняя версия NGINX 1.18.x или выше или Apache 2.4 |
Для MODX 2.x требуется PHP 5.3.3 или выше, за исключением 2.7.0 и 2.7.1, для которых требуется php 5.4 (но это было исправлено в 2.7.2)
Следующие расширения требуются MODX, или обычно требуются дополнениями: zlib , json , gd , pdo (конкретно pdo_mysql ), imagick , simplexml , curl , и mbstring . Это общие расширения, которые обычно включены по умолчанию.
Рекомендуется memory_limit как минимум 64M или выше.
База данных¶
MODX поддерживает различные драйверы баз данных, в том числе mysql , sqlsrv и стороннюю реализацию postgres. Важно отметить, что статисты также должны реализовывать различные драйверы для своих пользовательских таблиц базы данных, что часто делается только для mysql , что делает вас лучшим выбором.
Минимальная поддерживаемая версия MySQL - 4.1.20, но рекомендуется 5.6 или выше. Также можно использовать кластеры, такие как Galera.
Поддерживаются механизмы хранения MyISAM и InnoDB, а также наборы символов utf8 и utf8mb.
Требуются следующие разрешения:
- SELECT , INSERT , UPDATE , DELETE необходимы для нормальной работы,
- CREATE , ALTER , INDEX , DROP для установки. обновления ядра и, возможно, для различных дополнений,
- CREATE TEMPORARY TABLES некоторыми сторонними дополнениями.
Веб-серверы¶
Поддержка браузера для Менеджера¶
Для использования внутреннего интерфейса поддерживаются следующие браузеры рабочего стола:
- Internet Explorer 11
- Edge (последние 2 версии)
- Chrome (последние 2 версии)
- Firefox (последние 2 версии)
- Safari (последние 2 версии)
Поддерживаемые мобильные/планшетные браузеры:
- Chrome for Android (последний)
- Safari on iOS (последний)
Менеджер может нормально работать в старых или других браузерах, но они официально не поддерживаются.
Обратите внимание, что эти требования только для менеджера. Какие браузеры поддерживает ваш сайт, решать только вам!
Разработано, построено и написано со всей любовью в мире от сообщества MODX.
Собственно, способов два:
- Закачать файлы на сайт по протоколу FTP (SFTP);
- Изменить настройки MODX Revolution.
Закачка файлов по протоколу FTP (SFTP)
Тут всё довольно просто. Сделать это можно через любой удобный FTP-клиент или даже без него. Вряд ли этот способ нужно описывать подробно. Скажу лишь, что лично я предпочитаю протокол SFTP. О том, как настроить подключение через SFTP в FileZilla, можете прочитать в статье по этой ссылке.
Настройка MODX Revolution
Данный способ является оптимальным, если Вы привыкли закачивать файлы на сайт через админку CMS и часто закачиваете файлы тех типов, которые MODX Revolution по умолчанию закачивать запрещает.
Откройте системные настройки CMS, щелчком по пиктограмме шестеренки вызвав меню.
В них откройте раздел Файловая система и найдите параметр Разрешённые к загрузке файлы (можно выполнить поиск по ключу upload_files).
Обратите внимание на похожие параметры upload_flash, upload_images и upload_media. Первый отвечает за то, файлы какого типа можно загружать в каталог assets/flash/, второй за то, что можно закачать в assets/images/, ну а третий касается каталога assets/media/. Есть в данном разделе и другие интересные параметры, определяющие, например, максимально допустимый размер загружаемых файлов или то, допускает ли CMS использование диспетчера файлов как такового.
Разберём создание дополнения MODX руками — без всяких заготовок типа modExtra.
Мы будем разбирать создание именно «дополнения», а не «пакета» или «компонента». Для понимания разницы приведу в пример работу со сниппетами в MODX. Мы можем нажать в админке кнопку «Новый сниппет», ввести в открывшейся форме имя Hodor и код:
После сохранения мы можем вызывать его в любом месте шаблона и пользоваться сниппетом. Но если мы хотим использовать этот сниппет на нескольких сайтах, можно сделать транспортный пакет, который будет содержать в себе сниппет Hodor.
При разработке дополнений так же сначала нужно понять, как дополнения работают и из чего состоят. И только потом можно задумываться над тем, как же «запаковать» дополнение в транспортный пакет.
Если вы хотите разобраться, что такое «дополнение», как дополнения работают и что сделать, чтобы создать своё дополнение, настоятельно советую создать тестовый сайт на хостинге modhost.pro и повторять все действия, описанные в статье. Сложно будет понять весь механизм, не пройдя «ручками» по всем этапам.
- Имя things
- Путь к ядру things/
Понятное дело, что появилась ошибка — ведь папка у нас пустая. Создадим файл с тем именем, какое мы выбрали для контроллера. Если вы захотите, чтобы у вашего дополнения было несколько страниц, создавайте по одному файлу для каждой нужной страницы и придумывайте имена контроллеров (файлов). Для нашего контроллера имя файла будет таким: index.class.php.
Если MODX не даёт вам создать файл php, просто добавьте расширение php в системную настройку upload_files. Не забудьте по завершении работ удалить его из этого списка!
Когда пустой файл будет создан, страница нашего компонента отвалится с ошибкой 500. Скорее всего текст ошибки вы не увидите из-за настроек сервера. Если так и есть, то просто допишите в начало файла /manager/index.php такую строчку:
Теперь, если мы переведём текст ошибки с английского на русский, мы поймём, что
Дело в том, что в MODX приняты правила названий классов. Для файла контроллера название класса будет таким: ManagerController. Запоминать это необязательно, всегда можно узнать требуемое название класса из текста ошибки.
Идём на поводу у MODX и описываем в нашем файле нужный класс:
После этого текст ошибки изменится — теперь MODX сообщает, что он пытается вызвать метод setProperties какого-то объекта, который не получен (on null). Пока непонятно. Смотрим код ошибки дальше.
Советую нажать Crtl+U, чтобы увидеть исходный код страницы — там текст ошибки будет разделён на строки. В строке с номером 0 есть имя нашего класса и имя метода getInstance. Вероятно, проблема в том, что у нас такого метода не существует. Давайте, его добавим. По названию метода можно предположить, что он должен «получать экземпляр» (не стесняйтесь пользоваться переводчиком). Экземпляр внутри класса — это $this. Значит, метод будет выглядеть так:
Смотрим, что теперь MODX хочет от нас. А хочет он метод setProperties, а у нас такого нет. Создадим его. У нас пока никаких свойств нет, они нам не нужны, поэтому метод не будет делать ничего.
Следующий требуемый метод — это initialize. Проведём тот же трюк:
Новая ошибка и новый метод:
Теперь ошибка уже непохожа на предыдущие. Остановимся и проанализируем последние действия. Мы добавили метод render. Это слово можно перевести как «отобразить». Давайте в коде укажем, что «отобразить» надо строку Hello world:
Отлично! Строка выведена на экран. Но нам надо, чтобы это была не просто HTML-страничка, а именно страница админки. Нам надо добавить в наш файл отображение верхнего меню, левой панели с деревом ресурсов и т. д. Это ж сколько работы! Но тут нам на помощь приходит MODX. В его ядре есть класс-заготовка modExtraManagerController (extra переводится как «дополнение»). В ООП такие классы-заготовки называются «абстрактными» — то есть сами они ничего не делают, а нужны только для того, чтобы мы в своих классах могли пользоваться заранее написанными методами.
Чтобы воспользоваться этой заготовкой и вывести все элементы админки, нужно наш класс унаследовать от класса modExtraManagerController. Пока удалим все наши методы — ведь они уже есть в заготовке:
Теперь по адресу нашей странички откроется полнофункциональная страница админки. Чтобы понять, какие возможности предоставляет нам заготовка, можно посмотреть в её код. Загляните, почитайте и переведите хотя бы названия методов: /core/model/modx/modmanagercontroller.class.php.
Меня, например, заинтересовал метод getPageTitle. Давайте, попробуем поменять title страницы нашего дополнения:
Кроме того, есть метод getTemplateFile. Ну что ж, давайте создадим файл-шаблон для нашего компонента. В папке things создадим файл home.tpl (если расширение tpl тоже запрещено, вы теперь знаете, что делать):
И укажем путь к этому файлу в методе getTemplateFile:
Прекрасно! Теперь код шаблона выводится в контентной части, заголовок страницы изменён на тот, который нужен нам. Осталось только добавить в верхнее меню ссылку на страницу нашего компонента.
Заходим в раздел «Меню» и создаём пункт в нужном месте (например, внутри пункта «Приложения»):
И вот, у нас готово наше собственное дополнение
На странице дополнения вы можете подключить, например, jQuery и Bootstrap и вывести пользователю какую-нибудь интерактивную информацию.
Но вообще, в MODX не принято баловаться сторонними фреймворками, так как в комплекте с MODX уже идёт замечательный фреймворк ExtJS, который заменяет сразу и jQuery, и Bootstrap.
В следующей статье мы приведём наше дополнение в стандартный для MODX вид с использованием ExtJS.
Статичный ресурс - это ресурсная абстракция фактического файла в файловой системе. Вы можете думать об абстракции как о виртуальном представлении любого файла на вашем веб-сервере. Как и другие ресурсы MODX, эта абстракция может иметь разрешения, связанные с ней, и она отображается в диспетчере MODX в дереве ресурсов, что позволяет отображать ее в динамических меню и результатах поиска. Статичный ресурс MODX может представлять любой файл на вашем веб-сервере (если разрешения разрешены).
Статичные ресурсы могут также иметь теги в своих полях содержимого для определения пути к файлу - так что вы можете указать собственные пути для настройки в качестве параметров системы или использовать Сниппеты для динамического нахождения пути.
Они ведут себя точно так же, как документ (стандартный ресурс). Содержимое в Статичном ресурсе анализируется и отображается точно так же, как и Документ, но часто вы будете изменять Типы содержимого и расположение содержимого в соответствии с типом файла, который вы представляете.
О псевдонимах¶
При создании статичного ресурса псевдоним не должен включать расширение файла: расширение файла определяется Тип содержимого. Например, если вы создаете статичный ресурс, который указывает на файл PDF на вашем веб-сервере, вы можете присвоить странице псевдоним «test». После того как вы выбрали «PDF» в качестве типа контента, расширение «.pdf» будет добавлено к псевдониму (при условии, что вы определили тип контента PDF, используя «.pdf» в качестве расширения файла). Если вы создали пользовательский тип содержимого для PDF, вам не нужно устанавливать в поле размещения содержимого значение «вложение». Его можно оставить как встроенный, так как современные браузеры могут согласовывать PDF-файлы, а затем могут также выбирать свой собственный предпочтительный способ обработки PDF-файлов - например, Chrome отобразит PDF в браузере, тогда как другие могут загрузить файл.
Чтобы убедиться, что ваш файл передан правильно, вы должны использовать (пустой) шаблон. Статичный ресурс становится ссылкой на файл, пока вы используете этот шаблон. Если вам нужно добавить метаинформацию в ресурс через некоторые переменные шаблона, и вы создаете свой собственный «пустой» шаблон, чтобы включить это, то вы должны установить содержимое шаблона на [[*content]] , прежде чем он будет работать правильно.
В случае отсутствия sitemap на сайте, поисковым роботам будет очень трудно найти все страницы вашего веб ресурса, как следствие ваши страницы будут медленнее появляться в поисковой выдаче.
Sitemap на ModX создается очень просто. В прошлой статье про установку плагинов мы поставили расширение под название pdoTools , которое нам пригодится:
-
Во вкладке ресурсы нажимаем на «+» и создаем новую страницу
Создание robots.txt
Robots.txt также создается в ModX несложно:
-
Переходим во вкладку «Элементы» и создаем новый сниппет нажатием на «+» .
No-html ресурсы
П.с. данную процедуру можно также выполнить через .htaccess , но мы рассмотрим встроенные в движок метод.
-
Во вкладке вверху выбираем Содержимое → Типы содержимого.
Читайте также: