1С-Битрикс: Управление сайтомНа главную страницу
Клиентам
Маркетплейс
Партнерам
Разработчикам
Интеграция с 1С
Идея?


Личный кабинет
Авторизоваться
Регистрация
(войти) Корзина
Логин:

Пароль:



Забыли свой пароль?
Регистрация
Войти как пользователь:
Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
ВКонтакте
Мой Мир
Twitter
Facebook
Google
Livejournal
Яндекс
Rambler
Mail.Ru
Liveinternet
Blogger
OpenID
Используйте вашу учетную запись VKontakte.ru для входа на сайт.
Используйте вашу учетную запись Мой Мир@Mail.ru для входа на сайт.
Используйте вашу учетную запись на Twitter.com для входа на сайт.
Используйте вашу учетную запись на Facebook.com для входа на сайт.
Используйте вашу учетную запись Google для входа на сайт.
.livejournal.com
@yandex.ru
@rambler.ru
@mail.ru
http://www.liveinternet.ru/users/ /
.blogspot.com
OpenID:
  • Документация
    • Платформа PHP
    • Корпоративный портал
    • Платформа ASP.NET
    • Отраслевые решения
    • Marketplace
    • Аренда приложений (SaaS)
  • Обучение и сертификация
    • Онлайн-курсы и сертификация
    • Учебные центры
    • Мое обучение
    • Учебные видеоролики
  • Центр поддержки
    • Поддержка
    • FAQ
    • Мои обращения
  • Сообщество
    • Блоги Битрикс
    • Блоги веб-разработчиков
    • Общие форумы
    • Веб-разработчики
      • Моя страница
      • Мои сообщения
      • Группы
      • Найти коллег
  • Cтатьи
    • Архив
Главная / Поддержка / Частые вопросы
  • Центр поддержки
  • Поддержка
  • FAQ
  • Мои обращения

Интервью менеджера по внутренним коммуникациям и PR компании «Оранта-страхование» Елены Анисимовой

Частые вопросы

Вопросы по установке и настройке продукта (36)
Производительность (2)
Работа с меню (4)
Работа с модулем инфоблоков (11)
Ошибки при установке и работе продукта (45)
Интеграция с 1С (8)
Ошибки PHP (6)
Ошибки базы данных (12)

Вопросы по установке и настройке продукта

  • Требуется добавить поддомен без создания дополнительного сайта
  • Какой CSS-стиль применяется? Как его изменить?
  • Синхронизации времени на сервере и сервере БД
  • Как переделать однопользовательскую фотогалерею в многопользовательскую?
  • Почему цена товара в корзине отличается от цены товара в каталоге?
  • Заказчику не приходит уведомление о новом заказе, почему?
  • Как добавить новые данные в текст письма-уведомления, используя функцию Send?
  • Как закрыть публичную часть сайта только для определённой группы пользователей?
  • Как кастомизировать стандартный компонент?
  • Как использовать параметры PARAM1 и PARAM2 в модуле поиска?
  • У меня есть домен site.ru. Как в "Битриксе" настроить поддомены вида forum.site.ru?
  • Какая структура таблиц БД "Битрикса"? Как мне писать свои SQL запросы?
  • Как настроить ЧПУ без использования числовых идентификаторов (ID)?
  • Как настроить работу периодических функций с использованием планировщика cron?
  • Какие права на файлы необходимы для работы "Битрикс: Управление сайтом"?
  • Почему нельзя изменять содержимое папки bitrix/modules?
  • Как выбрать хостера? Какие требования продукта к хостингу?
  • Как изменить стандартную форму авторизации (регистрации)?
  • Как изменить выставляемые продуктом права на файлы?
  • Как восстановить пароль администратора?
  • Как удалить включаемые области из демонстрационного шаблона?
  • Как запустить продукт в режиме safe mode?
  • Как при показе flash-баннера использовать альтернативную картинку?
  • Как убрать "PHPSESSID=..." из URL?
  • Рекомендации по оптимизации сайта для поисковых систем
  • Как разбить постранично большой текст?
  • Как сконвертировать таблицы моего сайта из MyISAM в InnoDB?
  • Как изменить шаблон постраничного показа?
  • Настройка 404 ошибки
  • Как перенести сайт или корпоративный портал на другой компьютер?
  • 2048 пробелов в начале страницы возможно мешают работе поисковиков
  • Как воспользоваться фильтром для свойства типа "Список"?
  • Как вставить flash-баннер?
  • Как убрать из URL страницы знак вопроса?
  • Как отключить определение языка пользователя
  • Опция: "Закрыть публичную часть сайта". Изменение приветственной страницы.

  • Требуется добавить поддомен без создания дополнительного сайта
    Допустим, основной сайт site.ru работает в папке /www/. Требуется настроить поддомен forum.site.ru на работу в папке /www/forum/.
    Алгоритм реализации будет примерно таким:
    1. Создаём новый виртуальный хост (через панель управления хостингом) forum.site.ru, определяем для него DOCUMENT_ROOT - /www/forum/.
    2. В папке /www/forum/ создаём символические ссылки на папки /bitrix/ и /upload/.
    Для корректной работы нового "сайта" настоятельно советуем использовать отдельный шаблон сайта, поэтому продолжим:
    3. Создаём новый шаблон сайта (можно просто скопировать основной).
    4. В настройках сайта задаём PHP услоие для его подключения:
    $_SERVER['HTTP_HOST'] == 'forum.site.ru'
    5. Для домена forum.site.ru надо создать новые типы меню и указать корректные ссылки на вложенные разделы
    (нам не пойдут существующие типы меню от основного сайта, т.к. в них присутствует подпапка /forum/) относительно корня forum.site.ru.
    6. В созданном шаблоне сайта в компонентах, которые выводят меню, устанавливаем вывод новых типов меню.

    Информация по созданию символических ссылок:
    http://dev.1c-bitrix.ru/learning/course/lesson.php?COURSE_ID=7&ID=287
    Наверх

    Какой CSS-стиль применяется? Как его изменить?
    Очень часто возникают вопросы касательно CSS-стилей - какой стиль применяется к тексту или картинке и т.п., в каком файле прописан этот стиль, как его изменить и т.д. Для решения этих вопросов рекомендуем использовать плагин FireBug для браузера FireFox. В режиме Inspect можно определить какие стили применяются абсолютно для всех элементов текущей страницы, где расположены файлы, в которых прописаны эти стили - это делается простым навдением указателя мыши на интересующий элемент страницы.
    Установить FireBug и найти подробную документацию по работе с ним можно на сайте:
    http://firebug.ru/
    Наверх

    Синхронизации времени на сервере и сервере БД
    Если проверка сайта показывает, что время веб сервера не совпадает с БД или на сайте надо установить время, отличное от времени сервера, необходимо:

    1. Определить свой часовой пояс: http://php.net/manual/en/timezones.php
    Например,
    Europe/Moscow


    Внимание! Не все системы содержат информацию об отмене перехода на зимнее время в РФ. Используйте прямое указание сдвига относительно GMT, например для Москвы будет
    Etc/GMT-4


    2. Установить часовой пояс для php в /bitrix/php_interface/dbconn.php
    date_default_timezone_set("Etc/GMT-4");


    Для версии php ниже 5.1 используется функция putenv:
    putenv("TZ=Etc/GMT-4");


    3. Установить часовой пояс для MySQL в файле /bitrix/php_interface/after_connect.php:
    $DB->Query("SET LOCAL time_zone='Etc/GMT-4'");


    Можно использовать для БД часовой пояс php, тогда используйте такой код:
    $DB->Query("SET LOCAL time_zone='".date('P')."'");


    Наверх

    Как переделать однопользовательскую фотогалерею в многопользовательскую?
    Если поставлена задача перенести однопользовательскую фотогалерею в многопользовательскую, могут возникнуть некоторые проблемы. Структура однопользовательской и многопользовательской галерей отличаются - если первая состоит из альбомов(секций инфоблока), то вторая в первую очередь состоит из галерей пользователей, а галереи в свою очередь включают в себя альбомы.

    После переноса фотогалереи, все альбомы будут выглядеть как галереи и при переходе к галереям фото отображаться не будут, т.к.они лежат в корне галереи, а должны быть в альбомах(дочерних секциях).

    Для корректной работы следует создать в корне инфоблока секцию, обязательно присвоить ей символьный код и перенести все остальные секции в только что созданную секцию.
    В итоге в корне инфоблока будет одна секция - галерея, а в ней остальные секции - альбомы.
    Данная галерея будет принадлежать её создателю(либо администратору, либо редактору сайта), т.к. при создании в поле секции "CREATE BY" записывается идентификатор пользователя, который создал данную секцию.

    Наверх

    Почему цена товара в корзине отличается от цены товара в каталоге?
    Логика интернет-магазина такова, что в корзину товар попадает с наиболее выгодной ценой для покупателя, т.е. с наименьшей.
    Если для товара назначено несколько типа цен и покупателю разрешено покупать товар по ценам любого из этих типов, но в каталоге вы отображаете только одну цену для покупателя - при помещении в корзину отбор наименьшей цены будет осуществляться среди доступных цен, а не среди отображаемых в публичной части.

    В данном случае следует запретить не только отображение значения цены в каталоге, но и покупку по цене данного типа.
    Настройка типов цен:
    Рабочий стол->Магазин->Торговый каталог->Типы цен

    Наверх

    Заказчику не приходит уведомление о новом заказе, почему?
    Ошибочно думать, что уведомление о новом заказе отправляется на электронный адрес покупателя, который был указан при его регистрации на сайте. Уведомление отправляется на адрес, указанный в процессе оформления заказа. Чтобы дать возможность покупателю указать свой адрес следует создать соответствующее свойство заказа типа "[TEXT]СТРОКА"; и включить для этого свойства опцию "Использовать как E-Mail". Данное свойство становиться обязательным для заполнения автоматически.

    Магазин->Настройки магазина->Свойства заказа->Список свойств

    Также следует удостоверится, что в шаблоне типа события SALE_NEW_ORDER в поле "Кому" или "Скрытая копия" было указано шаблон "#EMAIL#";, вместо которого и будет подставляться значение созданного вами свойства заказа.

    Настройки->Настройки продукта->Почтовые события->Почтовые шаблоны

    Если свойства заказа, отмеченного как e-mail, нет, то письма отправляться не будут.
    Наверх

    Как добавить новые данные в текст письма-уведомления, используя функцию Send?
    Для внесение новых данных в письмо-уведомление, например уведомление о новом заказе, следует получить эти данные, используя соответствующие API фукнции и занести в массив, который является входящим параметром функции Send.
    Функция Send генерирует событие, а поля указанные в массиве будут доступны для вставки в шаблоне соответствующего типа почтового события.
    Например, в компоненте оформления заказа:

    $arFields = Array
    (
    "ORDER_ID" => $arResult["ORDER_ID"],
    "ORDER_DATE" => Date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT", SITE_ID))),
    "ORDER_USER" => ( (strlen($arResult["PAYER_NAME"]) > 0) ? $arResult["PAYER_NAME"] : $USER->GetFullName() ),
    "PRICE" => SaleFormatCurrency($totalOrderPrice, $arResult["BASE_LANG_CURRENCY"]),
    "BCC" => COption::GetOptionString("sale", "order_email", "order@".$SERVER_NAME),
    "EMAIL" => $arResult["USER_EMAIL"],
    "ORDER_LIST" => $strOrderList
    );
    $event->Send("SALE_NEW_ORDER", SITE_ID, $arFields, "N");

    Если добавить в массив $arFields строку "LID"=>SITE_ID, то в шаблоне типа почтового события "SALE_NEW_ORDER" можно поставить макрос #LID# - в теле письма, сформированного по этому шаблону, будет идентификатор сайта.

    Шаблон почтового события и тип почтового события добавляются в административной части:
    Настройки->Настройки продукта->Почтовые события->Почтовые шаблоны
    Настройки->Настройки продукта->Почтовые события->Типы почтовых событий

    Внимание! Данные изменения делаются в коде компонентов, которые следует сначала скопировать в пользовательское пространство имён.
    Если функция Send вызывается в ядре, проводить какие-либо изменения не рекомендуется.


    Справочная информация по функциям API:
    Общие сведения о системе почтовых событий
    Функция Send

    Наверх

    Как закрыть публичную часть сайта только для определённой группы пользователей?
    Данный функционал можно реализовать на основе обработки события OnProlog (вызывается в начале визуальной части пролога сайта).
    Для этого Вам надо в файл /bitrix/php_ibterface/init.php добавить приведённый ниже код:
    function CloseAccessForGroup()
    {
    //объявляется глабальный объект "Пользователь" и "Приложение"
    global $USER, $APPLICATION;

    //смотрим в какой группе находится текущий пользователь (функция возвращает ID группы).
    $mas = $USER->GetUserGroupArray();

    /*проверяем, что пользователь находится хотя бы в одной группе и с помощью PHP функции in_array проверяем находится ли группа пользователя в списке запрещённых групп для доступа к публичной части сайта*/
    if (count($mas)>0 && in_array(1, $mas) && (strpos('/bitrix/admin/',$APPLICATION->GetCurPage()))===false)
    {
    /*здесь можно вставить произвольное сообщение о запрете доступа (но надо обязательно выполнить функцию die()*/
    die('Access denied');
    }

    }

    //Здесь мы привязываем обработчик события к нашей функции
    AddEventHandler("main", "OnProlog", "CloseAccessForGroup");

    Примеры использования функции in_array():
    in_array(4, $mas) - закрыть доступ к публичной части группе с ID=4
    in_array(Array (4, 6), $mas) закрыть доступ к публичной части группам с ID=4 и ID=6

    Ссылки по теме:
    http://ru2.php.net/manual/ru/function.in-array.php
    http://dev.1c-bitrix.ru/api_help/main/events/onprolog.php
    http://dev.1c-bitrix.ru/api_help/main/functions/module/addeventhandler.php
    http://dev.1c-bitrix.ru/api_help/main/reference/cuser/getusergrouparray.php

    Наверх

    Как кастомизировать стандартный компонент?
    Чтобы кастомизировать стандартный компонент Вам надо:
    1. Создать новое пространство имён компонентов в папке /bitrix/components/, например создать директорию /bitrix/components/my_components/.
    2. В созданную папку необходимо скопировать папку с компонентом, который хотите изменить (копировать из папки /bitrix/components/bitrix/).
    3. Очистите кеш визуального редактора.
    В результате в визуальном редакторе у Вас отобразится кастомизированный компонент.

    Дополнительная информация:
    http://dev.1c-bitrix.ru/api_help/main/general/component20/03.component_place.php
    http://dev.1c-bitrix.ru/api_help/main/general/component20/04.component_struct.php
    http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=18

    Наверх

    Как использовать параметры PARAM1 и PARAM2 в модуле поиска?
    PARAM1 и PARAM1 используются для сужения области поиска.

    Для каждого модуля значение этих параметров разное.

    Для модуля инфоблоков:
    PARAM1 - тип инфоблока.
    PARAM2 - ID инфоблока.

    Пример вызова:
    <?
    if (CModule::IncludeModule('search'))
    {
    $q = "выставка";
    $module_id = "iblock";
    $param1='news';
    $param2=33;
    $obSearch = new CSearch($q,'ru', $module_id,false,$param1,$param2);
    if ($obSearch->errorno!=0):
    ?>
    <font class="text">В поисковой фразе обнаружена ошибка:</font>
    <?echo ShowError($obSearch->error);?>
    <font class="text">Исправьте поисковую фразу и повторите поиск.</font>
    <?
    else:
    while($arResult = $obSearch->GetNext())
    {
    ?>
    <a href="<?echo $arResult["URL"]?>"><?echo $arResult["TITLE_FORMATED"]?></a><br>
    <?echo $arResult["BODY_FORMATED"]?><br>
    <hr size="1" color="#DFDFDF">
    <?
    }
    endif;
    ?>

    Поиск будет осуществляться в инфоблоке, который имеет тип "news" и код 33.

    Наверх

    У меня есть домен site.ru. Как в "Битриксе" настроить поддомены вида forum.site.ru?
    Настроить домены можно через DNS сервер хостинг-провайдера. PHP приложение не имеет доступа к настрокам DNS, изменить конфигурацию доменов из "Битрикс" невозможно. Вам необходимо обратиться к своему хостинг-провайдеру с вопросом настройки DNS.

    Наверх

    Какая структура таблиц БД "Битрикса"? Как мне писать свои SQL запросы?
    Концепция работы с продуктом предполагает работу с данными через функции API (http://dev.1c-bitrix.ru/api_help/main/reference/index.php).
    Структура данных может меняться от версии к версии, а функции сохраняют обратную совместимость.
    Мы настоятельно не рекомендуем использовать прямые запросы к БД, т.к. это может нарушить целостность данных и привести к неработоспособности сайта. Нормальная работа продукта в таком режиме не гарантируется и не поддерживается.

    Наверх

    Как настроить ЧПУ без использования числовых идентификаторов (ID)?
    Для хранения идентификаторов элементов/разделов информационных блоков удобнее всего использовать поле "Символическое имя". Например, в ссылке www.myserver.ru/catalog/mobile/nokia_3310/
    'mobile' - это символическое имя группы "Мобильные телефоны", а 'nokia_3310' - символическое имя элемента, находящегося в группе "Мобильные телефоны". Проверить уникальность символического имени при добавлении нового элемента инфоблока можно с помощью "обработчика формы добавления".
    Подробнее
    http://www.bitrixsoft.ru/help/source/iblock/help/ru/developer/custom.php.html

    В обработчике 404 ошибки необходимо "разобрать" переменную $_SERVER["REQUEST_URI"] на нужные идентификаторы. Для этого в PHP есть ряд полезных функций:
    preg_match (php.net/preg_match)
    parse_url (php.net/parse_url)
    pathinfo (php.net/pathinfo)
    strpos (php.net/strpos)
    parse_str (php.net/parse_str)

    Например, ссылки вида myserver.ru/users/<Логин пользователя> (логин пользователя состоит из символов латиницы, цифр, символа '_'; логин должен быть длиной от 3 до 15 символов и не может начинаться с цифры) обрабатываются в файле 404.php так:
    <?
    if(preg_match("~^/users/([a-z_][a-z0-9_]{2,14})/?$­~i",$_SERVER["REQUEST_URI"],$match))
    {
    header("HTTP/1.1 200 OK");
    //делаем выборку по идентификатору
    require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.­php");
    $res = CUser::GetList($O, $B, Array("LOGIN_EQUAL_EXACT"=>$match[1],"ACTIVE"=>"Y"­));
    //$match[1] содержит логин
    if($arUser = $res->GetNext())
    {
    //выводим данные пользователя
    }
    else
    {
    //ошибка: нет такого пользователя
    }
    require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
    }
    else
    {
    header("HTTP/1.1 404 Not Found");
    //ошибка
    }
    ?>

    Но жесткая проверка в preg_match не позволит сделать ссылки вида
    www.myserver.ru/users/user_login/?r1=banner&r2=com­puterra.ru, которые очень необходимы для анализа рекламных компаний. Поэтому, в начале файла 404.php пишем:
    <?
    $arURI = parse_url($_SERVER["REQUEST_URI"]);
    $_SERVER["REQUEST_URI"] = $arURI["path"];
    if(!empty($arURI["query"]))
    {
    parse_str($arURI["query"],$par);
    foreach($par as $key => $val)
    {
    global $$key;
    $$key = $val;
    }
    }
    ?>

    Примеры
    Пример 1. Новости вида /about/news/23.html (ссылка для печати /about/news/print_23.html) вместо /about/news/detail.php?ID=23 (/about/news/detail.php?ID=23&print=Y)
    1.1 mod_rewrite
    RewriteEngine On
    RewriteBase /
    RewriteRule ^about/news/([0-9]+).html$ about/news/detail.php?ID=$1
    RewriteRule ^about/news/print_([0-9]+).html$ about/news/detail.php?ID=$1&print=Y
    1.2 Обработчик 404 ошибки
    <?
    if(preg_match("~^/about/news/(print_)?([0-9]+).html$~",$_SERVER["REQUEST_URI"],$match))
    {
    header("HTTP/1.1 200 OK");
    $_GET["print"] = (strlen($match[1])>0 ? "Y": "");
    $_REQUEST["ID"] = $match[2];
    include($_SERVER["DOCUMENT_ROOT"]."/about/news/detail.php");
    }
    else
    {
    define("ERROR_404", "Y");
    header("HTTP/1.1 404 Not Found");
    require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
    $APPLICATION->SetTitle("404 - файл не найден");
    require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
    }
    ?>

    Пример 2. Функция для создания идентификаторов
    <?
    function cyr_to_chpu($str)
    {
    $arCyr = Array("ё", "й", "ц", "у", "к", "е", "н", "г", "ш", "щ", "з", "х", "ъ", "ф", "ы", "в", "а", "п", "р", "о", "л", "д", "ж", "э", "я", "ч", "с", "м", "и", "т", "ь", "б", "ю", "Ё", "Й", "Ц", "У", "К", "Е", "Н", "Г", "Ш", "Щ", "З", "Х", "Ъ", "Ф", "Ы", "В", "А", "П", "Р", "О", "Л", "Д", "Ж", "Э", "Я", "Ч", "С", "М", "И", "Т", "Ь", "Б", "Ю");
    $arLat = Array("e", "i", "ts", "u", "k", "e", "n", "g", "sh", "sch", "z", "h", "", "f", "y", "v", "a", "p", "r", "o", "l", "d", "zh", "e", "ya", "ch", "s", "m", "i", "t", "", "b", "yu", "e", "i", "ts", "u", "k", "e", "n", "g", "sh", "sch", "z", "h", "", "f", "y", "v", "a", "p", "r", "o", "l", "d", "zh", "e", "ya", "ch", "s", "m", "i", "t", "", "b", "yu");
    $str = preg_replace("/[^a-zа-яА-Я0-9 ]/i", "",$str);
    $str = preg_replace("/ +/", " ",$str);
    $str = str_replace($arCyr,$arLat,$str);
    if(strlen($str)<=0) return "";
    $str = preg_replace("/\w+/ei", "ucfirst('\\0')",$str);
    $str = str_replace(" ", "",$str);
    return $str;
    }
    echo cyr_to_chpu("Битрикс: управление сайтом"); //BitriksUpravlenieSaitom
    ?>

    Дополнительно
    Module mod_rewrite URL Rewriting Engine
    http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
    http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html
    http://sitemaker.ru/technologies/webserver/mod_rewrite

    URL Rewriting Guide
    http://httpd.apache.org/docs/1.3/misc/rewriteguide.html

    Регулярные выражения
    http://ru2.php.net/manual/ru/reference.pcre.pattern.syntax.php

    Обработка 404 ошибки
    http://sitemaker.ru/technologies/webserver/error404handling
    Директива FilesMatch
    http://httpd.apache.org/docs/1.3/mod/core.html#filesmatch

    Наверх

    Как настроить работу периодических функций с использованием планировщика cron?
    Чтобы запускать скрипты, работающие с API "Битрикс", из командной строки необходимо определить некоторые серверные переменные, отключить статистику и подключить ядро без отображения шаблона сайта:

    #!/usr/bin/php
    <?php
    $_SERVER["DOCUMENT_ROOT"] = "/home/hosting/www";
    $DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];

    define("NO_KEEP_STATISTIC", true);
    define("NOT_CHECK_PERMISSIONS", true);

    require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules­/main/include/prolog_before.php");
    set_time_limit(0);

    //ваш код...

    require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules­/main/include/epilog_after.php");
    ?>

    Здесь вам следует изменить следущие строки:
    #!/usr/bin/php - путь к интерпретатору php - узнайте у хостера;
    $_SERVER["DOCUMENT_ROOT"] - путь к корневой папке сервера;

    После этого такому скрипту необходимо дать права на выполнение:
    chmod +x myscript.php

    Убедившись, что скрипт отрабатывает из командной строки, можно добавить задание cron, например:
    0 0 * * * [путь]/myscript.php >> [путь]/myscript.log

    Путь к текущей папку можно узнать командой
    pwd
    Весь вывод скрипта будет дописываться в myscript.log

    Если на хостинге нет интерпретатора php (только модуль php для apache), то сам скрипт будет иметь вид:
    <?php
    if ($_SERVER['REMOTE_ADDR']!='127.0.0.1') die(); // Защита от постороннего запуска

    define("NO_KEEP_STATISTIC", true);
    define("NOT_CHECK_PERMISSIONS", true);

    require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules­/main/include/prolog_before.php");
    set_time_limit(0);

    //ваш код...

    require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules­/main/include/epilog_after.php");
    ?>

    А вызов в планировщике надо будет делать через http клиент (например, lynx):
    0 0 * * * lynx mysite.ru/myscript.php >> [путь]/myscript.log

    Наверх

    Какие права на файлы необходимы для работы "Битрикс: Управление сайтом"?
    Дать универсальный ответ, какие должны быть права на файлы, нельзя, так как каждый хостинг настроен по особенному.

    Результат должен быть таким: нужны права на чтение/запись из скрипта на все файлы и папки начиная от корня сайта, т.е. для пользователя под которым запущен Apache. При этом на разделяемом хостинге другие пользователи на этой же машине не должны иметь права читать/писать в ваши файлы из своих скриптов. Также желательно чтобы пользователь по FTP мог перетирать эти файлы и обратно - файлы, закачанные по FTP, могли быть перезаписаны из скрипта.

    Проблема в том, что у каждого хостинг-провайдера своя политика безопасности и свои настройки: одни ограничивают доступ к чужим файлам даже при 777, другие запускают процесс Apache под своим пользователем для каждого виртуального хоста, и т.д.

    Поэтому вопрос необходимо решать с хостинг-провайдером.

    См. также:
    http://dev.1c-bitrix.ru/community/blogs/howto/387.php

    Наверх

    Почему нельзя изменять содержимое папки bitrix/modules?
    Содержимое папки bitrix/modules называется ядром продукта (сюда же относятся системные компоненты: bitrix/components/bitrix). В процессе обновления системы содержимое этой папки может быть переписано. Если вы внесёте свои изменения в ядро, они потеряются при обновлении.
    Вы делаете изменения на свой страх и риск, компания "Битрикс" не несёт ответственности за последствия изменений. Согласно лицензионному соглашению, в этом случае вам будет отказано в технической поддержке со стороны нашей компании.

    Наверх

    Как выбрать хостера? Какие требования продукта к хостингу?
    Для успешной установки и полноценной работы продукта необходимы следующие параметры:

    - установка может быть сделана только в корневую папку веб сервера;
    - веб сервер Apache 1.3.0 и выше;
    - разрешено использование .htaccess;
    - php 5.2 и выше;
    - safe_mode отключен;
    - short_open_tag включён;
    - memory_limit не ниже 32 Мб для редакции "Старт", не менее 64 Мб для редакции "Бизнес";
    - наличие функций работы с сокетами для обновления продукта;
    - наличие библиотек: Zlib (компрессия - для модуля компрессии и ускорения загрузки обновлений), GD lib (отображение графиков), Free Type (работа CAPTCHA);
    - версия MySQL сервера: 4.1.11, рекомендуется 5.0 и выше.

    Крайне рекомендуется наличие акселератора PHP (APC, eAccelerator или любого другого).
    Режим работы PHP как модуля Apache предпочтительнее (CGI настоятельно не рекомендуется, лучше FastCGI): http://dev.1c-bitrix.ru/community/blogs/howto/568.php

    Протестировать конфигурацию хостинга можно нашим специальным скриптом, который надо запустить на своём хостинге:
    http://www.1c-bitrix.ru/download/files/scripts/bitrix_server_test.php
    Наверх

    Как изменить стандартную форму авторизации (регистрации)?
    1. В настройках главного модуля включите использование компонентов 2.0
    2. создайте страницу,не требующую авторизации, поместите на неё bitrix:main.register и настройте его;
    3. если необходимо - скопируйте шаблон .default компонента bitrix:main.register и модифицируйте его;
    4. скопируйте шаблон .default компонента bitrix:system.auth.authorize в шаблон сайта и измените его так, чтобы путь для регистрации указывал на созданную страницу.

    См. http://dev.1c-bitrix.ru/api_help/main/general/component20/10.template_place.php

    Наверх

    Как изменить выставляемые продуктом права на файлы?
    Права, с которыми создаются файлы и папки, вы можете установить в файле /bitrix/php_interface/dbconn.php:
    define("BX_FILE_PERMISSIONS", 0755);
    define("BX_DIR_PERMISSIONS", 0755);

    См. также:
    http://dev.1c-bitrix.ru/community/blogs/howto/387.php

    Наверх

    Как восстановить пароль администратора?
    Сохраните следующий скрипт в файл:
    <?
    require($_SERVER['DOCUMENT_ROOT']."/bitrix/header.php");
    echo $USER->Update(1,array("PASSWORD"=>'Bitrix*123456'));
    echo $USER->LAST_ERROR;
    require($_SERVER['DOCUMENT_ROOT']."/bitrix/footer.php");
    ?>

    Закачайте через FTP на сайт и откройте его в браузере. После этого у пользователя с ID=1 (по умолчанию - администратор) установится пароль:
    Bitrix*123456

    После этого авторизуйтесь и на панели управления установите свой пароль.

    Внимание! Обязательно удалите этот файл после восстановления пароля!

    Наверх

    Как удалить включаемые области из демонстрационного шаблона?
    В коде шаблона необходимо закомментировать или удалить строку, отвечающую за подключение включаемой области.
    Обычно, это файлы, заканчивающиеса на "_inc.php".
    Строка имеет примерно следующий вид:
    <?$APPLICATION->IncludeFile(
    substr($APPLICATION->GetCurPage(), 0, strlen($APPLICATION->GetCurPage())-4)."_inc.php",
    Array(),
    Array("MODE"=>"html", "NAME"=>GetMessage("PAGE_INC"), "TEMPLATE"=>"page_inc.php"));
    ?>

    Наверх

    Как запустить продукт в режиме safe mode?
    Наш продукт спроектирован таким образом, что в режиме safe mode практически очень трудно достижима полноценная работа продукта. В таком режиме "Битрикс" не сможет установится штатно: инсталлятор блокирует установку в safe mode. Если вы перенесёте его с другой машины, он может запуститься, но ряд функций будет недоступен.
    С чем вам придётся столкнуться:
    -в процессе работы нельзя пользоваться ftp либо настроить ftp сервер на работу от -имени того же пользователя, что и веб-сервер;
    -ряд функций в safe mode работает не так, как в номальном режиме, а часть не работает вовсе, информацию об этих функциях вы найдёте на сайте php;
    -возможны и другие проблемы.

    Таким образом, запуск в safe mode возможен, но для этого требуются глубокие знания администрирования. Можете делать это на свой страх и риск.
    Мы рекомендуем использовать хостинг, который тестировался на совместимость с продуктом. Список таких компаний-хостеров представлен на странице:
    http://www.1c-bitrix.ru/products/cms/requirements.php#tab-hosting-link
    Существует также много других компаний, которые тоже предоставляют услуги хостинга без safe mode.

    Наверх

    Как при показе flash-баннера использовать альтернативную картинку?
    Для того чтобы вставить Flash баннер с подложкой (картинкой GIF, JPG, PNG) необходимо сделать следующее:
    1. При публикации Flash баннера из программы Macromedia (ныне Adobe) Flash следует указать альтернативные форматы, которые будут созданы вместе с Flash баннером, например Gif.
    2. На вкладке HTML в диалоге публикации следует установить опцию "Detect Flash Player". В данном случае будет сгенерирован специальный код, содержащий JavaScript для проверки установлен ли Flash проигрыватель и какой он версии.
    3. Обратите внимание, полученный HTML код следует скопировать в поле "Код баннера" в режиме HTML (визуальный редактор можно отключить).
    4. Код можно сократить оставив только непосредственно вывод баннер средствами JavaScript

    <script language="JavaScript" type="text/javascript">
    <!--
    var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
    if(hasRightVersion) { // if we've detected an acceptable version
    var oeTags = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'
    + 'width="468" height="60"'
    + 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">;'
    + '<param name="movie" value="/images/demo_link.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />'
    + '<embed src="/images/demo_link.swf" quality="high" bgcolor="#ffffff" '
    + 'width="468" height="60" name="demo_link" align="middle"'
    + 'play="true"'
    + 'loop="false"'
    + 'quality="high"'
    + 'allowScriptAccess="sameDomain"'
    + 'type="application/x-shockwave-flash"'
    + 'pluginspage="http://www.macromedia.com/go/getflashplayer">;'
    + '<\/embed>'
    + '<\/object>';
    document.write(oeTags); // embed the flash movie
    } else { // flash is too old or we can't detect the plugin
    var alternateContent = 'Alternate HTML content should be placed here.'
    + 'This content requires the Macromedia Flash Player.'
    + '<a href=http://www.macromedia.com/go/getflash/>Get Flash</a>';
    document.write('<img src="/images/demo_link.gif" width="468" heigh="60" alt="" />'); // insert non-flash content
    }
    // -->
    </script>
    <noscript>
    // Provide alternate content for browsers that do not support scripting
    // or for those that have scripting disabled.
    <img src="/images/demo_link.gif" width="468" heigh="60" alt="" />
    </noscript>

    Код определения версии Flash проигрывателя можно вынести в область <head></head> в шаблон сайта.

    Ниже приведен пример подобного кода:
    <script language="JavaScript" type="text/javascript">
    <!--
    // -----------------------------------------------------------------------------
    // Globals
    // Major version of Flash required
    var requiredMajorVersion = 8;
    // Minor version of Flash required
    var requiredMinorVersion = 0;
    // Revision of Flash required
    var requiredRevision = 0;
    // the version of javascript supported
    var jsVersion = 1.0;
    // -----------------------------------------------------------------------------
    // -->
    </script>
    <script language="VBScript" type="text/vbscript">
    <!-- // Visual basic helper required to detect Flash Player ActiveX control version information
    Function VBGetSwfVer(i)
    on error resume next
    Dim swControl, swVersion
    swVersion = 0

    set swControl = CreateObject("ShockwaveFlash.ShockwaveFlash." + CStr(i))
    if (IsObject(swControl)) then
    swVersion = swControl.GetVariable("$version")
    end if
    VBGetSwfVer = swVersion
    End Function
    // -->
    </script>
    <script language="JavaScript1.1" type="text/javascript">
    <!-- // Detect Client Browser type
    var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
    var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
    var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
    jsVersion = 1.1;
    // JavaScript helper required to detect Flash Player PlugIn version information
    function JSGetSwfVer(i){
    // NS/Opera version >= 3 check for Flash plugin in plugin array
    if (navigator.plugins != null && navigator.plugins.length > 0) {
    if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
    var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
    var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
    descArray = flashDescription.split(" ");
    tempArrayMajor = descArray[2].split(".");
    versionMajor = tempArrayMajor[0];
    versionMinor = tempArrayMajor[1];
    if ( descArray[3] != "" ) {
    tempArrayMinor = descArray[3].split("r");
    } else {
    tempArrayMinor = descArray[4].split("r");
    }
    versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
    flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
    } else {
    flashVer = -1;
    }
    }
    // MSN/WebTV 2.6 supports Flash 4
    else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
    // WebTV 2.5 supports Flash 3
    else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
    // older WebTV supports Flash 2
    else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
    // Can't detect in all other cases
    else {

    flashVer = -1;
    }
    return flashVer;
    }
    // If called with no parameters this function returns a floating point value
    // which should be the version of the Flash Player or 0.0
    // ex: Flash Player 7r14 returns 7.14
    // If called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
    function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
    {
    reqVer = parseFloat(reqMajorVer + "." + reqRevision);
    // loop backwards through the versions until we find the newest version
    for (i=25;i>0;i--) {
    if (isIE && isWin && !isOpera) {
    versionStr = VBGetSwfVer(i);
    } else {
    versionStr = JSGetSwfVer(i);
    }
    if (versionStr == -1 ) {
    return false;
    } else if (versionStr != 0) {
    if(isIE && isWin && !isOpera) {
    tempArray = versionStr.split(" ");
    tempString = tempArray[1];
    versionArray = tempString .split(",");
    } else {
    versionArray = versionStr.split(".");
    }
    versionMajor = versionArray[0];
    versionMinor = versionArray[1];
    versionRevision = versionArray[2];

    versionString = versionMajor + "." + versionRevision; // 7.0r24 == 7.24
    versionNum = parseFloat(versionString);
    // is the major.revision >= requested major.revision AND the minor version >= requested minor
    if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) {
    return true;
    } else {
    return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false );
    }
    }
    }
    return (reqVer ? false : 0.0);
    }
    // -->
    </script>

    Файлы баннера и подложки должны быть скопированы в нужное место на сайт.
    В данном случае не нужно загружать их средствами формы редактирования баннера(!).
    Пути к файлам баннера можно скорректировать непосредственно в коде.
    Обратите внимание, что вызов баннера Flash производится в двух местах: в теге <OBJECT> для объекта ActiveX и в теге <EMBED> для браузеров использующих плагины.
    5. Обратите внимание, так как вставка кода производится в поле "Код баннера", то стандартный учет кликов по Flash баннеру работать не будет.
    Таким образом, следует при создании баннера учесть этот момент и использовать некоторый слой с картинкой поверх баннера. Следует установить ссылку на эту картинку в соответствии с правилами формирования URL для баннеров (это можно посмотреть на любом уже загруженном обычном баннере).

    Наверх

    Как убрать "PHPSESSID=..." из URL?
    Чтобы избавиться от идентификатора сессии в URL, раскомментируйте строку в /.htaccess
    php_flag session.use_trans_sid off

    Если это не дает результата, необходимо изменить значение параметра session.use_trans_sid на Off непосредственно в php.ini на сервере.
    Удостоверьтесь, также, что значение параметра session.use_cookies установлено в On.

    Наверх

    Рекомендации по оптимизации сайта для поисковых систем
    Оптимизация сайта для поисковых систем является одним из важнейших элементов продвижения сайта в Интернете. Сегодня перед многими владельцами веб-ресурсов остро стоит проблема оптимизации сайта, поскольку основной поток посетителей приходит на сайт именно с поисковиков.
    Однако в процессе оптимизации сайта для поисковых систем неизбежно возникают вопросы:
    • Какая структура сайта является наиболее подходящей для обработки поисковыми машинами?

    • Каким образом оптимизировать страницы сайта для успешного позиционирования проекта в поисковых системах?

    • С помощью каких средств и инструментов можно добиться успешного решения задачи поисковой оптимизации сайта?
    Продукт «Битрикс: Управление сайтом» обеспечивает владельцев сайта всеми необходимыми инструментами для решения перечисленных выше задач. Чтобы грамотно провести оптимизацию веб-проекта, пользователям «Битрикс: Управление сайтом» не требуется самостоятельно править исходный код страницы или прибегать к услугам технических специалистов.
    Для оптимизации сайта пользователи могут использовать следующие возможности продукта:
    • Управление метаданными - специальные свойства, используемые для того, чтобы задать ключевые слова, описания страниц и разделов сайта. Данные свойства могут быть заданы пользователем с помощью визуального HTML -редактора продукта или обычного текстового редактора.

    • Заголовок окна браузера - с помощью кнопки «Редактировать свойства страницы» (при редактировании страницы в визуальном редакторе) можно создать заголовок, который будет отображаться в окне браузера. Для каждой страницы сайта может быть создан свой заголовок окна браузера. Кроме того, заголовок окна браузера может зависеть от заголовка, расположенного в теле страницы, а также динамической информации, просматриваемой на странице. Например, в заголовке окна браузера может выводиться название просматриваемой новости, раздела каталога товара или самого товара и т.д.

    • Стили заголовков страницы (H1, H2, H3) - управление стилями заголовков страницы осуществляется в режиме редактирования страницы в HTML -редакторе.

    • Исключение CSS кода из кода страницы для поисковых систем - таблица Каскадных Стилей может быть включена непосредственно в код страницы, либо подключена из внешнего файла, в зависимости от того, просматривается ли страница пользователем, либо запрошена поисковым роботом.

    • Никаких ограничений на внешний вид сайта - продукт «Битрикс: Управление сайтом» не накладывает никаких ограничений на внешний вид сайта: шаблон сайта может быть разработан как на основе таблиц, так и с использованием слоев. Таким образом, информационное наполнение страницы может быть помещено ближе к началу файла.

    • Понятные пользователю URL – обычно, при выводе динамической информации в публичной части сайта в URL страницы добавляются специальные параметры (например, ID новостей, товаров и т.д.). Например, mysite.com/news/index.php?ID=23. Стандартные механизмы продукта «Битрикс: Управление сайтом» позволяют преобразовать данные URL в удобный для восприятия пользователями вид (без использования mod_rewrite). Например, mysite.com/news/23.php.

    • Использование метаданных для динамического контента страниц - добавление ключевых слов и описаний для новостей, статей, элементов каталогов товаров и т.д. Специальные свойства элементов информационных блоков могут быть использованы для задания значений метаданных для товаров, новостей, элементов фотогалереи и т.д. Таким образом, любой товар торгового каталога, новость, вакансия, опубликованные на вашем сайте, будут проиндексированы по своим собственным ключевым словам и описаниям.

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

    • Ограничение активности поисковых роботов - в случае если некоторые поисковые роботы показывают слишком высокую активность на сайте, они могут быть блокированы с помощью встроенных средств системы на определенный администратором сайта период.

    • Возможность удаления идентификатора PHP сессии из адреса URL страницы - добавление ID сессии в URL страницы мешает индексации сайта поисковыми машинами. Вы можете запретить отображение ID сессии в URL страницы, добавив соответствующую строку в файл конфигурации системы или сервера.

    Наверх

    Как разбить постранично большой текст?
    При работе с компонентом bitrix:news.detail вы можете разбить текст на страницы при помощи тэга <BREAK />.
    Вставить соответствующий разделитель в текст, который будет выводиться компонентом 2.0, можно вручную или в визуальном редакторе.

    В других случаях вы можете модифицировать существующий компонент для постраничного вывода. Пример разбиения текста:
    Пример текста (в качестве разделителя страниц - #BREAK#):
    $TEXT = "test text, text
    #BREAK#
    test text, text
    text, text
    #BREAK#
    test text";


    Скрипт постраничного просмотра одного текста:

    $aPages = explode("#BREAK#", $TEXT);
    $res = new CDBResult;
    $res->InitFromArray($aPages);
    $res->NavStart(1);
    if($res->IsNavPrint())
    {
    echo "<p>";
    $res->NavPrint("Страницы");
    echo "</p>";
    }
    while($page = $res->Fetch())
    echo $page;

    Наверх

    Как сконвертировать таблицы моего сайта из MyISAM в InnoDB?
    Для конвертации всех таблиц "Битрикс" с MyISAM на InnoDB:

    1. Перейдите в настройки модуля "Монитор производительности" и включите отображение таблиц

    2. В появившемся пункте "Таблицы" в Панели производительности выделите все таблицы и переведите их в InnoDB
    Наверх

    Как изменить шаблон постраничного показа?
    Для постраничного показа можно использовать следующие параметры для изменения внешнего вида:
    NavPrint($Title, $Show_allways=false, $StyleText="text", $Template_path)
    $Title - заголовок (название записи);
    $Show_allways - если не установлен (false), то функция не будет выводить навигационные ссылки если все записи умещаются в одну страницу. Если true, то ссылки для постраничной навигации будут выводиться всегда. Необязательный, по умолчанию false;
    $StyleText - стиль шрифта;
    $Template_path - путь шаблону показа.

    Шаблон показа постраничной навигации формируется по умолчанию следующим образом (можно вынести в отдельный файл, скорректировать и указать путь к шаблону в вызове функции):
    <?
    echo('<font class="'. $StyleText.'">'. $title.' ');
    echo(($this->NavPageNomer-1)*$this->NavPageSize+1);
    echo(' - ');

    if($this->NavPageNomer != $this->NavPageCount)
    echo($this->NavPageNomer * $this->NavPageSize);
    else
    echo($this->NavRecordCount);

    echo(' '.GetMessage("nav_of").' ');
    echo($this->NavRecordCount);
    echo("\n<br>\n</font>");

    echo('<font class="'. $StyleText.'">');

    if($this->NavPageNomer > 1)
    echo('<a href="'. $sUrlPath.'?PAGEN_'. $this->NavNum.'=1'. $strNavQueryString.'#na<br>v_start'. $add_anchor.'">'. $sBegin.'</a> | <a<br>href="'. $sUrlPath.'?PAGEN_'. $this->NavNum.'='.($this->NavPageNomer-1). $strNavQueryString.'#nav_start'. $add_anchor.'">'. $sPrev.'</a>');
    else
    echo($sBegin.' | '. $sPrev);

    echo(' | ');
    $NavRecordGroup = $nStartPage;

    while($NavRecordGroup <= $nEndPage)
    {
    if($NavRecordGroup == $this->NavPageNomer)
    echo(''. $NavRecordGroup.' ');
    else
    echo('<a href="'. $sUrlPath.'?PAGEN_'. $this->NavNum.'='. $NavRecordGroup. $strNavQueryString.'#nav_start'. $add_anchor.'">'. $NavRecordGroup.'</a> ');
    $NavRecordGroup++;
    }

    echo('| ');

    if($this->NavPageNomer < $this->NavPageCount)
    echo ('<a href="'. $sUrlPath.'?PAGEN_'. $this->NavNum.'='.($this->NavPageNomer+1). $strNavQueryString.'#nav_start'. $add_anchor.'">'. $sNext.'</a> |&n bsp;<a<br>href="'. $sUrlPath.'?PAGEN_'. $this->NavNum.'='. $this->NavPageCount. $strNavQueryString.'#nav_start'. $add_anchor.'">'. $sEnd.'</a> ');
    else
    echo ($sNext.' | '. $sEnd.' ');

    //"All" section is being show with the code below
    if($this->bShowAll)
    echo ($this->NavShowAll? '| <a href="'. $sUrlPath.'?SHOWALL_'. $this->NavNum.'=0'. $strNavQueryString.'#<br>nav_start'. $add_anchor.'">'. $sPaged.'</a> ' : '| <a<br>href="'. $sUrlPath.'?SHOWALL_'. $this->NavNum.'=1'. $strNavQueryString.'# nav_start'. $add_anchor.'">'. $sAll.'</a> ');

    echo('</font>');
    ?>

    Наверх

    Настройка 404 ошибки
    Если у вас PHP установлен как CGI добавьте в корне сайта в файл .htaccess следующие строки:
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^[0-9a-zA-Z_/.-]+\.php$ /404.php
    ErrorDocument 404 /404.php

    Для PHP установленном как ISAPI в .htaccess достаточно добавить строку:
    ErrorDocument 404 /404.php

    После этого создайте в корне сайта файл 404.php (если его нет), который и будет являться обработчиком 404 ошибки.

    Наверх

    Как перенести сайт или корпоративный портал на другой компьютер?

    Указанные рекомендации справедливы для переноса системы в любом направлении: на локальную систему, с локальной на хостинг и с хостинга на хостинг.

    Рекомендуемый вариант

    • обновите исходную копию продукта до последней версии
    • убедитесь, что удаленный хостинг соответствует минимальным техническим требованиям продукта (можно проверить скриптом http://www.1c-bitrix.ru/download/files/scripts/bitrix_server_test.php)
    • в административном интерфейсе выберите: Настройки - Инструменты - Резервное копирование
    • создайте полный архив сайта, включающий ядро продукта, публичную часть и базу данных
    • закачайте по ftp на хостинг скрипт восстановления restore.php (ссылка на скрипт расположена в примечании на странице резервирования), устанавливать продукт «1C-Битрикс» не нужно
    • php должен иметь права на запись в корневую папку сайта (если не уверены, следует обратиться к администратору хостинга)
    • откройте в браузере http://<новый_адрес>/restore.php и следуйте указаниям мастера (можно будет закачать архив с локального диска или скачать со старого сайта, если оба варианта не подходят - закачайте архив сайта по ftp в рядом с restore.php)
    • на этапе подключения к БД укажите данные, которые предоставил хостер

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

    Использование штатных средств системы семейства UNIX

    • убедитесь, что удаленный хостинг соответствует минимальным техническим требованиям продукта (можно проверить скриптом http://www.1c-bitrix.ru/download/files/scripts/bitrix_server_test.php)
    • подключитесь к удалённому хостингу используя SSH клиент и перейдите в корень сайта командой cd <путь к корню сайта>
    • создайте дамп базы данных используя утилиту MySQL: mysqldump -h<DBHost> -u<DBLogin> -p<DBPassword> <DBName> > mysql_data.sql (значения DBHost, DBLogin, DBPassword, DBName соответствуют данным файла bitrix/php_interface/dbconn.php)
    • создайте архив данных используя утилиту tar: tar czf site.tgz .* *
    • используя ftp клиент закачайте файл site.tgz в корень сайта на новом хостинге и распакуйте используя SSH: tar xzf site.tgz
    • загрузите данные в базу данных: mysql -h<DBHost> -u<DBLogin> -p<DBPassword> <DBName> < mysql_data.sql (значения DBHost, DBLogin, DBPassword, DBName уточните у хостера)

    * Примечание: при использовании консольных утилит mysql и mysqldump чтобы избежать проблем с кодировками удобно использовать дополнительный параметр, который жёстко определяет кодировку: --default-character-set=cp1251 или --default-character-set=utf8 для сайтов в utf8.


    Наверх

    2048 пробелов в начале страницы возможно мешают работе поисковиков
    Все дело в ошибке Internet Explorer при обработке компрессированных страниц - иногда, при использовании компрессии на сайте, браузер отрезает первые 2048 символов.

    Этот блок 2048 символов введен для того, чтобы скорректировать ошибку в работе IE 6 с компрессированным контентом, этим исключается обрезание настоящего контента.
    При использовании модуля компрессии этот блок передается всего 2-мя символами.

    Поисковики запрашивают некомпрессированный контент и он отдается им без этих 2048 символов, поэтому на результаты индексирования этот блок не влияет.

    Наверх

    Как воспользоваться фильтром для свойства типа "Список"?
    Используйте слудующую конструкцию:

    1. Получите ID нужного Вам значения списка.
    $enum_list = CIBlockPropertyEnum::GetList(
    Array("SORT"=>"ASC", "NAME"=>"ASC"),
    Array("IBLOCK_ID"=>$BID, "CODE"=>"isMain", "VALUE"=>"Yes")
    );

    $arEnumIsMain = $enum_list->GetNext();
    $EnumID = $arEnumIsMain ["ID"];


    2. Используйте это значение в фильтре:
    array("PROPERTY"=>array("isMain"=>$EnumID))

    Наверх

    Как вставить flash-баннер?
    Ротация Flash баннеров производится аналогично как и графических. Только вместо картинки указывается HTML код. Необходимо выполнить следующие шаги:

    Ссылка для ролика создается в программе Macromedia Flash след. образом:
    1. Создается новый слой, который помещается поверх остальных.
    2. В него помещается прямоугольник, размерами и расположением закрывающий весь баннер.
    3. Прямоугольник преобразуется в символ (Convert to Symbol, Behavior: Button).
    4. Символ делается прозрачным (Properties, Color: Alpha = 0%).
    5. Записывается ссылка на клик по символу (Actions, getURL).
    6. В функции getURL необходимо вместо значений указать параметры link и target.

    в результате получится:
    on (release)
    {
    getURL(link, target);
    }

    Баннер загружается средствами продукта аналогично обычному графическому файлу в поле "Изображение:".

    Ссылка указывается стандартно как и для графического баннера.
    Аналогично указывается окно, в котором открывается ссылка.

    Наверх

    Как убрать из URL страницы знак вопроса?
    Да, для этого необходимо выполнить следующие шаги:
    1. создать в каталоге /news/ файл .htaccess со следующим содержимым:
    ErrorDocument 404 /news/404.php

    2. Создать в каталоге /news/ файл 404.php со следующим содержимым:
    <?
    $arrPath = pathinfo($_SERVER["REQUEST_URI"]);
    function initialize_params($url)
    {

    if (strpos($url,"?")>0)
    {
    $par = substr($url,strpos($url,"?")+1,strlen($url));
    $arr = explode("#",$par);
    $par = $arr[0];
    $arr1 = explode("&",$par);

    foreach ($arr1 as $pair)
    {
    $arr2 = explode("=",$pair);
    global $$arr2[0];
    $$arr2[0] = $arr2[1];
    }

    }

    }

    initialize_params($_SERVER["REQUEST_URI"]);
    require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
    $arr = explode("?",$arrPath["basename"]);
    $fname = $arr[0];

    if (strlen(trim($arrPath["extension"]))>0)
    {
    $arr = explode(".",$fname);
    $NEWS_ID = intval($arr[0]);

    if ($NEWS_ID>0)
    {
    $ID = $NEWS_ID;
    $APPLICATION->SetTitle("News Details");
    $sapi = php_sapi_name();
    if ($sapi=="cgi") header("Status: 200 OK"); else header("HTTP/1.1 200 OK");
    require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/iblock/iblock.php");
    CIblock::ShowPanel($IBLOCK_ID, $ID);
    include($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/include/news/news_detail.php"); // интерфейсный скрипт, который вызывается и в /news/detail.php
    }

    }
    require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog.php");
    ?>

    Наверх

    Как отключить определение языка пользователя
    В версии поставки системы в файле /index.php помещен скрипт, определяющий язык пользователя и производящий включение соответствующего файла: /<LANG_DIR>/index.php

    Самым логичным решением для вас является:
    1. определить русский язык в настройках сайта, как язык по умолчанию.
    2. скопировать содержимое каталога "/" с поддиректориями в корень сайта
    3. определить папку русского языка, как папку корня, "/"

    Наверх

    Опция: "Закрыть публичную часть сайта". Изменение приветственной страницы.
    Чтобы изменить вид этой страницы, необходимо создать файл с именем "/bitrix/php_interface/include/site_closed.php" для всех языков или для конкретного языка с именем "/bitrix/php_interface/"код языка"/site_closed.php".

    В этом файле можно разместить любое новое содержимое страницы с информацией о временном закрытии сайта (например, форма авторизации в дизайне сайта и т.п.).

    Наверх

     
    Технологии Эрмитаж
    BitrixMobile
    Автокеширование
    SiteUpdate
    Производительность Виртуальная машина
    Веб-окружение
    Результаты тестов
    Выбрать хостинг
    Веб-кластер
    Безопасность Проактивная защита
    Веб-антивирус
    Аутентификация

    Контакты Поиск Карта сайта
    Телефон: +7 (495) 229-14-41
    Оставайтесь с нами: Facebook Twitter Habrahabr VKontakte Developers Google 1+
    Как распознать QR код?Контакты QR


    © 2001-2012 «Битрикс», «1С-Битрикс». Работает на 1С-Битрикс: Управление сайтом.
    Английская версия Немецкая версия