الحصول على المنتجات من خلال عنوان URL للصفحة
في هذا المثال، نوضح كيفية استرجاع جميع المنتجات التي تنتمي إلى صفحة كتالوج معينة باستخدام واجهة برمجة التطبيقات OneEntry.
✅ هدف السيناريو:
- الاتصال بواجهة برمجة التطبيقات OneEntry
- استرجاع المنتجات المفلترة حسب عنوان URL لصفحة الكتالوج الخاصة بها
- مراجعة قائمة المنتجات المعادة
✅ ما تحتاجه:
- PROJECT_URL و APP_TOKEN صالحين للمصادقة مع واجهة برمجة التطبيقات OneEntry.
- صفحة كتالوج تم تكوينها في OneEntry مع عنوان URL معروف (مثل "products").
- منتجات مخصصة لتلك الصفحة الكتالوج.
📌 مهم:
- تعيد
{ items, total }— وليس مصفوفة عادية. - يجب أن يتطابق معلمة url مع pageUrl لصفحة من نوع catalog_page.
- لا تتضمن هذه الأمثلة معالجة الأخطاء.
- يمكنك إدارة الأخطاء باستخدام كتلة try-catch أو من خلال استخدام بناء مثل await Promise.catch((error) => error).
📚 انظر في الوثائق:
📦 مرجع SDK:
جربها مباشرة
قم بتشغيل هذه الطريقة بشكل تفاعلي في JS SDK sandbox — قم بتوصيل عنوان URL لمشروعك و رمز التطبيق عند الزيارة الأولى، ثم افتح:
- الحصول على المنتجات من خلال عنوان URL للصفحة — في هذا المثال، نوضح كيفية استرجاع جميع المنتجات التي تنتمي إلى صفحة كتالوج معينة باستخدام واجهة برمجة التطبيقات OneEntry.
السيناريو
1. استيراد defineOneEntry من SDK وتعريف PROJECT_URL و APP_TOKEN
مثال:
import { defineOneEntry } from 'oneentry';
import type { IProductsQuery } from 'oneentry/dist/products/productsInterfaces';
const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';
2. إنشاء عميل API باستخدام defineOneEntry()
مثال:
const { Products } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});
3. تعريف معلمات الطلب
مثال:
const userQuery: IProductsQuery = {
offset: 0,
limit: 20,
sortKey: 'price',
sortOrder: 'ASC',
};
4. الحصول على المنتجات من خلال عنوان URL للصفحة باستخدام Products.getProductsByPageUrl()
مثال:
const data = await Products.getProductsByPageUrl('products', [], 'en_US', userQuery);
if ('statusCode' in data) {
throw new Error(data.message);
}
console.log('Products: ', data.items);
console.log('Total: ', data.total);
النتيجة:
{
"items": [
{
"id": 13,
"attributeSetIdentifier": "product",
"localizeInfos": {
"title": "Red ball"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 1,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 300,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"categories": [
"products"
],
"paymentStages": null,
"rating": {},
"isPositionLocked": false,
"attributeValues": {
"price": {
"type": "real",
"value": "300",
"isIcon": false,
"position": 0,
"additionalFields": {},
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 1,
"additionalFields": {},
"isProductPreview": false
},
"image": {
"type": "image",
"value": [],
"isIcon": false,
"position": 2,
"additionalFields": {},
"isProductPreview": true
}
},
"moduleFormConfigs": [],
"discountConfig": {}
},
{
"id": 14,
"attributeSetIdentifier": "product",
"localizeInfos": {
"title": "Green ball"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 2,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 340,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"categories": [
"products"
],
"paymentStages": null,
"rating": {},
"isPositionLocked": false,
"attributeValues": {
"price": {
"type": "real",
"value": "340",
"isIcon": false,
"position": 0,
"additionalFields": {},
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 1,
"additionalFields": {},
"isProductPreview": false
},
"image": {
"type": "image",
"value": [],
"isIcon": false,
"position": 2,
"additionalFields": {},
"isProductPreview": true
}
},
"moduleFormConfigs": [],
"discountConfig": {}
},
{
"id": 15,
"attributeSetIdentifier": "product",
"localizeInfos": {
"title": "Orange ball"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 3,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 400,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"categories": [
"products"
],
"paymentStages": null,
"rating": {},
"isPositionLocked": false,
"attributeValues": {
"price": {
"type": "real",
"value": "400",
"isIcon": false,
"position": 0,
"additionalFields": {},
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 1,
"additionalFields": {},
"isProductPreview": false
},
"image": {
"type": "image",
"value": [],
"isIcon": false,
"position": 2,
"additionalFields": {},
"isProductPreview": true
}
},
"moduleFormConfigs": [],
"discountConfig": {}
}
],
"total": 3
}
المثال النهائي
// 1. Import defineOneEntry from SDK and define PROJECT_URL and APP_TOKEN
import { defineOneEntry } from 'oneentry';
import type { IProductsQuery } from 'oneentry/dist/products/productsInterfaces';
const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';
// 2. Creating an API client with [defineOneEntry()](/docs/index/#Installation)
const { Products } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});
// 3. Define request parameters
const userQuery: IProductsQuery = {
offset: 0,
limit: 20,
sortKey: 'price',
sortOrder: 'ASC',
};
// 4. Get products by page URL with [Products.getProductsByPageUrl()](/docs/products/getProductsByPageUrl)
const data = await Products.getProductsByPageUrl('products', [], 'en_US', userQuery);
if ('statusCode' in data) {
throw new Error(data.message);
}
console.log('Products: ', data.items);
console.log('Total: ', data.total);