Работая с новым сайтом на движке MODX Revolution я столкнулся с проблемой невозможности сохранения значений пользовательских TV-параметров. Как оказалось, всему виной была новая версия MySQL.
Суть проблемы
Во время сохранения ресурса значения TV-параметров не сохраняются в таблице базы данных ( modx_site_tmplvar_ contentvalues ), при этом внешне всё выглядит нормально: после сохранения в соответствующих полях отображаются обновлённые значения. Однако после перезагрузки страницы редактирования поля вновь оказываются пустыми (или заполненными значениями по умолчанию).
В файле error.log системы (раздел Управление→Отчёты→Журнал ошибок административной панели) отображается следующее сообщение об ошибке:
Версия MODX Revolution: 2.5.0-pl
Версия MySQL: 5.7.15
Причина
Потратив приличное количество времени на поиск решения в интернете, я узнал, что всё дело в новой версии MySQL и её обновлённых настройках по умолчанию: задействована настройка ONLY_FULL_GROUP_BY , в результате чего перестаёт работать часть запросов MODX. Как оказалось, проблема уже известна разработчикам (описание в багтрекере MODX на GitHub: https://github.com/modxcms/revolution/issues/12826) и будет исправлена в новых версиях движка (скорее всего в версии 2.5.2-pl).
16 Вывод материалов на главной странице MODX Revolution
Решение
Чтобы не ждать официального релиза с исправлениями и обновлять движок, вы можете самостоятельно внести правки в файлы ядра MODX, к счастью исправлять придётся немного:
$c = $resource->xpdo->newQuery(‘modTemplateVar’); $c->query[‘distinct’] = ‘DISTINCT’; $c->select($resource->xpdo->getSelectColumns(‘modTemplateVar’, ‘modTemplateVar’)); $c->select($resource->xpdo->getSelectColumns(‘modTemplateVarTemplate’, ‘tvtpl’, », array(‘rank’))); if ($resource->isNew()) < $c->select(array( ‘modTemplateVar.default_text AS value’,
$c = $this->xpdo->newQuery(‘modTemplateVar’); $c->query[‘distinct’] = ‘DISTINCT’; $c->select($this->xpdo->getSelectColumns(‘modTemplateVar’)); $c->select($this->xpdo->getSelectColumns(‘modTemplateVarTemplate’, ‘tvtpl’, », array(‘rank’))); $c->select(array(‘value’ => $this->xpdo->getSelectColumns(‘modTemplateVar’, ‘modTemplateVar’, », array(‘default_text’)))); $c->innerJoin(‘modTemplateVarTemplate’,’tvtpl’,array( ‘tvtpl.tmplvarid = modTemplateVar.id’,
После внесения изменений механизм сохранения значений TV-параметров должен работать нормально.
Скажу ещё, что можно просто отказаться от использования MySQL последней версии, однако не думаю, что такой способ решения проблемы придётся вам по душе.
Источник: riselab.ru
Первоначальная настройка MODx
MODX EVO — принцип работы с TV параметром (для клиентов)
Информации о первоначальной настройке очень много, по сути это дублирование имеющейся, но однажды просто надоедает искать в той же подборке и повторять вроде одно и то же, позже замечая что в том то который делался тогда-то и тогда-то реализация была более верной. Поэтому впервую очередь пишу для себя чтобы не искать и не повторять в каждый раз немного по разному.
Установку мы пропустим они как правило похожи, и дабы не плодить очередной опус, о том что уже расписано и опубликовано просто укажу ссылку, на лучшую с моей точки зрения инструкцию.
Установка пакетов
- sdStore — для подключеня репозитория от modstore.pro, после установки необходимо зарегистрироваться и получить ключ для установки компонентов из магазина modstore.pro.
- tinyMCE — текстовый редактор для ресурсов.
- FormIt — для отправки писем с сайта.
- Translit — транслитерация URL-адресов.
- Filetranslit — транслитерация наименования загруженного файла.
- MIGX — дополнение для мульти TV-параметров.
- ClientConfig — конфигурация сайта.
- Ace — редактор кода с поддержкой Emmet (репозиторий modstore.pro).
- frontendManager — управление сайтом контент-менеджером (репозиторий modstore.pro).
- MetaX — сниппет для генерации мета-тэгов (репозиторий modstore.pro).
- modLastModified — плагин для отправки браузеру заголовка Last-Modified и, если браузер спросит If modified since — ответа 304 Not Modified.
- phpThumbOf — ресайзер картинок.
- SEO Pro — дополнение, которое считает сколько символов введено в поля title, longtitle и description, также добавляет свое поле Фокусные ключевые фразы.
- SEO Tab — Управление SEO на сайте, индексация, алиасы sitemap и прочие плюшки.
- simpleUpdater — система обновления MODx-а.
- tagLister — понадобится для создания ключевых слов.
- FormIt — для отправки писем с сайта.
- pdoTools — набор утилит на все случаи разработки сайта (репозиторий modstore.pro).
Источник файлов для контента
Создаем каталог для наших; картинок, документов, видео, аудио — файлов и пр.
В данном случае это папка files в папке assets.
Далее переходим в раздел Медиа -> Источники файлов и нажимаем кнопку Создать новый источник файлов.
и заполняем примерно так.
и нажимаем сохранить.
Теперь у нас в списке источников фалов появилась новая запись files. Нажмем на ней правой кнопкой мыши и выберем пункт меню Редактировать.
На открывшейся странице представлены параметры настройки для созданного нами нового источника файлов. Отредактируем некоторые из них.
Для параметров basePath и baseUrl указываем путь к созданной выше директории, где планируется хранить наши медиа-файлы — assets/files/, обязательно с слешем в конце иначе будут недоступны.
Кроме того, для параметра allowedFileTypes и imageExtensions укажем строку с перечисленными в ней расширениями файлов, которые будут разрешены для загрузки через новый источник — docx,xlsx,pdf,jpg,jpeg,png,gif,svg (в нашем случае добавляем docx,xlsx,pdf).
Проделав все вышесказанное сохраняем настройки путем нажатия на кнопку «Сохранить» в верхнем правом углу.
Новый источник файлов создан и в дальнейшем мы назначим его источником по умолчанию. Кстати, запомним название созданного источника — «files», оно понадобиться, когда будут редактироваться системные настройки.
Изменение системных настроек
Итак авторизовавшись в админке MODx-а и нажав верхнем, левом углу на шестеренку и выбрав системные настройки перейдем к настройкам MODx-а.
Все настройки сгруппированы по компонентам и разделам, начнем с основного core для упрощения их поиска вводим следующие запросы в поле поиска и выставляем их значения:
Раздел «Авторизация и безопасность»
- allow_multiple_emails (Разрешить пользователям использовать один адрес электронной почты) — нет, чтобы у каждого пользователя была своя электронная почта
Раздел «Дружественные URL»
- automatic_alias (Автоматически генерировать псевдоним) — Да, для того чтобы при создании нового документа алиас к нему генерировался из заголовка.
- container_suffix (Суффикс контейнера) — очищаем
- friendly_alias_max_length (Максимальная длина псевдонима) — 70, более 70 символов не имеет смысла слишком длинный адрес страницы
- friendly_alias_translit (Транслитерация псевдонимов) — russian, для того чтобы генерировались алиасы транслитом.
- friendly_urls (Использовать дружественные URL) — Да
- friendly_urls_strict (Строгий режим дружественных URL) — Да
- global_duplicate_uri_check (Проверять на дублирование URI во всех контекстах) — Да, обязательно для исключения дублирования псевдонимов.
- use_alias_path (Использовать вложенные урлы) — Да, ссылки будут типа site.ru/blog/hello.html
Раздел «Словарь и язык»
- fe_editor_lang (Язык текстового редактора во фронтенде сайта) — ru
- locale (Локаль) — ru_RU.utf8
Раздел «Система управления»
- default_media_source (Источник файлов по умолчанию) — files, смотрим выше
- manager_date_format (Формат даты в системе управления) — d-m-Y, можно сменить на наш, родной, день-месяц-год
- manager_time_format (Формат времени в системе управления) — H:i:s, вывод в более приятном формате: 08:25:56
- manager_week_start (Первый день недели) — 1, у нас принято начинать неделю в понедельник.
- resource_tree_node_name (Поле для названия узла в дереве ресурсов) — menutitle, чтобы названия ресурсов в дереве были покороче.
- resource_tree_node_tooltip (Поле подсказки для ресурса в дереве ресурсов) — alias, делается для того, чтобы можно было понять, какой у ресурса адрес, вместо расширенного заголовка.
- tvs_below_content (Разместить TV ниже контента) — Да, так удобнее.
- welcome_screen (Показывать окно приветствия) — Нет.
Раздел «Сайт»
- error_page (Страница ошибки 404) — здесь вбивается id документа, который является той самой страницей. В каждом случае он свой, я предпочитаю создать новый ресурс и по умолчанию он становится 2. Для того чтобы не выводился в меня активируем чекбокс Скрыть из меню.
- hidemenu_default (Скрыть из меню по умолчанию) — Да, чтобы случайно новые ресурсы не появились в основном меню сайта.
- link_tag_scheme (Схема URL) — -1 (минус 1), по умолчанию для сайтов с http, для сайтов с https оставляем 1.
- publish_default (Публиковать по умолчанию) — Да, чтобы при создании новых страниц сайта галочка «Опубликован» по умолчанию стояла, если оставить нет, то каждый созданный ресурс необходимо активировать для его публикации.
- site_name (Название сайта) — меняем на свое наименование, например Магазин интересных товаров.
- site_unavailable_message (Сообщение о недоступности сайта) — вместо версии на английском можно вставить следующее Сайт находится на техническом обслуживании. Пожалуйста, зайдите чуть позже.
- site_unavailable_page (Страница ошибки 503 «Сайт недоступен») — id страницы 404, лучше использовать страницу 404, чем главную.
- unauthorized_page (Страница ошибки 401 «Доступ запрещен») — id страницы 404, лучше использовать страницу 404, чем главную.
Раздел «Система и сервер»
- feed_modx_news_enabled (Отображение RSS-канала «Новости MODX») — Нет, отключаем Новости MODx на главной странице админки, в зависимости от предпочтений можно не отключать.
- feed_modx_security_enabled (Отображение RSS-канала «Уведомления безопасности MODX») — Нет, отключаем Уведомления безопасности MODX на главной странице админки, в зависимости от предпочтений можно не отключать.
- log_deprecated (Устаревшие функции в журнале ошибок) — Нет, чтобы убрать лишние и никому не нужные ошибки из лога.
- send_poweredby_header (Отправлять заголовок X-Powered-By) — Нет, для повышения безопасности, MODx не будет уведомлять о том на каком движке создан сайт.
- server_protocol (Тип сервера) — https, если у вас установлен ssl сертификат, если его нет, то оставляем как есть http.
- ace.font_size (Размер шрифта) — 16px, с таким размером шрифта лучше
- ace.show_invisibles (Невидимые символы) — Да, отображние скрытных символов, пробелы, табы и т. д.
- ace.soft_tabs (Мягкая табуляция) — Нет, с жесткой приятнее
- ace.tab_size (Размер табуляции) — 2, шаг отступа
- ace.theme (Тема редактора) — monokai, выбор за пользователем, это как фломастеры, потыкать для выбора можно здесь ace.c9.io/build/kitchen-sink.html
- seopro.fields (Fields where SEO Pro will work on) — pagetitle:70,longtitle:70,description:155,introtext:255,alias:2023,menutitle:2023, длину некоторых полей лучше ограничить.
- seopro.usesitename (Display sitename in the Google/Yandex Preview and add it to the SEO Pro title placeholder [[+seoPro.title]]?) — Нет, будем реализовывать иначе
Создание robot.txt
Создаем через файловый менеджер MODx-а, Filezill-у или средствами хостинга например CPanel файл robots.txt его содержимое ниже:
Создание sitemap.xml
Для создания страницы sitemap.xml создадим ресурс и в заголовке укажем sitemap.xml, в поле Содержимое введем [[!StercSeoSiteMap]] в расширенном заголовке и описании можно написать например Карта сайта sitemap, оставляем галочки на Скрыть из меню и Опубликован. Шаблон выбираем Пустой шаблон
Далее открываем Настройки и снимаем галки с Использовать HTML-редактор и Кэшируемый, сли еще что-то активно отключаем все кроме Очистить кэш. В тип содержимого выбираем XML.
Далее открываем SEO и в поле Участие страницы во внутреннем поиске по сайту выбираем Нет, исключить эту страницу из внутреннего поиске по сайту. Перейдя на видимость и в поле Включение страницы в Sitemap.xml переключаем на Нет, скрыть эту страницу в Sitemap.xml и не забывая нажать кнопку сохранить пробуем открыть страницу sitemap-а site.ru/sitemap.xml
Изменяем .htaccess
Далее переименовываем файлы ht.access, manager/ht.access и core/ht.access каждый из них в .htaccess, для исправления ошибки с Каталог ядра в открытом доступе
как правило достаточно переименовать файлы ht.access, manager/ht.access и core/ht.access каждый из них в .htaccess, но иногда необходимо удалить или переименовать файл /core/docs/changelog.txt.
Мой вариант .htaccess.
RewriteEngine On RewriteBase / #Редирект на HTTPS: #RewriteCond %{HTTPS} =off #RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] #Редирект С www на БЕЗ www: RewriteCond %{HTTP_HOST} ^www.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] #Редирект с БЕЗ www на С www. !НЕ используйте одновременно с «Редирект С www на БЕЗ www»: #RewriteCond %{HTTP_HOST} ^([^www].*)$ #RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L] #Редирект с http://site.com/index.html и http://site.com/index.php на http://site.com: #RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.(php|html|htm) HTTP/ #RewriteRule ^(.*)index.(php|html|htm)$ $1 [R=301,L] # Избавляемся от завершающего слеша RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.*)/ RewriteRule ^(.*)/$ /$1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] php_flag zlib.output_compression On php_value zlib.output_compression_level 5 ## EXPIRES CACHING ## ExpiresActive On ExpiresByType image/jpg «access 1 year» ExpiresByType image/jpeg «access 1 year» ExpiresByType image/gif «access 1 year» ExpiresByType image/png «access 1 year» ExpiresByType text/css «access 1 month» ExpiresByType text/html «access 1 month» ExpiresByType application/pdf «access 1 month» ExpiresByType text/x-javascript «access 1 month» ExpiresByType application/x-shockwave-flash «access 1 month» ExpiresByType image/x-icon «access 1 year» ExpiresDefault «access 1 month» ## EXPIRES CACHING ## FileETag MTime Size ExpiresActive on ExpiresDefault «access plus 1 year»
Написать комментарий
Ваш email не будет опубликован. Обязательные поля отмечены символом *
Источник: kservice.pro
Что там у ModX Evolution?
Почти 4 года прошло, с того момента, как я плотно работал с CMS ModX. В 2013-ом году, была задача, реализовать на этой системе управления сайт автомобильной тематики – шины диски. Пришлось изрядно повозиться, т.к. помимо обычного подбора по параметрам, было много справочников со связкой марка, модель, год выпуска, кузов, объем и тип двигателя.
Обычные фильтры для шин: ширина, профиль, диаметр, сезонность, шипы, производитель (можно было выбрать несколько вариантов из списка). Для дисков: ширина, диаметр, вылет, центральное отверстие, сверловка, производитель. Необходимо было разработать сайт, именно на CMS ModX, дизайн был не принципиален – главное функционал. Освежим в памяти, как устроен этот движок.
Установка ModX Evolution 1.2.1 (11 января 2017)
Перед нами архив CMS, распаковываем его на наш сервер, и устанавливаем. На выбор есть список из 19-ти язоков, на котором будет работать ваш будущей сайт, но Португальский (Portuguese) повторяется два раза. При более подробном рассмотрении верстки этой страницы, оказывается, у них есть отличие: portuguese / portuguese-br-utf8. Далее выбираем режим установки, в нашем случае доступен только один вариант «Новая установка», т.к. ранее на тестовом домене нечего не устанавливали. Последующие шаги весьма стандартны для всех CMS: информация для подключение к серверу где будет находиться база данных, информация для подключения к базе данных, параметры учетной записи администратора и выбор языка админ панели для него.
Введите имя базы данных, созданной для MODX. Если у вас еще нет базы данных, то программа установки попытается создать базу данных для вас. В зависимости от конфигурации MySQL или прав пользователя базы данных процесс может завершиться неудачей.
Небольшим отличием, служит реализвция функционал на шаге установки – после введения данных, у вас не будет кнопки далее в левом нижнем углу интерфейса, а под пунктом, где вы заполняли поля, есть ссылка. «Нажмите здесь…» и далее уточнение того, что она будет делать, после нажатия на неё по средствам Ajax будет произведено действие проверки и отобразиться её результат.
Дополнительные элементы ModX Evolution
На следующем шаге есть возможность установить демо-данные, выбрать шаблон, параметры (TV), чанки, модули, плагины, сниппеты. Раньше был небольшой список по каждому пункту, навряд ли можно было насчитать 10, а теперь выбор весьма обширен.
Параметры (TV)
- blogContent — blogContent (RTE для новых записей в блоге);
- documentTags — Tags (теги для текущего документа через пробел);
- loginName — loginName (условное название для логина в пункте меню).
Чанки
- AjaxSearch_tplAjaxGrpResult — Grp результат Tpl для AjaxSearch;
- AjaxSearch_tplAjaxResult — Результат Tpl для AjaxSearch;
- AjaxSearch_tplAjaxResults — Результаты Tpl для AjaxSearch;
- AjaxSearch_tplInput — Заполнение формы для AjaxSearch;
- Comments_tplComments — Комментарии (Jot) формы-шаблона;
- Comments_tplForm — Комментарии (Jot) формы-шаблона;
- mm_rules — Правила для ManagerManager по умолчанию;
- WebLogin_tplForm — WebLogin Tpl.
Модули
- Doc Manager — быстрое массовое обновление в документах на вашем сайте, в том числе шаблонов, деталей публикация и разрешений;
- Extras — первый репозиторий для MODX EVO.
Плагины
- CodeMirror — библиотеки JavaScript, которые могуи использоваться для создания интерфеса в редакторе, основанного на CodeMirror;
- ElementsInTree — получение доступа ко всем элементам и модулей внутри боковой панели диспетчера;
- FileSource — сохранение фрагментов кода и плагинов в файл;
- Forgot Manager Login — сброс доступа для входа в систему, отправляет пароль по электронной почте;
- ManagerManager — настройка диспетчера ModX, предназначен для разработки нестандартных решений для панели администратора или обычных пользователей;
- Quick Manager+ — использует стандартный Quick Manager для поддержки редактирования контента;
- Search Highlight — работает вместе с AjaxSearch, показывает подсказки — выделение на странице с результатами поиска;
- TinyMCE — популярный WYSIWYG редактор контента и страниц;
- TransAlias — ЧПУ, перевод URL в понятный вид.
Выбираете нужные, кликаем по кнопке «Далее», происходит проверка перед установкой разных параметров, таких как версий PHP и MySQL, прав на записи в директории, наличие Register_Globals, iconv. Принимаем лицензионное соглашение, устанавливаем, после установки система спросит вас о необходимости удалить папку /install/ с вашего сервера, соглашаемся. На выходе получаем вот такое демо-сайт, как на скриншоте ниже, а панель администратора разберем следующий раз.
Запись опубликована автором Andrew в рубрике Тестирование с метками CMS, ModX, ModX Evolution. Добавьте в закладки постоянную ссылку.
Источник: sbbo.ru