Блог

Сергей Сенаторов

Name: Sergey Senatorov

FullStack developer

from siberia with love

current: Moscow

Блог Сергея Сенаторова

Простой редирект с устройств Ipad, Iphone, Android

Простой редирект с использованием регулярки.
$data = [
    'iphone' => '/iphonepage.php',
    'android' => '/androidpage.php',
    'defaultlink' => '/404.php'
];
preg_match('/Android|iPhone|iPad|defaultLink/', $_SERVER['HTTP_USER_AGENT'].'defaultLink', $matches);
header("Location: ".$data[strtolower($matches[0])]);

Ссылки на сайт с удаленного сервера ?

Иногда количество медиа контента который тянется с тестовой копии достаточно большой. В таком случае на локальной копии имеет смысл заменить ссылки на сайт с удаленного сервера.
Для Apache это можно зделать следующим образом:

Правила для .htaccess
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png|ico)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://yoursite.ru/$1 [R,NC,L]

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

/bitrix/modules/main/classes/general/file.php:1552 //elseif (!file_exists($io->GetPhysicalName($_SERVER["DOCUMENT_ROOT"].$cacheImageFileCheck)))

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

Убираем подсчет элементов 1С-Битрикс в отдельную таблицу средствами MYSQL

В компоненте каталога 1С-битрикс есть параметр - COUNT_ELEMENTS, который подсчитывает количество элементов в таблице. Если у вас таблица содержит достаточно большое количество значений, выполнения запроса может занимать до нескольких секунд. Как один из вариантов решения можно отключить в компоненте данную опцию и реализовать ее посредствам создания отдельной таблицы, в которой будет храниться информация о количестве элементов в разделах. А обновлять таблицу можно на событиях Битрикс, обновлять скриптом по крону или через триггеры базы данных. Разберем последний. Чтобы произвести подсчет Битрикс делает запрос примерно такого вида: