четверг, 8 декабря 2011 г.

Редактирование элементов всеми пользователями через компонент iblock.element.add.form

Срочно понадобилось исправить компонент iblock.element.add.form. Дело в том, что при редактировании элементов ему нужна обязательная привязка к пользователю. По создателю или через свойство элемента, но привязка обязательна, что не позволяет редактировать созданный элемент другим пользователям.

Итак, чтобы разрешить всем пользователям редактировать элементы в компоненте  iblock.element.add.form, в коде компонента (component.php) ищем строки:


// check type of user association to iblock elements and add user association to filter
if ($arParams["ELEMENT_ASSOC"] == "PROPERTY_ID" && strlen($arParams["ELEMENT_ASSOC_PROPERTY"]) && is_array($arResult["PROPERTY_LIST_FULL"][$arParams["ELEMENT_ASSOC_PROPERTY"]]))
{
if ($USER->GetID())
$arFilter["PROPERTY_".$arParams["ELEMENT_ASSOC_PROPERTY"]] = $USER->GetID();
else
$arFilter["ID"] = -1;
}
elseif ($USER->GetID())
{
$arFilter["CREATED_BY"] = $USER->GetID();
}


В коде меняем $USER->GetID() на null. Получится:


elseif ($USER->GetID())
{
$arFilter["CREATED_BY"] = null;
}


В настройках компонента ставим привязку по пользователю.
Всё. Теперь редактировать элементы смогут все.

пятница, 9 сентября 2011 г.

Замена ё на е в bitrix

Чтобы заменить при помощи php 'ё' на 'е' в статьях, достаточно в шаблоне компонента добавить файл result_modifier.php с таким кодом (для компонента news.list):
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?
$cnt = 0;
foreach ($arResult["ITEMS"] as $arItem):
$txt = str_replace("ё","е",$arItem["DETAIL_TEXT"]);
$arItem["DETAIL_TEXT"] = $txt;
$arResult["ITEMS"][$cnt]["DETAIL_TEXT"] = $txt;
$cnt++;
endforeach;
?>
В компоненте news.detail только что не нужно использовать цикл, т.к. в $arResult приходит один элемент.

четверг, 8 сентября 2011 г.

Подменю из элементов инфоблока в Битриксе

Иногда нужно сделать подменю из элементов инфоблока, т.е. чтобы подпунктами в меню автоматически становились создаваемые в инфоблоке элементы (материалы).

Для этого в файле .left_child.menu.php (пример, название подменю может отличаться) пишем:

<?
//меню из элементов
//id инфоблока
$yvalue = 6; 
$arSelect = Array("ID", "NAME");
$arFilter = Array("IBLOCK_ID" => IntVal($yvalue), "ACTIVE_DATE" => "Y", "ACTIVE" => "Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize" => 50), $arSelect);
while ($ob = $res -> GetNextElement()) {
$arFields[] = $ob -> GetFields();
//print_r($arFields);
}

$cnti = 0;
foreach ($arFields as $arItem):
$aMenuLinks[$cnti][0] = $arItem["NAME"];
$aMenuLinks[$cnti][1] = "detail.php?id=".$arItem["ID"]; //генерируемая ссылка на элемент
$aMenuLinks[$cnti][2] = "";
$aMenuLinks[$cnti][3] = "";
$aMenuLinks[$cnti][4] = "";
$cnti++;
endforeach;
?>

среда, 24 августа 2011 г.

Подсветка синтаксиса в bitrix

Иногда нужно быстро что-то поменять на странице сайта и просто-напросто лень открывать любимый редактор, лезть на ftp и т.д. Хочется сразу нажать "Изменить страницу как php(html)" и отредактировать. Но есть одно но. Стандартный функционал не предоставляет подсветку синтаксиса, не даёт делать нормальные отступы и т.д. И как оказалось есть решение как сделать в битриксе подсветку синтаксиса как на скриншоте слева.

Прикрепление файла(прайса) к материалам в bitrix.

Очень часто стоит задача "Прикрепить прайс к материалам" или "Сделать возможность прикреплять к новостям файл любого типа для скачивания".
Это совершенно не сложная задача, но у новичков зачастую возникают с этим трудности. Поэтому давайте разберёмся как же это сделать.