Свой обработчик для вызова ajax

#
Свой обработчик для вызова ajax
Есть задача написать php, который принимает параметром массив id товаров, для каждого товара необходимо найти название, картинку, ссылку на товар и цену, и возвращает json с этими данными на дополнительную обработку, использовать его планируется с помощью ajax. Возможно ли это и не подскажете, где посмотреть пример? И еще, с ценой и названием для товара проблем нет, но как получить url для картинки товара и ссылку на сам товар на сайте?
Модератор
#
Re: Свой обработчик для вызова ajax
Возможно, что касается AJAX, то посмотрите в настройках ТДС корзины обработку добавления в корзину.
А так принимаете ID товаров, в цикле получаете объекты ORM, по ним все формируете, массив преобразовываете в строку JSON и отдаете.
#
Re: Свой обработчик для вызова ajax
Я попытался, создал в структуре новый элемент, связал его с динамической страницей, но при обращении к ней возвращается обертка в виде header и другого, что-то типа
......................................
                      <div id="content">
         <div class="container">
            <div class="col-1">
               <!-- Вызов шаблона для текущей страницы -->
               {"products":[]}
то есть json возвращается внутри обертки, как можно от нее избавиться?

мой пример
$ids = array_map('intval', explode(',', $_REQUEST['product_ids']));
$products = array();

foreach ($ids as $id) {
  $product = Core_Entity::factory('Shop_Item', $id);
  $p = Array(
    'name' => $product->name,
    'url' => '',
    'price' => $product->price,
    'image_url' => ''
  );
  array_push($products, $p);
}

header('Content-Type: application/json';
die(json_encode(Array('products' => $products)));

и я так и не нашел, как получить из объекта товара ссылку на него и его изображение
Модератор
#
Re: Свой обработчик для вызова ajax
1. внесите код не в код дин. страницы, а в настройки.
2.
$sProduct_ids = Core_Array::getRequest('product_ids');

$ids = array_map('intval', explode(',', $sProduct_ids));

$products = array();
foreach ($ids as $id) {
  $oShop_Item = Core_Entity::factory('Shop_Item', $id);
  $p = Array(
    'name' => $oShop_Item->name,
    'url' => $oShop_Item->Shop->Structure->getPath() . $oShop_Item->getPath(),
    'price' => $oShop_Item->price,
    'image_url' => $oShop_Item->getSmallFileHref()
  );
  array_push($products, $p);
}

header('Content-Type: application/json');
die(json_encode(Array('products' => $products)));
#
Re: Свой обработчик для вызова ajax
HostCMS,
можно и в коде, только перед этим сделать ob_clean();
HostDev.pw - модули для HostCMS, Telegram: @hostdev
#
Re: Свой обработчик для вызова ajax
Круто, все работает. А подскажите, есть возможность не в xsl-шаблоне, а в общем htm-шаблоне определить, что сейчас за страница открыта, интересует конкретно страница товара и страница категории и получить для страницы товара id товара, а для страницы категории - id категории, а также получить список товаров, находящихся в корзине. Я хочу встроить js код на все страницы, чтобы каждая переменная была инициализированна, если она есть. Примерно так:
- На странице товара будет itemId и cartItems(если есть товары в корзине, если нет, то null), categoryid = null
- На странице категории будет categoryid и cartItems(если есть товары в корзине, если нет, то null), itemId = null
- Для всех остальных страниц будет cartItems(если есть товары в корзине, если нет, то null), categoryid = null и itemId = null
#
Re: Свой обработчик для вызова ajax
Ну или хотя бы как узнать набор id товаров в корзине?
#
Re: Свой обработчик для вызова ajax
Всем спасибо, я сделал через функцию, которая в xsl-шаблоне краткой корзины возвращает массив id товаров и вызывается в htm шаблоне
Авторизация