Создал init.php в папке s1
Что не правильно регистрирую?
<?php
// регистрируем обработчик для индексации названий секций товаров для модуля поиска
AddEventHandler("search", "BeforeIndex", Array("MyClass", "BeforeIndexHandler"));
class MyClass {
// создаем обработчик события "BeforeIndex"
function BeforeIndexHandler($arFields) {
$fp = fopen("/var/www/u0339724/data/www/artponline.aspired.ru/bitrix/php_interface/s1/text.txt","a");
fwrite($fp,json_encode($arFields));
fclose($fp);
return $arFields;
}
}
то есть пробую вывести $arFields в файл. Но файл пустой(проверяю после переиндексации). Пробовал 3 строчки записи в файл вывести выше класса - пишет. То есть и функции записи в файл работают верно. Почему то метод BeforeIndexHandler класса не выполняется за переиндексацию ни разу. Вопрос почему?
Роман Грицук, идею понял. Попробую сейчас реализовать. Отпишусь что из этого получилось! Благодарю. И если можно ещё скажите пожалуйста смысл тогда галочки "Учитывать разделы при поиске"? Что она тогда делает? Поскольку логично же вроде как что она именно должна была повлиять на поиск элементов, если фраза встречается в имени их раздела?
Тот вопрос был не мой, я всего лишь в соответствии с правилами тостер изучил подобные вопросы, и указал самый близкий вопрос.
Вы имеете ввиду получит строчку запроса разбить по словам, сделать запросы по GetList а затем подкинуть результаты которых не хватает в arResult?
Меня интересует какой либо стандартный способ, неужели стандартный модуль битрикс-поиск не умеет искать по разделам товаров?
Alams Stoyne, вижу что Вы используете Add а я Update. При этом есть есть ли принципиальная разница.
Я проверяю ответ от Update и даже когда возникает проблема с ответом всё впорядке.
Я конечно попробую где можно сейчас Add использовать, но не рассчитываю что что то глобально поменяется, поскольку метод того же класса CSaleBasket.
function productUpdateInBasket($PRODUCT_ID=0,$QUANTITY=0) {
//// Выполняем запрос в корзину узнаём есть ли у неё элемент с Ид_товара
$a = CSaleBasket::GetList(// Выполняем запрос в корзину узнаём есть ли у неё элемент с Ид_товара
$arOrder = array(),
$arFilter = array("PRODUCT_ID"=>$PRODUCT_ID),
$arGroupBy = false,
$arNavStartParams = false,
$arSelectFields = array()
);
if (count($a->arResult)) {// Если есть получаем Ид этого элемента в корзине(может не совпадать с Ид товара)
$idProductInBasket = $a->arResult[0]["ID"];
$arFields_new = array("QUANTITY"=>$QUANTITY);
return CSaleBasket::Update($idProductInBasket, $arFields_new);
}
return false;
}
Иногда переставали обновляться некоторые товары, то есть вообще всё работает. Но иногда у какого нибудь товара добавленного из каталога в корзине перестаёт обновляться количество через ajax на указанную функцию.
Причём перестаёт обновляться как это видно в стандартном компоненте так и в шапке информация в которой запрашивается через
Ситуация исправляется если нажимать удалить товар и заново его добавить.
Причём кнопку удалить нужно нажать 2-3 раза и только после этого товар удаляется.
Для удаления используется
function productDeleteFromBasket($PRODUCT_ID=0) {
//// Выполняем запрос в корзину узнаём есть ли у неё элемент с Ид_товара
$a = CSaleBasket::GetList(// Выполняем запрос в корзину узнаём есть ли у неё элемент с Ид_товара
$arOrder = array(),
$arFilter = array("PRODUCT_ID"=>$PRODUCT_ID),
$arGroupBy = false,
$arNavStartParams = false,
$arSelectFields = array()
);
if (count($a->arResult)) {// Если есть получаем Ид этого элемента в корзине(может не совпадать с Ид товара)
$idProductInBasket = $a->arResult[0]["ID"];
$arFields_new = array("QUANTITY"=>0);
return CSaleBasket::Update($idProductInBasket, $arFields_new);
}
return false;
}
FanatPHP, так если Вам нужно открыть сайт php.net Вы вправе сделать это и без моего разрешения. Предполагаю, что продолжение данного диалога не может привести к практической пользе.
Что не правильно регистрирую?
<?php
// регистрируем обработчик для индексации названий секций товаров для модуля поиска
AddEventHandler("search", "BeforeIndex", Array("MyClass", "BeforeIndexHandler"));
class MyClass {
// создаем обработчик события "BeforeIndex"
function BeforeIndexHandler($arFields) {
$fp = fopen("/var/www/u0339724/data/www/artponline.aspired.ru/bitrix/php_interface/s1/text.txt","a");
fwrite($fp,json_encode($arFields));
fclose($fp);
return $arFields;
}
}
то есть пробую вывести $arFields в файл. Но файл пустой(проверяю после переиндексации). Пробовал 3 строчки записи в файл вывести выше класса - пишет. То есть и функции записи в файл работают верно. Почему то метод BeforeIndexHandler класса не выполняется за переиндексацию ни разу. Вопрос почему?
Переиндексацию делаю как на скрине.