Система управления контентом 1С-Битрикс предоставляет множество функций для работы с файловой системой сайта. Одной из важных задач при разработке сайтов является корректная обработка индексных файлов каталога, которые автоматически загружаются при обращении к каталогу без указания конкретного файла. В Битрикс для решения этой задачи существуют функции GetDirectoryIndex
, GetDirIndex
, и GetDirIndexArray
, которые позволяют гибко настроить работу с индексными файлами сайта.

В этой статье мы подробно рассмотрим эти функции и приведем примеры их использования.
1. Функция GetDirIndex
Описание
Функция GetDirIndex
предназначена для того, чтобы вернуть имя индексного файла для указанного каталога сайта. Эта функция является важной частью работы с файловой системой, так как она позволяет автоматически определять индексный файл для каталога, не указывая его вручную.
Синтаксис
string GetDirIndex(string $path, string $DirIndex = false);
Параметры
- $path (string): Путь к каталогу относительно корня сайта, для которого необходимо определить индексный файл. Это обязательный параметр.
- $DirIndex (string, optional): Строка с именами возможных индексных файлов, разделенных пробелом, в порядке убывания приоритета. Например:
index.php index.html index.htm
. Этот параметр не является обязательным. Если он не задан, функция будет использовать значение по умолчанию из настроек веб-сервера или константыDIRECTORY_INDEX
.
Алгоритм работы
- Если параметр
$DirIndex
задан, то функция использует его для поиска индексного файла. Если параметр не задан, то будет использована константаDIRECTORY_INDEX
. - Константа
DIRECTORY_INDEX
может быть задана в конфигурационных файлах Битрикс (например, в файле/bitrix/php_interface/dbconn.php
или/bitrix/php_interface/init.php
). - Если ни одно из значений не задано, то будет использован список по умолчанию:
"index.php index.html index.htm index.phtml default.html index.php3"
. - Функция по очеред из файлов на сервере и возвращает первый найденный файл.
Пример использования
Предположим, что вам нужно получить имя индексного файла для каталога /about/
:
$indexFile = GetDirIndex("/about/");
echo "Индексный файл: " . $indexFile;
Если в каталоге /about/
существует файл index.html
, то эта функция вернет index.html
.
2. Функция GetDirectoryIndex
Функция GetDirectoryIndex
является «оберткой» для функции GetDirIndex
. Она выполняет ту же задачу, но использует её для обеспечения совместимости с более старой версией Битрикс. Если вы работаете с кодом, который использует эту старую функцию, она будет работать аналогично.
Пример использования
$indexFile = GetDirectoryIndex("/about/");
echo "Индексный файл: " . $indexFile;
Этот код также вернет индексный файл каталога /about/
, используя логику, описанную для GetDirIndex
.
3. Функция GetDirIndexArray
Функция GetDirIndexArray
возвращает массив возможных индексных файлов, которые могут быть использованы для поиска в каталоге. Она разбивает строку с именами файлов, разделенными пробелом, на отдельные элементы и возвращает их в виде массива.
Синтаксис
array GetDirIndexArray(string $strDirIndex = false);
Параметры
- $strDirIndex (string, optional): Строка с возможными именами индексных файлов, разделенными пробелами. Если не задано, используется значение по умолчанию.
Пример использования
Если вы хотите получить список возможных индексных файлов для каталога и проверить, какие из них существуют, можно использовать функцию GetDirIndexArray
следующим образом:
$dirIndexArray = GetDirIndexArray("index.php index.html index.htm");
foreach ($dirIndexArray as $file) {
echo "Пытаемся найти файл: " . $file . "
";
}
Этот код сначала разделит строку index.php index.html index.htm
на массив и выведет имена файлов по очереди.
Полный код всех функций
Для вашего удобства, вот полный код функций GetDirectoryIndex
, GetDirIndex
и GetDirIndexArray
, как он реализован в Битрикс:
function GetDirectoryIndex($path, $strDirIndex = false)
{
return GetDirIndex($path, $strDirIndex);
}
function GetDirIndex($path, $strDirIndex = false)
{
$doc_root = ($_SERVER["DOCUMENT_ROOT"] <> '' ? : $GLOBALS["DOCUMENT_ROOT"]);
$dir = GetDirPath($path);
$arrDirIndex = GetDirIndexArray($strDirIndex);
if (is_array($arrDirIndex) && !empty($arrDirIndex)) {
foreach ($arrDirIndex as $page_index)
if (file_exists($doc_root . $dir . $page_index))
return $page_index;
}
return "index.php";
}
function GetDirIndexArray($strDirIndex = false)
{
static $arDefault = array("index.php", "index.html", "index.htm", "index.phtml", "default.html", "index.php3");
if ($strDirIndex === false && !defined("DIRECTORY_INDEX"))
return $arDefault;
if ($strDirIndex === false && defined("DIRECTORY_INDEX"))
$strDirIndex = DIRECTORY_INDEX;
$arrRes = array();
$arr = explode(" ", $strDirIndex);
foreach ($arr as $page_index) {
$page_index = trim($page_index);
if ($page_index != '')
$arrRes[] = $page_index;
}
return $arrRes;
}
Заключение
Функции GetDirectoryIndex
, GetDirIndex
и GetDirIndexArray
являются важными инструментами для работы с индексными файлами в системе 1С-Битрикс. Они позволяют гибко настраивать поведение сайта при обращении к каталогам, обеспечивая поддержку различных веб-серверов и конфигураций. Используя эти функции, вы можете избежать ошибок в работе с файловой системой и улучшить производительность сайта, автоматизируя выбор правильного индексного файла.
С помощью этих функций можно легко адаптировать сайт под различные условия, что особенно важно для крупных проектов с множеством каталогов и динамическим контентом.