-Цитатник

Фальсификации выборов президента: как это делается - (0)

Фальсификации выборов президента: как это делается Не смотря на огромное количество нарушений ...

АЛЫЕ ПАРУСА В ПЕТЕРБУРГЕ - (0)

«Алые паруса» — один из самых известных праздников в Северной столице, ...

Владимир Румянцев.Ангелы и коты - (0)

Владимир Румянцев.Ангелы и коты. Владимир Румянцев родился в 1957 году, рисовать начал в ...

фото Санкт-Петербурга - (0)

Санкт-Петербург Санкт-Петербург невероятно красивый город, думаю даже коренным "питерцам" будет и...

Ближневосточная проблема - простое объяснение за пять минут - (0)

Ближневосточная проблема - простое объяснение за пять минут  простое объяснение ближневосточ...

 -Фотоальбом

Посмотреть все фотографии серии природа фото Andy Mumford
природа фото Andy Mumford
05:54 16.05.2009
Фотографий: 40
Посмотреть все фотографии серии Общая
Общая
04:52 16.05.2009
Фотографий: 1
Посмотреть все фотографии серии позитиф
позитиф
03:00 01.01.1970
Фотографий: 0

 -Я - фотограф

 -Поиск по дневнику

Поиск сообщений в spacesite

 -Подписка по e-mail

 

 -Интересы

создание сайта продвижение сайтов авто бизнес

 -Сообщества

Читатель сообществ (Всего в списке: 1) Photoshopinka

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 15.05.2009
Записей:
Комментариев:
Написано: 1213


Доработка MODx 1.0.4 дистрибутива

Среда, 27 Октября 2010 г. 09:18 + в цитатник

Некоторые советы по доработке MODx 1.0.4

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

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

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

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

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

В версии 1.0.4 исправлены ошибки версии 1.0.3, и из ошибок, которые рекомендуется исправить, осталась только одна. Сниппет Breadcrumbs добавляет лишний псевдоним при ссылке на главную страницу сайта и неверно формирует список для страниц, дочерних относительно главной. Для исправления необходимо в папке install/assets/snippets в файле breadcrumbs.tpl строку

$pretemplateCrumb .= '<a class="'.$crumbClass.'" href="'.$modx->makeUrl($c['id']).'" title="'.$title.'">'.$text.'</a>';

изменить на

$pretemplateCrumb .= '<a class="'.$crumbClass.'" href="'.(($c['id'] == $modx->config['site_start']) ? $modx->config['base_url'] : $modx->makeUrl($c['id'])).'" title="'.$title.'">'.$text.'</a>';

а строку

while ( $parent && $loopSafety < 1000 )

изменить на

while ( $parent && $parent!=$modx->config['site_start'] && $loopSafety < 1000 )

также в строку, начинающуюся следующими выражениями:

if ( $showHomeCrumb && $homeCrumb = $modx->getPageInfo

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

if ( $showHomeCrumb && $homeId != $modx->documentObject['id'] && $homeCrumb = $modx->getPageInfo

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

В составе 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.

Для повышения эффективности сниппета Wayfinder, как рекомендовано на форуме MODx, следует в файле wayfinder.inc.php вместо строки:

$ids = $modx->getChildIds($this->_config['id'],$this->_config['level']);

подставить:

if (!$this->_config['hideSubMenus']) {

 $ids = $modx->getChildIds($this->_config['id'],$this->_config['level']);

} else { // then hideSubMenus is checked, we don`t need all children

 // first we always included the chilren of startId document

 // this fix problem with site root chidrens,

 // because site root not included in $modx->getParentIds

 $ids = $modx->getChildIds($this->_config['id'], 1, $ids);

 

 $parents = array($modx->documentIdentifier);

 $parents += $modx->getParentIds($modx->documentIdentifier);

 

 // if startId not in parents, only show children of startId

 if ($this->_config['id'] == 0 || in_array($this->_config['id'], $parents)){

 

 //remove parents higher than startId(including startId)

  $startId_parents = array($this->_config['id']);

  $startId_parents += $modx->getParentIds($this->_config['id']);

  $parents = array_diff($parents, $startId_parents);

 

 //remove parents lower than level of startId + level depth

  $level = $this->_config['level'];

  if ($level == 0)

   $level = 10; // constant getted from getParentIds function

  $parents = array_slice(array_reverse($parents), 0, $level-1);

 

  foreach($parents as $p)

   $ids = $modx->getChildIds($p, 1, $ids);

  }

}

Для корректной работы сниппета 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 закомментировать две последние строки.

Чтобы после установки не менялись названия полей при редактировании ресурсов, следует в файле assets/plugins/managermanager/mm_rules.inc.php закомментировать все строки.

Если вы хотите получать на русском языке статистику работы парсера 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 ? "базы" : "кэша";

Чуть ниже можно добавить:

$phpMemory = (memory_get_peak_usage(true) / 1024 / 1024) . " МБ";

$out= str_replace("[^m^]", $phpMemory, $out);

При работе с кодировкой 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, однако рекомендуется записывать все исправления, чтобы при выходе следующей версии вы смогли и в нее внести аналогичную правку.

Рубрики:  Рабочее
Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку