Вот так добавляем новый шаблон сайта не затирая существующие (не опримально, но доступно для понимания).
Единственным минусом такого подхода является то, что изменяются ID изначально установленных шаблонов. Если привязка кода к ID шаблонов отсутствует, то юзаем свободно.
| Код |
|---|
<?
/* сначала читаем существующие шаблоны для сайта s1 */
$rsTemplates = CSite::GetTemplateList("s1");
while($arTemplate = $rsTemplates->Fetch()) $result[] = $arTemplate;
$ssort=array(); /* здесь будем запоминать сортировки текущих шаблонов */
$res2=array(); /* это будет результирующий массив */
/* Здесь перебираем прочитанные шаблоны и выкидываем ненужное */
foreach($result as $template){
unset($template["ID"]; // в топку
unset($template["SITE_ID"]; // в топку
array_push($ssort,intval($template["SORT"]; /* сортировку шаблона добавляем в массив */
$res2[]=$template; /* в результирующий массив только нужные данные о текущих шаблонах */
}
/* Добавляем в результирующий массив данные о новом шаблоне */
$res2[] = array(
'CONDITION' => "CSite::InDir('/myfolder/')", /* отрабатывать только в директории /myfolder */
'SORT' => max($ssort)+100, /* сортировка нового шаблона будет на 100 больше, чем самая большая сортировка из текущих шаблонов */
'TEMPLATE' => "new_template" /* имя нового шаблона сайта. должно совпадать с названием директории, в которой находятся сами файлы шаблона */
);
/* конвейером обновляем все текущие шаблоны сайта + новый шаблон */
$obSite = new CSite();
$t = $obSite->Update("s1", array(
'TEMPLATE'=>$res2
));
?> |
А вот так через API кошерно отменяем шаблон сайта:
| Код |
|---|
<?
$rsTemplates = CSite::GetTemplateList("s1");
while($arTemplate = $rsTemplates->Fetch()) $result[] = $arTemplate;
$res2=array();
foreach($result as $template){
unset($template["ID"]; unset($template["SITE_ID"];
if ($template["TEMPLATE"] != "template_name") $res2[]=$template;
}
unset($result);
$obSite = new CSite();
$t = $obSite->Update("s1", array(
'TEMPLATE'=>$res2
));
?> |