# RESOURCE /v2/landing_pages

# Landing Page Management

این بخش شامل مدیریت کامل **صفحات فرود (Landing Pages)** است.   
این صفحات معمولاً برای کمپین‌های خاص یا صفحات ایستا استفاده می‌شوند و شامل مدیریت سئو (Meta Tags) به صورت تودرتو هستند.

<div class="api-docs" id="bkmrk-">  ---

</div>## 1. List Landing Pages (Index)

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Flanding_pag"><div class="endpoint-info"><div>**URL:** `/v2/landing_pages`</div><div>**Method:** <span class="method-get">GET</span></div><div>**Controller:** LandingPageController@index</div></div></div>**توجه:** در این متد از صفحه‌بندی (Pagination) استفاده نشده و تمام رکوردهای موجود در جدول برگردانده می‌شوند.

### مثال پاسخ

```json
{
  "status": true,
  "time": 1715016000,
  "data": [
    {
      "id": 1,
      "title": "Black Friday Sale",
      "slug": "black-friday",
      "image": "https://...",
      "published_at": "2024-11-20 00:00:00"
    },
    {
      "id": 2,
      "title": "Norouz Campaign",
      "slug": "norouz-1404",
      "image": "https://...",
      "published_at": "2025-03-20 00:00:00"
    }
  ]
}
```

<div class="api-docs" id="bkmrk--1"><div dir="ltr"></div>  ---

</div>## 2. Create Landing Page (Store)

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Flanding_pag-1"><div class="endpoint-info"><div>**URL:** `/v2/landing_pages`</div><div>**Method:** <span class="method-post">POST</span></div><div>**Controller:** LandingPageController@store</div></div></div>ایجاد صفحه فرود جدید به همراه متاتگ‌های سئو.

### بدنه درخواست (Body Parameters)

<div class="api-docs" id="bkmrk-field-type-descripti"><div class="table-wrapper"><table class="schema-table" dir="rtl"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>title</td><td>string</td><td>(الزامی) عنوان صفحه</td></tr><tr><td>slug</td><td>string</td><td>(الزامی) آدرس یکتا</td></tr><tr><td>body</td><td>text</td><td>محتوای HTML یا متن صفحه</td></tr><tr><td>image</td><td>string</td><td>لینک تصویر شاخص</td></tr><tr><td>published\_at</td><td>datetime</td><td>تاریخ انتشار</td></tr><tr><td>meta\_tag</td><td>string</td><td>(احتمالاً متاتگ کلی یا توضیحات متا)</td></tr><tr><td>metatags</td><td>array</td><td>آرایه‌ای از اشیاء برای جدول `page_metatags`.   
ساختار: `[{"key": "keywords", "value": "test"}]`</td></tr></tbody></table>

</div></div>**رفتار سیستمی:** متاتگ‌های ارسالی در آرایه `metatags` با تایپ `landing_page` در دیتابیس ذخیره می‌شوند.

<div class="api-docs" id="bkmrk--2">  ---

</div>## 3. Show Landing Page

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Flanding_pag-2"><div class="endpoint-info"><div>**URL:** `/v2/landing_pages/{id}`</div><div>**Method:** <span class="method-get">GET</span></div><div>**Controller:** LandingPageController@show</div></div></div>دریافت جزئیات کامل یک صفحه فرود.

<div class="api-docs" id="bkmrk--3">  ---

</div>## 4. Update Landing Page

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Flanding_pag-3"><div class="endpoint-info"><div>**URL:** `/v2/landing_pages/{id}`</div><div>**Method:** <span class="method-put">PUT/PATCH</span></div><div>**Controller:** LandingPageController@update</div></div></div>ویرایش اطلاعات صفحه فرود و مدیریت هوشمند متاتگ‌ها.

### منطق آپدیت متاتگ‌ها (Metatags Logic)

هنگام ارسال آرایه `metatags`، سیستم روی هر آیتم پیمایش می‌کند:

<div class="api-docs" id="bkmrk-%D8%A7%DA%AF%D8%B1-id-%D8%AF%D8%A7%D8%B4%D8%AA%D9%87-%D8%A8%D8%A7%D8%B4%D8%AF%3A-%D9%85">- **اگر `id` داشته باشد:** متاتگ موجود با آن ID را پیدا کرده و `key` و `body` (مقدار value) آن را آپدیت می‌کند.
- **اگر `id` نداشته باشد:** یک متاتگ جدید ایجاد می‌کند.   
    <span style="color: red; font-size: 0.9em;">(نکته کدنویسی: طبق کد موجود، متاتگ‌های جدیدی که در متد آپدیت ساخته می‌شوند، تایپ `article` می‌گیرند، در حالی که در متد Store تایپ `landing_page` بود).</span>

<div class="flowchart"><div class="flow-item">Update Request</div><div class="flow-arrow">↓</div><div class="flow-item-process">Update LandingPage Basic Info</div><div class="flow-arrow">↓</div><div class="flow-item-decision">Loop Metatags Array</div><div style="display: flex; justify-content: space-between; margin-top: 20px; direction: ltr;"><div style="width: 48%;"><div class="flow-arrow-label-left" style="text-align: center;">Has "id"?</div><div class="flow-item-process" style="background-color: #e3f2fd;">Find PageMetatag(id)  
Update key &amp; value</div></div><div style="width: 48%;"><div class="flow-arrow-label-right" style="text-align: center;">No "id"</div><div class="flow-item-process" style="background-color: #e8f5e9;">Create NEW PageMetatag  
(type='article')</div></div></div><div class="flow-arrow">↓</div><div class="flow-item-success">Return {status: true}</div></div>  ---

</div>## 5. Delete Landing Page

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Flanding_pag-4"><div class="endpoint-info"><div>**URL:** `/v2/landing_pages/{id}`</div><div>**Method:** <span class="method-delete">DELETE</span></div><div>**Controller:** LandingPageController@destroy</div></div></div>حذف صفحه فرود (و احتمالاً متاتگ‌های وابسته اگر Cascade در دیتابیس تنظیم شده باشد).