Некоторые советы по доработке MODX 1.0.10

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

О работе MySQL в режиме strict

В последних версиях MODX при установке производится проверка сервера MySQL на режим STRICT_TRANS_TABLES и при его наличии выводится предупреждение, что в данном режиме некоторые возможности MODX не могут работать должным образом. Однако следует понимать, что режим strict предписывает проверять все запросы к базе на строгое соответствие стандарту SQL, и его отключение позволит записывать неверные и потенциально опасные данные в базу данных. Также следует отметить, что данный режим по умолчанию задается при установке сервера MySQL в Windows, поэтому нередко встречается на локальных компьютерах. На хостингах этот режим чаще всего отключен.

Правильнее было бы исправить все фрагменты, где генерируются неверные запросы к базе, а не отключать проверку корректности, тем более что в последней версии системы такие фрагменты исправлены, что позволяет без каких-либо проблем работать с MODX, даже если используется сервер MySQL в режиме strict.

Исправление ошибок

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

Добавления и русификация

В составе MODX поставляется устаревшая версия PHPMailer, не удовлетворяющая современным требованиям. Рекомендуется заменить ее на версию 5.1, которую можно получить с официального сайта данной системы. Возможно, потребуются незначительные доработки, но в целом последняя версия работает намного лучше. Чрезвычайно полезно заменить все вызовы стандартной функции PHP mail отправкой писем через PHPMailer. Для этого требуется внести изменения в сниппеты Jot, Weblogin, плагин ForgotManagerPassword а также в файлы save_user.processor.php и save_web_user.processor.php. Например, в ForgotManagerPassword.tpl следует изменить функцию sendEmail таким образом:

function sendEmail($to) {

 global $modx, $_lang;

 

 $user = $this->getUser(0, '', $to);

 

 if($user['username']) {

  include_once "includes/controls/class.phpmailer.php";

  $mail = new PHPMailer();

  $mail->IsMail();

  $mail->CharSet = $modx->config['modx_charset'];

  $mail->IsHTML(true);

  $mail->From = $modx->config['emailsender'];

  $mail->FromName = 'MODX';

  $mail->Subject = $_lang['password_change_request'];

  $mail->Body = <<<EOD

<p>{$_lang['forgot_password_email_intro']} <a href="{$modx->config['site_url']}manager/processors/login.processor.php?username={$user['username']}&hash={$user['hash']}">{$_lang['forgot_password_email_link']}</a></p>

<p>{$_lang['forgot_password_email_instructions']}</p>

<p><small>{$_lang['forgot_password_email_fine_print']}</small></p>

EOD;

  $mail->AddAddress($to);

  $mail->AddReplyTo("no-reply@{$_SERVER['HTTP_HOST']}")

  if(!$mail->send()) { $this->errors[] = $_lang['error_sending_email']; }

 

  return $mail;

 }

}

Аналогично можно исправить и другие программы.

Если вы собираетесь создавать русскоязычные сайты, рекомендуется перевести сниппеты Jot, Weblogin, плангин ForgotManagerPassword и файлы login.processor.php, error.class.inc.php, save_user.processor.php, save_web_user.processor.php. Также полезно перевести менеджер файлов mcpuk и добавить в него транслитерацию имен файлов, о чем писалось на форуме MODX.

Для корректной работы сниппета Ditto полезно исправить файл summary.extender.inc.php, добавив обработку строк функциями mbstring при использовании кодировки UTF-8.

Чтобы по умолчанию выполнялась правильная транслитерация русских псевдонимов, следует в папке install/assets/plugins в файле transalias.tpl заменить:

&table_name=Trans table;list;common,russian,utf8,utf8lowercase;utf8lowercase

на:

&table_name=Trans table;list;common,russian,utf8,utf8lowercase;russian

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

Дополнительные исправления

Вы можете добавить любые сниппеты, модули и плагины в состав собственного дистрибутива MODX. Например, для добавления плагина EditArea необходимо добавить папку assets из дистрибутива плагина в дистибутив MODX, а из папки install плагина взять файл plugin.EditArea.tpl и, переименовав его в EditArea.tpl, поместить в папку install/assets/plugins. Дополнительно необходимо исправить строки, расположенные в самом начале файла, чтобы он начинался так:

//<?php

/**

 * EditArea

 * Allows text formatting, search and replace and real-time syntax highlighting

 * @status     GA

 * @version    0.5.2

 * @date       March 17, 2010

 * @category   plugin

 * @EditArea   Packaged version: 0.8.2

также после строки:

* @bugs       See plugin_bugs.txt

необходимо добавить следующие строки:

* @internal      @properties &eadbg=Debug Enabled?;list;true,false;false &word_wrap=Word Wrap Enabled?;list;true,false;true &font_size=Font Size;list;8,9,10,11,12;9 &defaultHeight=Initialize editor height;list;300px,400px,500px,600px,700px;500px &min_height=Minimum editor height;list;200,300,400;400 &start_highlight=Initialize with highlighting enabled?;list;true,false;true &allow_toggle=Allow editor toggling?;list;true,false;true &allow_resize=Allow editor resizing?;list;y,n;y &fullscreen=Initialize editor in fullscreen mode?;list;true,false;false &replace_tab_with_spaces=Replace tab with spaces?;list;// No,// Yes ;// Yes &tab_as_spaces=How many spaces per tab?;list;3,4,5;4 &plugins=Active Plugins;string;modx, syntax_selection &catchunload=Try/Catch on Unload?;list;yes,no;yes&compressor=PHP Compressor Enabled?;list;0,1;0

 * @internal     @events OnChunkFormRender,OnDocFormRender,OnModFormRender,OnPluginFormRender,OnSnipFormRender,OnTempFormRender

 * @internal     @modx_category Manager and Admin

 * @internal    @legacy_names EditArea

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

Вы также можете изменить настройки по умолчанию конфигурации, которые предлагаются после установки MODX. Для этого в папке install следует исправить в файле setup.sql нужные поля. Например, чтобы в капче использовать только цифры, следует заменить соответствующую строку на:

('captcha_words','0,1,2,3,4,5,6,7,8,9'),

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

('publish_default','1'),

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

('tinymce_editor_theme','custom'),

Кстати, чтобы в списке стилей не появлялись непонятные строки, следует в папке assets/plugins/tinymce/style в файле content.css закомментировать две последние строки.

Если вы хотите получать на русском языке статистику работы парсера MODX, следует в файле manager/includes/document.parser.class.inc.php найти соответствующие строки и заменить английские названия на русские (s на с, base на базы и так далее):

$queryTime= sprintf("%2.4f с", $queryTime);

$totalTime= sprintf("%2.4f с", $totalTime);

$phpTime= sprintf("%2.4f с", $phpTime);

$source= $this->documentGenerated == 1 ? "базы" : "кэша";

При работе с кодировкой UTF-8 не забудьте кодировать этот файл в UTF-8 (без BOM). Если теперь вы в шаблоне добавите строку:

MySQL: [^qt^], запросов: [^q^], PHP: [^p^], всего: [^t^], памяти [^m^], документ взят из [^s^]

то на страницах сайта появится примерно такая строка:

MySQL: 0.1646 c, запросов: 24, PHP: 0.1785 c, всего: 0.3430 c, памяти 3.25 МБ, документ взят из базы

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

 

Реклама

Партнеры

Поиск на сайте

Введите ваш запрос для начала поиска.