Что такое список разделов в информационном блоке, это данные структурированные в виде дерева.
1c-bitrix
Замена CUser::GetParam()
/** * Возвращает все данные текущего пользователя, можно выбрать 1 параметр по ключу, можно указать ID другого пользователя * @param string $s_ParamKey - Ключ поля CUser * @param intval $i_UserID - ID пользователя данные которогонужно выбрать * @return mixed */ public static function getUserParams($s_ParamKey = false, $i_UserID = false) { global $USER; if( ! $i_UserID && ! $USER->IsAuthorized() ) return; $ar_User = CUser::GetByID( ( intval($i_UserID) > 0 ) ? intval($i_UserID) : $USER->GetID() )->Fetch(); return (!$s_ParamKey) ? $ar_User : $ar_User[$s_ParamKey]; }
Вместо ущербного CUser::GetParam()
Правильный site_closed.php 1С-Битрикс
/bitrix/php_interface/include/site_closed.php require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); CHTTP::SetStatus("503 Service Unavailable"); echo 'Проводятся технические работы на сайте ;)';
1С-Битрикс, добавить логотип к службе доставки CSaleDelivery::Add()
Чтобы добавить логотип при добавлении настраиваемой службы доставки, нужно добавить ключ: LOGOTIP
$ar_Fields = array( 'NAME' => 'New drlivery', ... 'LOGOTIP' => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"].$s_ImagesPatch) ); if($i_NewID = CSaleDelivery::Add($ar_Fields)) { }
Архитектура «D7»: модули, классы, жизненный цикл, презентация
Лайфхак для CUser::Register() [bitrix api]
CUser::Register() регистрирует нового пользователя и отправляет ему типовое письмо о успешной регистрации, смене пароля и тд. Иногда нужно чтобы это не происходило.
1) Можно удалить шаблоны (не рекомендуется)
2) Есть вариант при котором письма не отправятся, 7 параметр [string site_id = false], ID сайта почтовых шаблонов, если указать не существующий ID сайта, то и не будет шаблонов и как следствие писем.
global $USER; $USER->Register("admin", "", "", "123456", "123456", "a@m.ru", "no_send");
Проверка, пустая ли корзина у пользователя [bitrix api]
public static function isBasketEmpty() { $rs_Basket = CSaleBasket::GetList( array(), array( 'FUSER_ID' => CSaleBasket::GetBasketUserID(), 'LID' => SITE_ID, 'ORDER_ID' => 'NULL', 'MODULE' => 'catalog' ), false, false, array("ID") ); return ($rs_Basket->SelectedRowsCount() > 0); }
Особенность Add2BasketByProductID() [bitrix api]
Итак есть одна особенность у это функции, которая так облегчает нам жизнь. И так суть в том, что когда вы добавляете товар в корзину в кол-ве 10 штук, туда попадает 1 или 4 и т.д. В общем кол-во не всегда правильное и это сбивает с толку.
Рецепт для urlrewrite.php [bitrix]
Имеем URL вида
/dir/klaviatura-dlyanoutbuka-kbi080g017-010203399/
010203399 — какой-то ID нужный для выборки, регулярное выражение под эту строку для urlrewrite.php
array( "CONDITION" => "#^/dir/(([A-z-0-9]+)-[0-9]{0,9})+/#", "RULE" => "ID=$1", "ID" => "", "PATH" => "/dir/detail.php" )
Предыдущий следующий элемент массива по кругу [php]
Для формирования ссылок на детальных страниц нужно искать предыдущий и следующий элемент, для построения url.
Это первое способ, собрать все ID в массив и найти prev и next. Второй способ если у вас много элементов, использовать pagination (постраничну навигацию) с настройкой списка в 1 элемент.
Snippet для 1 случая:
// массив с ID $ar_ElementID = array(); // текущий ID (должен присутствовать в $ar_ElementID) $i_CurrentID = 777 // находим текущий ключ $i_KeyCurrent = array_search($i_CurrentID, $ar_ElementID); // кол-во элементов в массиве $i_CountElement = count($ar_ElementID); /* коротко */ // слудеющий ID $i_NextID = ( $i_KeyCurrent !== ($i_CountElement -1) ) ? $ar_ElementID[$i_KeyCurrent + 1] : 0; // предыдущий ID $i_PrevID = ( $i_KeyCurrent == 0 ) ? $ar_ElementID[$i_CountElement - 1] : $ar_ElementID[$i_KeyCurrent - 1]; /* длинно */ // слудеющий ID if($i_KeyCurrent !== ($i_CountElement -1) ) { $i_NextID = $ar_ElementID[ $i_KeyCurrent + 1 ]; } else { $i_NextID = 0; } // предыдущий ID if($i_KeyCurrent == 0 ) { $i_PrevID = $ar_ElementID[$i_CountElement - 1]; } else { $i_PrevID = $ar_ElementID[$i_KeyCurrent - 1]; }