Парсинг товаров и работа с CMS:
139 Поиск товаров на Мойсклад
Функция позволяет искать продукты в API Moysklad по заданному запросу, используя токен авторизации.
Параметры, которые можно передать в функцию moysklad_search:

query - строка запроса для поиска продуктов.
token - токен авторизации Bearer для доступа к API.
Примеры использования:

"Пожалуйста, найди продукты по запросу 'ноутбук' с токеном 'Bearer your_token_here'."

"Ищи товары с запросом 'смартфон' и используй токен 'Bearer your_token_here' для авторизации."
174 Получение товаров из категории на сайте WordPress
Функция позволяет получить список товаров из указанной категории на сайте, работающем на WordPress. Вы можете указать категорию и URL сайта для получения информации о товарах.

Для работы функции добавьте в файл `functions.php` вот этот код:
```php
add_action('rest_api_init', function () {
register_rest_route('myshop/v1', '/products', array(
'methods' => 'GET',
'callback' => 'get_products_info',
'permission_callback' => '__return_true'
));
});
function get_products_info($request) {
$category = $request->get_param('category');
$args = array(
'status' => 'publish',
'limit' => -1
);
if ($category) {
$args['category'] = array($category);
}
$products = wc_get_products($args);
$data = array();
foreach ($products as $product) {
$data[] = array(
'id' => $product->get_id(),
'name' => $product->get_name(),
'price' => $product->get_price(),
'regular_price' => $product->get_regular_price(),
'sale_price' => $product->get_sale_price(),
'stock_status' => $product->get_stock_status(),
'stock_quantity' => $product->get_stock_quantity(),
'categories' => wp_list_pluck($product->get_category_ids(), 'name'),
'permalink' => get_permalink($product->get_id()),
'image_url' => wp_get_attachment_url($product->get_image_id()),
);
}
return new WP_REST_Response($data, 200);
}
```
Параметры, которые можно передать в функцию get_products_from_wordpress:

category - название категории товаров, из которой вы хотите получить информацию.
site_url - ссылка на сайт с WordPress без / в конце.
Примеры использования:

"Получить список товаров из категории Одежда с сайта https://myshop.com."
175 Получение товаров из категории на сайте Webasyst (Shop-Script)
Функция позволяет получить список товаров из указанной категории на сайте, работающем на платформе Webasyst. Вы можете указать URL сайта, ID категории, а также параметры для пагинации.

Для работы требуется создать в корне сайта файл `get_products.php` со следующим кодом:
```
<?php

// Подключение к Webasyst
require_once($_SERVER['DOCUMENT_ROOT'].'/wa-config/SystemConfig.class.php');
waSystem::getInstance(null, new waSystemConfig());

// Инициализация приложения Shop
wa('shop');

// Функция для получения товаров из категории
function getProductsByCategory($category_id, $limit = 10, $offset = 0) {
$collection = new shopProductsCollection('category/'.$category_id);
$products = $collection->getProducts('*', $offset, $limit);

$result = array();
foreach ($products as $product) {
// Получаем полный URL изображения
$image_url = '';
if ($product['image_id']) {
$image = shopImage::getById($product['image_id']);
if ($image) {
$image_url = $image->getUrl('thumb', true); // true для получения абсолютного URL
}
}

$result[] = array(
'id' => $product['id'],
'name' => $product['name'],
'price' => $product['price'],
'description' => $product['description'],
'image_url' => $image_url,
);
}

return $result;
}

// Обработка запроса
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$category_id = isset($_GET['category_id']) ? intval($_GET['category_id']) : 0;
$limit = isset($_GET['limit']) ? intval($_GET['limit']) : 10;
$offset = isset($_GET['offset']) ? intval($_GET['offset']) : 0;

if ($category_id > 0) {
$products = getProductsByCategory($category_id, $limit, $offset);

header('Content-Type: application/json');
echo json_encode(array(
'status' => 'success',
'data' => $products
));
} else {
header('HTTP/1.1 400 Bad Request');
echo json_encode(array(
'status' => 'error',
'message' => 'Inva.
```
Параметры, которые можно передать в функцию get_products_webasyst:

site_url - URL сайта без / в конце.
category_id - ID категории товаров, из которой вы хотите получить информацию.
limit - количество товаров для получения.
offset - смещение для пагинации, указывает, с какого товара начинать выборку.
Примеры использования:

"Пожалуйста, покажи мне 10 товаров из категории с ID 5 на сайте https://example.com, начиная с первого товара."
176 Получение товаров из категории на сайте Bitrix
Функция позволяет получить список товаров с сайта, работающего на платформе Битрикс, по заданным параметрам поиска. Вы можете указать URL сайта и параметры для фильтрации товаров.

Для работы функции создайте в корне сайта файл `api_products.php` со следующим кодом:
```
<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

// Проверка, что запрос является POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
die(json_encode(array("error" => "Only POST requests are allowed")));
}

// Подключение необходимых модулей
CModule::IncludeModule("iblock");

// Получение параметров из POST-запроса
$postData = json_decode(file_get_contents('php://input'), true);

$site_url = $postData['site_url'] ?? null;
$searchName = $postData['name'] ?? '';
$categoryId = $postData['category_id'] ?? null;
$minPrice = $postData['min_price'] ?? null;
$maxPrice = $postData['max_price'] ?? null;

// Формирование фильтра
$arFilter = array(
"IBLOCK_ID" => 2,
"ACTIVE" => "Y"
);

if (!empty($searchName)) {
$arFilter["%NAME"] = $searchName;
}

if ($categoryId) {
$arFilter["SECTION_ID"] = $categoryId;
$arFilter["INCLUDE_SUBSECTIONS"] = "Y";
}

// Выборка товаров
//$arSelect = array("ID", "NAME", "DETAIL_PAGE_URL", "PREVIEW_PICTURE", "PROPERTY_PRICE", "CATALOG_QUANTITY");
$arSelect = array("*", "PROPERTY_*");
$arResult = array();

$res = CIBlockElement::GetList(array(), $arFilter, false, array("nPageSize" => 50), $arSelect);

while($ob = $res->GetNextElement()) {
$arFields = $ob->GetFields();
$arProps = $ob->GetProperties();
$imageUrl = CFile::GetPath($arFields["DETAIL_PICTURE"]);

$arFilter = array("PRODUCT_ID" => $arFields["ID"]);
$price = CPrice::GetList(array(), $arFilter)->Fetch();
$productPrice = $price["PRICE"];

if ($minPrice !== null) {
if ($productPrice < $minPrice) {
continue;
}
}

if ($maxPrice !== null) {
if ($productPrice > $maxPrice) {
continue;
}
}

// Проверяем, начинается ли URL с "/upload/"
if (strpos($imageUrl, '/upload/') === 0) {
$imageUrl = $site_url . $imageUrl;
}

$arResult[] = array(
```
Параметры, которые можно передать в функцию get_products_bitrix:

site_url - URL сайта для поиска товаров без / в конце.
paraments - параметры поиска в виде: name:id:min_price:max_price:limit##name:id:min_price:max_price:limit##.
- name - название товара может быть прочерком - для поиска без названия .
- id - ID категории товара.
- min_price - минимальная цена товара.
- max_price - максимальная цена товара.
- limit - сколько товаров должно быть в ответе. По умолчанию 10.
Примеры использования:

"Пожалуйста, покажи мне товары с сайта https://example.com с параметрами: электроника:-:100:1000:5##одежда:2:50:500:10##."

"Получить список товаров с сайта https://myshop.com, где название товара - и ID категории 3, с минимальной ценой 200 и максимальной 1500."
208 Поиск товаров на сайте Joomla
Функция позволяет получить список продуктов из Joomla, отфильтрованных по заданным параметрам. Это может быть полезно для интеграции с интернет-магазинами на платформе Joomla.

Для работы функции создайте файл `search_products.php` в корне вашего сайта:
```
<?php
// search_products.php

$BOT_API_KEY = 'XXXXXXXXXXXXXXXXXX';
$IMG_URL = 'https://site.ru/';

header('Content-Type: application/json; charset=utf-8');

ini_set('display_errors', 0);

function getParam($name, $default = null) {
if (!isset($_GET[$name])) {
return $default;
}
$value = urldecode($_GET[$name]);
return htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
}

$product_name = getParam('product_name');
$category = getParam('category');
$min_price = getParam('min_price');
$max_price = getParam('max_price');
$limit = getParam('limit', 10);
$api_key = getParam('api_key');

if ($api_key !== $BOT_API_KEY) {
http_response_code(403);
echo json_encode(['error' => 'Wrong API key']);
exit;
}

define('_JEXEC', 1);
define('JPATH_BASE', __DIR__);
require_once JPATH_BASE . '/includes/defines.php';
require_once JPATH_BASE . '/includes/framework.php';

$app = JFactory::getApplication('site');
$db = JFactory::getDbo();

$prefix = $db->getPrefix();

$query = $db->getQuery(true);
$query->select('p.virtuemart_product_id, p.product_name, pp.product_price, c.category_name, m.file_url')
->from($db->quoteName($prefix . 'virtuemart_products_ru_ru', 'p'))
->join('INNER', $db->quoteName($prefix . 'virtuemart_product_prices', 'pp') . ' ON p.virtuemart_product_id = pp.virtuemart_product_id')
->join('INNER', $db->quoteName($prefix . 'virtuemart_product_categories', 'pc') . ' ON p.virtuemart_product_id = pc.virtuemart_product_id'.
Параметры, которые можно передать в функцию get_filtered_joomla_products:

joomla_url - URL Joomla сайта. Указывает адрес сайта, с которого необходимо получить данные.
joomla_api_key - API ключ для доступа к Joomla. Указывает ключ, необходимый для аутентификации при запросе данных.
product_name - ключевая фраза для поиска по названию товара/услуги.
category - ключевая фраза для поиска по категории товара/услуг.
min_price - минимальная цена продукта. Указывает нижнюю границу цены для фильтрации.
max_price - максимальная цена продукта. Указывает верхнюю границу цены для фильтрации.
limit - максимальное количество возвращаемых продуктов. По умолчанию равно 10.
Примеры использования:

При поиске товаров на сайте передавай так параметры поиска:
Адрес сайта: "https://site-name.ru"
Ключ АПИ: "XXXXXXXX"

Ключевые слова для поиска в категориях:
"Покрытие", "детских", "площадок", "резиновой", "крошки"

Ключевые слова для поиска товаров:
"SBR", "Eco", "Color", "EPDM", "Premium", "каучук", "sandwich"

Результат поиска оформи в виде короткого и информативного ответа на запрос клиента.

267 Загрузить содержимое страницы WordPress по ID
Функция предназначена для загрузки содержимого страницы WordPress, используя ее уникальный идентификатор ID. Это может быть полезно для получения информации о страницах на сайте, управляемом WordPress.
Параметры, которые можно передать в функцию wordpress_load_page:

site_url - URL сайта WordPress. Указывает адрес сайта, с которого нужно загрузить страницу.
username - имя пользователя для авторизации. Указывает имя пользователя, необходимое для доступа к API WordPress.
password - пароль для авторизации. Указывает пароль, необходимый для доступа к API WordPress.
page_id - ID страницы для загрузки. Указывает уникальный идентификатор страницы, которую нужно получить.
Примеры использования:

"Загрузи содержимое страницы с ID '42' на сайте 'https://example.com' с использованием имени пользователя 'admin' и пароля 'password123'."
268 Сохранить содержимое страницы WordPress по ID
Функция предназначена для сохранения нового содержимого страницы WordPress, используя ее уникальный идентификатор ID. Это может быть полезно для обновления информации на страницах сайта, управляемого WordPress.
Параметры, которые можно передать в функцию wordpress_save_page:

site_url - URL сайта WordPress. Указывает адрес сайта, на котором нужно сохранить изменения.
username - имя пользователя для авторизации. Указывает имя пользователя, необходимое для доступа к API WordPress.
password - пароль для авторизации. Указывает пароль, необходимый для доступа к API WordPress.
page_id - ID страницы для сохранения. Указывает уникальный идентификатор страницы, которую нужно обновить.
new_content - новое содержимое страницы. Указывает текст, который будет записан на страницу.
Примеры использования:

"Обнови страницу с ID '15' на сайте 'https://myblog.com' с авторизацией под пользователем 'editor', паролем 'securepass' и новым текстом 'Новая информация о странице.'".
Задайте нам вопрос
Укажите ваше имя, тему вопроса
Отправить сообщение
Мы ответим на все ваши вопросы и поможем с настройкой бота