Для разработчиков сайтов

Плагин MODX Revolution для разбития длинного текста на страницы

Текст между <!– content –> будет разбит на страницы с навигацией внизу. Считает количество <p. На каждой страницы 30 ($count_delimiter_per_page=30;)  знаков <p ($delimiter = ‘<p’;)

 

## CUSTOMIZE ##
$separator = ‘<!– content –>’;
$delimiter = ‘<p’;
$count_delimiter_per_page=30;
/* sample 1 */
/*
$tplLinkNext = ‘<a href=”[[+link]]”>Next page</a>’;
$tplLinkPrev = ‘<a href=”[[+link]]”>Prev page</a>’;
$tplLinkNav = ‘
<div style=”margin-top:1.2em;font-size:.9em; text-align:center”>
[[+linkprev]]
 Page [[+current]] of [[+total]] 
[[+linknext]]
</div>’;
*/
/* sample 2 */
$tplLinkNext = ‘<a href=”[[+link]]”>Next</a>’;
$tplLinkPrev = ‘<a href=”[[+link]]”>Prev</a>’;
$tplLinkNav = ‘<div style=”margin-top:1.2em;font-size:.9em; text-align:center”>
Pages: 
[[+linkprev]]
 [[+pages]] 
[[+linknext]]
</div>’;

## DO NOT EDIT BELOW THIS LINE ##
/*
$e = &$modx->Event;

switch($e->name) {
case ‘OnWebPagePrerender’:
*/

switch ($modx->event->name) {
case ‘OnWebPagePrerender’:
$all_content = explode($separator,$modx->resource->_output);

if (count($all_content) > 2) {$pip_content = $all_content[1];}
else {return;}

$pip_content_p = explode($delimiter,$pip_content);
$pip_content_first = array_shift($pip_content_p);
$pip_pagecount=ceil(count($pip_content_p)/$count_delimiter_per_page);

if ($pip_pagecount > 1)
{
$pip_currentpage = isset($_GET['page']) ? intval($_GET['page']): 1;
if ($pip_currentpage > $pip_pagecount || $pip_currentpage < 1) { $pip_currentpage = 1; }

$char = ($modx->config['friendly_urls'] == 0) ? “&” : “?”;
/* $url = $modx->makeurl($modx->documentObject['id'],”,$char.’page=’);*/
$url = $modx->makeurl($modx->resource->get(‘id’),”,$char.’page=’);

$prevpage = $pip_currentpage-1;
$nextpage = $pip_currentpage+1;
$linkprev = ($prevpage>0) ? str_replace(‘[[+link]]’,$url.$prevpage,$tplLinkPrev) : ”;
$linknext = ($nextpage>$pip_pagecount) ? ” : str_replace(“[[+link]]”,$url.$nextpage,$tplLinkNext);

$pip_template = str_replace(‘[[+linkprev]]’,$linkprev,$tplLinkNav);
$pip_template = str_replace(‘[[+linknext]]’,$linknext,$pip_template);
$pip_template = str_replace(‘[[+total]]’,$pip_pagecount,$pip_template);
$pip_template = str_replace(‘[[+current]]’,$pip_currentpage,$pip_template);

$pages=”;
for ($i=1;$i<=$pip_pagecount;$i++){
$pages .= ($i==$pip_currentpage) ? $i : ‘<a href=”‘.$url.$i.’”>’.$i.’</a>’;
$pages .= ($i==$pip_pagecount) ? ” : ‘ | ‘;
}
$pip_template=str_replace(‘[[+pages]]’,$pages,$pip_template);

$pip_content_p=array_slice($pip_content_p,$count_delimiter_per_page*$pip_currentpage-$count_delimiter_per_page,$count_delimiter_per_page);
$all_content[1]= (($pip_currentpage==1)?$pip_content_first:”).$delimiter.implode($delimiter,$pip_content_p).$pip_template;
$modx->resource->_output=implode(”,$all_content);
}

break;
}
return;
/*
break;
default:
return;
break;
}
*/

Перенос сайта MODX Revo на другой хостинг

Периодически возникает проблема и вопрос в переносе сайта MODX Revo с локального сервера на рабочий, с хостинга на хостинг и т.д. У большинства получается это делать со скрипом. Вот вам небольшая пошаговая справка по переносу.

1). делаем бэкап базы (надеюсь, что это понятно).
2). делаем копию всех рабочих файлов на новый сервер
3). исправляем пути в следующих файлах:

/config.core.php
/core/config/config.inc.php
/connectors/config.core.php
/manager/config.core.php

4) удаляем все файлы из папки /core/cache
5). заходим в админку
6). в меню: Сайт —> Обновить сайт
7). в меню: Безопасность — Перезагрузить права доступа
8). в меню: Безопасность — Завершить все сеансы

Замена ereg (eregi) на preg_match в PHP 5.3 (устаревание POSIX)

В PHP 5.3 разработчки решили, наконец, избавиться от POSIX регулярных выражений – в самом деле, зачем нужны две библиотеки для работы с регулярными выражениями, если можно обойтись одной? К тому же, POSIX регулярные выражения гораздо медленнее чем Perl совместимые регулярные выражения (PCRE).

Теперь, разработчики в срочном порядке исправляют свой код, заменяя функции ereg, eregi, ereg_replace, ereg_replacei соответствующими PCRE аналогами, благо, замена получилась довольно простой:

1. заменить ereg и eregi на preg_match, ereg_replace и ereg_replacei на preg_repalce;
2. добавить // разделители в начало и конец регулярного выражения;
3. если POSIX функция кончается на i (eregi, ereg_replacei) то добавить i в конец регулярного выражения после разделителя.
4. заменить POSIX спецсимволы соответствуюущими PCRE аналогами: [:alnum:] – \w или [0-9a-z], [:digit:] – \d или [0-9], [:space:] – \s, [:alpha:] – [a-z]

примеры:

ereg(‘expression’) -> preg_match(‘/expression/’)

eregi(‘expression’) -> preg_match(‘/expression/i’)

eregi(‘^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$’) -> preg_match(‘/^[a-z0-9][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$/i’)

Кроме того, оказывается шаг четвертый не обязателен – спецсимволы типа [[:alnum:]] теперь поддерживаются в PCRE!

Некоторые коды символов для вставки в html

Буквенный код Цифровой код Символ Описание
&quot; &#34; двойная кавычка
&amp; &#38; & амперсанд
&lt; &#60; < знак ‘меньше’
&gt; &#62; > знак ‘больше’
&nbsp; &#160;   неразрывный пробел
&iexcl; &#161; ¡ перевернутый восклицательный знак
&cent; &#162; ¢ цент
&pound; &#163; £ фунт стерлингов
&curren; &#164; ¤ денежная единица
&yen; &#165; ¥ иена или юань
&brvbar; &#166; ¦ разорванная вертикальная черта
&sect; &#167; § параграф
&uml; &#168; ¨ умляут
&copy; &#169; © знак copyright
&ordf; &#170; ª женский порядковый числитель
&laquo; &#171; « левая двойная угловая скобка
&not; &#172; ¬ знак отрицания
&shy; &#173; ­ место возможного переноса
&reg; &#174; ® знак зарегистрированной торговой марки
&macr; &#175; ¯ верхняя горизонтальная черта
&deg; &#176; ° градус
&plusmn; &#177; ± плюс-минус
&sup2; &#178; ² “в квадрате”
&sup3; &#179; ³ “в кубе”
&acute; &#180; ´ знак ударения
&micro; &#181; µ микро
&para; &#182; символ параграфа
&middot; &#183; · точка
&cedil; &#184; ¸ седиль (орфографический знак)
&sup1; &#185; ¹ верхний индекс ‘один’
&ordm; &#186; º мужской порядковый числитель
&raquo; &#187; » правая двойная угловая скобка
&frac14; &#188; ¼ одна четвертая
&frac12; &#189; ½ одна вторая
&frac34; &#190; ¾ три четвертых
&iquest; &#191; ¿ перевернутый вопросительный знак
&Agrave; &#192; À латинская заглавная А с тупым ударением
&Aacute; &#193; Á латинская заглавная А с острым ударением
&Acirc; &#194; Â латинская заглавная А с диакритическим знаком над гласной
&Atilde; &#195; Ã латинская заглавная А с тильдой
&Auml; &#196; Ä латинская заглавная А с двумя точками
&Aring; &#197; Å латинская заглавная А с верхним кружком
&AElig; &#198; Æ латинские заглавные символы AE вместе
&Ccedil; &#199; Ç латинская заглавная C с седилем
&Egrave; &#200; È латинская заглавная E с тупым ударением
&Eacute; &#201; É латинская заглавная E с острым ударением
&Ecirc; &#202; Ê латинская заглавная E с диакритическим знаком над гласной
&Euml; &#203; Ë латинская заглавная E с двумя точками
&Igrave; &#204; Ì латинская заглавная I с тупым ударением
&Iacute; &#205; Í латинская заглавная I с острым ударением
&Icirc; &#206; Î латинская заглавная I с диакритическим знаком над гласной
&Iuml; &#207; Ï латинская заглавная I с двумя точками
&ETH; &#208; Ð латинская заглавная D с черточкой
&Ntilde; &#209; Ñ латинская заглавная N с тильдой
&Ograve; &#210; Ò латинская заглавная O с тупым ударением
&Oacute; &#211; Ó латинская заглавная O с острым ударением
&Ocirc; &#212; Ô латинская заглавная O с диакритическим знаком над гласной
&Otilde; &#213; Õ латинская заглавная O с тильдой
&Ouml; &#214; Ö латинская заглавная O с двумя точками
&times; &#215; × знак умножения
&Oslash; &#216; Ø латинская заглавная O со штрихом
&Ugrave; &#217; Ù латинская заглавная U с тупым ударением
&Uacute; &#218; Ú латинская заглавная U с острым ударением
&Ucirc; &#219; Û латинская заглавная U с диакритическим знаком
&Uuml; &#220; Ü латинская заглавная U с двумя точками
&Yacute; &#221; Ý латинская заглавная Y с острым ударением
&THORN; &#222; Þ латинская заглавная THORN
&agrave; &#224; à латинская строчная a с тупым ударением
&aacute; &##225; á латинская строчная a с острым ударением
&acirc; &##226; â латинская строчная a с диакритическим знаком
&atilde; &#227; ã латинская строчная a с тильдой
&auml; &#228; ä латинская строчная a с двумя точками
&aring; &#229; å латинская строчная a с верхним кружком
&aelig; &#230; æ латинская строчные буквы ae
&ccedil; &#231; ç латинская строчная c с седилем
&egrave; &#232; è латинская строчная e с тупым ударением
&eacute; &#233; é латинская строчная e с острым ударением
&ecirc; &#234; ê латинская строчная e с диакритическим знаком
&euml; &#235; ë латинская строчная e с двумя точками
&igrave; &#236; ì латинская строчная I с тупым ударением
&iacute; &#237; í латинская строчная I с острым ударением
&icirc; &#238; î латинская строчная I с диакритическим знаком
&iuml; &#239; ï латинская строчная I с двумя точками
&eth; &#240; ð латинская строчные символы eth
&ntilde; &#241; ñ латинская строчная N с тильдой
&ograve; &#242; ò латинская строчная O с тупым ударением
&oacute; &#243; ó латинская строчная O с острым ударением
&ocirc; &#244; ô латинская строчная O с диакритическим знаком
&otilde; &#245; õ латинская строчная I с тильдой
&ouml; &#246; ö латинская строчная I с двумя точками
&divide; &#247; ÷ знак деления
&oslash; &#248; ø латинская строчная O со штрихом
&ugrave; &#249; ù латинская строчная U с тупым ударением
&uacute; &#250; ú латинская строчная U с острым ударением
&ucirc; &#251; û латинская строчная U с диакритическим знаком
&uuml; &#252; ü латинская строчная U с двумя точками
&yacute; &#253; ý латинская строчная Y с острым ударением
&thorn; &#254; þ латинская строчная thorn
&yuml; &#255; ÿ латинская строчная Y с двумя точками
&fnof; &#402; ƒ знак функции
Символы для букв
&circ; &#710; ˆ диакритический знак над гласной
&tilde; &#732; ˜ тильда
Греческие буквы
&Alpha; &#913; Α заглавная альфа
&Beta; &#914; Β заглавная бета
&Gamma; &#915; Γ заглавная гамма
&Delta; &#916; Δ заглавная дельта
&Epsilon; &#917; Ε заглавная эпсилон
&Zeta; &#918; Ζ заглавная дзета
&Eta; &#919; Η заглавная эта
&Theta; &#920; Θ заглавная тета
&Iota; &#921; Ι заглавная иота
&Kappa; &#922; Κ заглавная каппа
&Lambda; &#923; Λ заглавная лямбда
&Mu; &#924; Μ заглавная мю
&Nu; &#925; Ν заглавная ню
&Xi; &#926; Ξ заглавная кси
&Omicron; &#927; Ο заглавная омикрон
&Pi; &#928; Π заглавная пи
&Rho; &#929; Ρ заглавная ро
&Sigma; &#931; Σ заглавная сигма
&Tau; &#932; Τ заглавная тау
&Upsilon; &#933; Υ заглавная ипсилон
&Phi; &#934; Φ заглавная фи
&Chi; &#935; Χ заглавная хи
&Psi; &#936; Ψ заглавная пси
&Omega; &#937; Ω заглавная омега
&alpha; &#945; α строчная альфа
&beta; &#946; β строчная бета
&gamma; &#947; γ строчная гамма
&delta; &#948; δ строчная дельта
&epsilon; &#949; ε строчная эпсилон
&zeta; &#950; ζ строчная дзета
&eta; &#951; η строчная эта
&theta; &#952; θ строчная тета
&iota; &#953; ι строчная иота
&kappa; &#954; κ строчная каппа
&lambda; &#955; λ строчная лямбда
&mu; &#956; μ строчная мю
&nu; &#957; ν строчная ню
&xi; &#958; ξ строчная кси
&omicron; &#959; ο строчная омикрон
&pi; &#960; π строчная пи
&rho; &#961; ρ строчная ро
&sigmaf; &#962; ς строчная сигма (final)
&sigma; &#963; σ строчная сигма
&tau; &#964; τ строчная тау
&upsilon; &#965; υ строчная ипсилон
&phi; &#966; φ строчная фи
&chi; &#967; χ строчная хи
&psi; &#968; ψ строчная пси
&omega; &#969; ω строчная омега
Общая пунктуация
&ndash; &#8211; тире
&mdash; &#8212; длинное тире
&lsquo; &#8216; левая одиночная кавычка
&rsquo; &#8217; правая одиночная кавычка
&sbquo; &#8218; нижняя одиночная кавычка
&ldquo; &#8220; левая двойная кавычка
&rdquo; &#8221; правая двойная кавычка
&bdquo; &#8222; нижняя двойная кавычка
Прочие символы
&dagger; &#8224; латинский крест
&Dagger; &#8225; двойной крест
&bull; &#8226; маленький черный кружок
&hellip; &#8230; многоточие …
  &#8240; знак промилле (процент с дополнительным ноликом)
&prime; &#8242; одиночный штрих – минуты
&Prime; &#8243; двойной штрих – секунды
&oline; &#8254; надчеркивание
&frasl; &#8260; косая дробная черта
&euro; &#8364; евро
  &#8470; знак номера
&trade; &#8482; знак торговой марки
&loz; &#9674; ромб
  &#9675; круг
Стрелки
&larr; &#8592; стрелка влево
&uarr; &#8593; стрелка вверх
&rarr; &#8594; стрелка вправо
&darr; &#8595; стрелка вниз
&harr; &#8596; стрелка влево-вправо
  &#8597; стрелка вверх-вниз
Масти
&spades; &#9824; знак масти ‘пики’
&clubs; &#9827; знак масти ‘трефы’
&hearts; &#9829; знак масти ‘червы’
&diams; &#9830; знак масти ‘бубны’