Добрый день. Имеем сайт на Битриксе - megabitcomp.ru. На данном сайте реализовал два свойства - наши новинки и top-20. Хозяин магазина, жалуется - чтобы управлять данными свойствами очень неудобно - долго ищешь товар, который нужно исключить и очень долго ищешь товар, который нужно добавить. Решил ему облегчить жизнь и пока написал такую вот страничку - megabitcomp.ru/megabit/enew/ . Использовал catalog.section. Теперь мне нужно, чтобы при переходе по ссылке "Удалить" из таблицы b_iblock_element_property для этого IBLOCK_ELEMENT_ID удалялось свойство IBLOCK_PROPERTY_ID = 102. Очень слаб в php - хотелось бы наглядный примерчик, как это сделать. В дальнейшем необходимо доработать, чтобы можно было добавлять любой товар - введя его артикул. Спасибо.
При работе с битриксом вам не обязательно быть гуру php, достаточно синтаксис знать.И лучше даже вовсе не знать имена и структуру таблиц в БД, пока не сможете внятно объяснить, зачем вам это надо при наличии api. А вот api знать крайне желательно.
Но, если честно, сомневаюсь, что нужно даже это. Ибо интерфейс «эрмитаж» хорош тем, что позволяет значительную часть административных действий производить из публичной части. В шаблоне в начале каждой итерации цикла стоят такие волшебные строки:
Огромное спасибо - натолкнуло на верный путь. Только мне не нужно удалять элемент, а только свойство. Поковырялся и нашел функцию - CIBlockElement::SetPropertyValues. Оттуда же и пример взял, сварганил файлик php:
Код
<?
$ELEMENT_ID = $_GET['ELEMENT_ID']; // код элемента
$PROPERTY_CODE = "CML_NEW"; // код свойства
$PROPERTY_VALUE = 0; // значение свойства
// Установим новое значение для данного свойства данного элемента
$dbr = CIBlockElement::GetList(array(), array("=ID"=>$ELEMENT_ID), false, false, array("ID", "IBLOCK_ID"));
if ($dbr_arr = $dbr->Fetch())
{
$IBLOCK_ID = $dbr_arr["IBLOCK_ID"];
CIBlockElement::SetPropertyValues($ELEMENT_ID, $IBLOCK_ID, $PROPERTY_VALUE, $PROPERTY_CODE);
}
?>
Только мне выдается ошибка при его вызове:
Fatal error: Class 'CIBlockElement' not found in
Порылся в инете и нашел "очень умное" замечание, что при этой ошибке нужно использовать: CModule::IncludeModule("iblock");
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Title");
?>
<?
$ELEMENT_ID = $_GET['ELEMENT_ID']; // код элемента
$PROPERTY_CODE = "CML_NEW"; // код свойства
$PROPERTY_VALUE = 0; // значение свойства
// Установим новое значение для данного свойства данного элемента
$dbr = CIBlockElement::GetList(array(), array("=ID"=>$ELEMENT_ID), false, false, array("ID", "IBLOCK_ID"));
if ($dbr_arr = $dbr->Fetch())
{
$IBLOCK_ID = $dbr_arr["IBLOCK_ID"];
CIBlockElement::SetPropertyValues($ELEMENT_ID, $IBLOCK_ID, $PROPERTY_VALUE, $PROPERTY_CODE);
}
?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
Не помогает - все тоже:
Fatal error: Class 'CIBlockElement' not found in /home/megabitc/public_html/megabit/enew/nedit.php on line 11
Перед использованием модуля необходимо проверить установлен ли он и подключить его при помощи конструкции:
<? if(CModule::IncludeModule("iblock")) { //здесь можно использовать функции и классы модуля } ?>