Перехват вывода в Joomla

Бывает что на сайте, сделанном на Joomla, нужно сделать небольшие изменения, и при этом не хочется разбираться в дебрях стандартных и сторонних шаблонов. В этом случае может помочь перехват и частичная замена стандартного вывода. Для этого меняем в корне сайта файл index.php. В его конце нужно заменить код:

echo JResponse::toString($mainframe->getCfg('gzip'));

на:

$iBuffer = JResponse::toString($mainframe->getCfg('gzip'));
require_once ('intercept.php');
echo $iBuffer;

А в файле intercept.php как раз можно произвести необходимые замены в выводе, находящемся в данном случае в переменной $iBuffer.
Кстати этот подход можно применить практически к любому движку.

Как сделать 301 редирект (объединение страниц с www и без)

Для того чтобы объединить страницы сайта с www. и без, в глазах поисковика, и при этом не потерять имеющийся вес страниц, можно воспользоваться 301 редирект. Пример записи в фаиле .htaccess ниже (замените example.ru на свой домен):

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.ru
RewriteRule (.*) http://www.example.ru/$1 [R=301,L]

Можно и не использовать .htaccess, а сделать все на PHP. Пример:

if (substr($_SERVER['HTTP_HOST'],0,3)!='www') {
  header("HTTP/1.1 301 Moved Permanently");
  header("Location: http://www.".$_SERVER['HTTP_HOST'].str_replace('index.php','',$_SERVER['PHP_SELF']).($_SERVER['QUERY_STRING']?'?'.$_SERVER['QUERY_STRING']:''));
}

При использовании кода, указанного выше, домен с www становиться основным или каноническим.

Безопасная разработка сайтов

Для того что бы ваши и заказчика нервы были в порядке, придерживайтесь простых правил:

  • Когда вам доверили готовый коммерческий сайт, сделайте его полную (файлы+БД) резервную копию.
  • Когда меняете какие то файлы, не заменяйте старую версию, а назовите ее ГГГГММДД_имяфайла. Советую именно так, потому что такие файлы удобно сортировать по имени, и вы будете знать дату старой версии.
  • Перед глобальными запросами БД, лучше еще раз сделать её резервную копию.
  • Храните резервные копии на нескольких носителях.
  • Даже если вы уверены, что после сделанных изменений ничего плохого не случится, всегда проверяйте сайт (лучше в нескольких браузерах).
  • При переезде заранее узнайте все ли модули поддерживаются на новом хостинге. Лучше что бы были те же версии модулей.

Приложения web-разработчика без нарушения авторских прав

Итак задача: собрать приложения для успешной работы web-разработчика и при этом не нарушить авторских прав. Да, и при этом не заплатив ни копейки.
Приступим:

  • Notepad++ — поддерживает разные кодировки и преобразует текст между ними.
  • GIMP 2 — тоже что Photoshop, но бесплатно.
  • Inkscape — замена CorelDRAW или AdobeIllustrator.
  • XnView — удобный просмотрщик с пакетным преобразованием файлов.
  • FileZilla — FTP-клиент.
  • Denwer 3 — web-сервер для тестирования сайтов на локальном компьютере.

Ну и к вышеперечисленному набор браузеров для тестирования.

Если у вас Bitrix 4 или ABO.CMS 3 и сервер MySQL 4

Если у вас старый Bitrix или ABO.CMS и сервер MySQL 4, будьте готовы к проблемам. Если ваш хостер из лучших побуждений обновит версию сервера MySQL до 5, ваши сайты могут перестать отрываться! У меня проблема возникла на сайте клиента с Bitrix 4.0.10 и на нескольких сайтах с ABO.CMS 3.3. Причина в несовместимости некоторых сложных SQL запросов. Например, запросы вида:

SELECT [...] FROM [таблица1], [таблица2] LEFT JOIN [таблица3] WHERE [...]

может ожидать крах. Преобразуйте их в:

SELECT [...] FROM [таблица1] JOIN [таблица2] LEFT JOIN [таблица3] WHERE [...]

Многие конфликтные запросы в ABO.CMS находятся в файле /mod/catalog/lib/class.Catalog.php

А чтобы узнать что конфликтует в Bitrix, измените в фаиле /bitrix/php_interface/dbconn.php значение переменной $DBDebug на true. Тогда при открытии сайта в браузере, вы увидите проблемный запрос.