انتقل إلى المحتوى الرئيسي

احصل على المنتجات من خلال عنوان 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 لمشروعك وApp Token في الزيارة الأولى، ثم افتح:

السيناريو

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);