Работа с типами сайтов и скоупами
Мы еще обновляем эту страницу
Тут может не хватать некоторых данных — дополним в ближайшее время
Типы сайтов
Сайты могут быть следующих типов.
-
Основные:
- PAGE (от Home Page) - обычные сайты.
- STORE - магазины.
- SMN - сайты, использующиеся в разделе Сайты24 в административном разделе в БУС.
-
Дополнительные:
- KNOWLEDGE – базы знаний.
- GROUP – базы знаний групп соц.сети.
На данный момент не поддерживается расширение типов.
Скоупы
Помимо разделительной функции на уровне компонентов существует также разграничение по правам, получившее название скоупов.
Если вы работаете с основными типами, ничего делать не нужно.
Если с дополнительными, перед работой нужно установить скоуп. В случае rest сделать это можно, передав дополнительным параметром scope.
Пример
В примере дан метод получения списка страниц, но правило распространяется на любой другой метод, в том числе на работу с правами и изменениями сущностей.
JS
PHP
BX24.js
// callListMethod: Получает все данные сразу. Используйте только для небольших выборок (< 1000 элементов) из-за высокой нагрузки на память.
const params = {
select: ['ID', 'TITLE'],
filter: {
TITLE: '%услуги%',
SITE_ID: 205
},
order: {
ID: 'DESC'
}
};
try {
const response = await $b24.callListMethod(
'landing.landing.getList',
{ params, scope: 'knowledge' }
);
const items = response.getData() || [];
for (const entity of items) {
console.log('Entity:', entity);
}
} catch (error) {
console.error('Request failed', error);
}
// fetchListMethod: Выбирает данные по частям с помощью итератора. Используйте для больших объемов данных для эффективного потребления памяти.
try {
const generator = $b24.fetchListMethod('landing.landing.getList', { params, scope: 'knowledge' }, 'ID');
for await (const page of generator) {
for (const entity of page) {
console.log('Entity:', entity);
}
}
} catch (error) {
console.error('Request failed', error);
}
// callMethod: Ручное управление постраничной навигацией через параметр start. Используйте для точного контроля над пакетами запросов. Для больших данных менее эффективен, чем fetchListMethod.
try {
const response = await $b24.callMethod('landing.landing.getList', { params, scope: 'knowledge' }, 0);
const result = response.getData().result || [];
for (const entity of result) {
console.log('Entity:', entity);
}
} catch (error) {
console.error('Request failed', error);
}
try {
$response = $b24Service
->core
->call(
'landing.landing.getList',
[
'params' => [
'select' => [
'ID', 'TITLE'
],
'filter' => [
'TITLE' => '%услуги%',
'SITE_ID' => 205
],
'order' => [
'ID' => 'DESC'
]
],
'scope' => 'knowledge'
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error getting landing list: ' . $e->getMessage();
}
BX24.callMethod(
'landing.landing.getList',
{
params: {
select: [
'ID', 'TITLE'
],
filter: {
TITLE: '%услуги%',
SITE_ID: 205
},
order: {
ID: 'DESC'
}
},
scope: 'knowledge'
},
function(result)
{
if(result.error())
{
console.error(result.error());
}
else
{
console.info(result.data());
}
}
);
Предыдущая
Следующая