# 自定义页

Page API 用于获取店铺的自定义页列表，以及单个自定义页的 HTML 内容。两个 endpoint 匿名访客都可以调用。

所有 Ajax API 请求应使用[多语言 URL](/zh-CN/docs/theme/references/ajax-api/#locale-aware-urls)，以便为访客提供一致的体验。

## 获取店铺自定义页列表

```text
GET /{locale}/api/front/pages
```

获取店铺的自定义页列表，包含每个页面的内容和 SEO 字段。

### 请求示例

**请求示例**

```javascript
fetch(window.SHOPLAZZA.routes.root + '/api/front/pages?page=1&per_page=10')
  .then((response) => response.json())
  .then((data) => {
    // do something...
  });
```

### 请求参数

- `page` number

  返回第几页结果。
- `per_page` number

  每页返回的页面数，默认 10。

### 响应

**数据结构 | 示例**

- `data` object

  响应数据主体。

  - `page` number

    当前页码。
  - `per_page` number

    每页返回的记录数。
  - `pages` object[]

    自定义页列表。

    *   Array \[

    - `id` number

      自定义页的 ID。
    - `store_id` number

      对象所属店铺的 ID。
    - `origin` string

      页面的来源。
    - `title` string

      自定义页的标题。
    - `content` string

      页面的 HTML 内容。
    - `status` number

      自定义页的状态，`1` 表示启用。
    - `created_at` string

      创建时间（ISO-8601 格式）。
    - `updated_at` string

      最后更新时间（ISO-8601 格式）。
    - `independent_seo` boolean

      是否独立管理 SEO 设置。
    - `url` string

      自定义页的相对地址。
    - `meta_title` string

      页面元信息中的 SEO 标题。
    - `meta_keyword` string

      页面元信息中的 SEO 关键词。
    - `meta_description` string

      页面元信息中的 SEO 描述。
    *   \]
  - `count` number

    返回的自定义页数量。
  - `has_more` number

    是否还有更多记录。
- `msg` string

  响应返回的结果说明。
- `state` number

  请求结果标识，`success` 或 `0` 表示请求成功。

```json
{
  "data": {
    "page": 1,
    "per_page": 10,
    "pages": [
      {
        "id": 13594997,
        "store_id": 2446407,
        "origin": "openapi",
        "title": "Ajax API Probe Page",
        "content": "<p>Sample custom page used for Ajax API documentation examples.</p>",
        "status": 1,
        "created_at": "1788356532",
        "updated_at": "1788356532",
        "independent_seo": false,
        "url": "/pages/ajax-api-probe-page",
        "meta_title": "Ajax API Probe Page",
        "meta_keyword": "",
        "meta_description": "Sample custom page used for Ajax API documentation examples."
      }
    ],
    "count": 1,
    "has_more": 0
  },
  "msg": "请求成功",
  "state": 0
}
```

## 获取单个自定义页

```text
GET /{locale}/api/front/pages/{page_id}
```

按 id 获取单个自定义页。

### 请求示例

**请求示例**

```javascript
fetch(window.SHOPLAZZA.routes.root + '/api/front/pages/13594997')
  .then((response) => response.json())
  .then((data) => {
    // do something...
  });
```

### 请求参数

- `page_id` number

  自定义页的 id。

### 响应

**数据结构 | 示例**

- `data` object

  响应数据主体。

  - `id` number

    自定义页的 ID。
  - `store_id` number

    对象所属店铺的 ID。
  - `origin` string

    页面的来源。
  - `title` string

    自定义页的标题。
  - `content` string

    页面的 HTML 内容。
  - `status` number

    自定义页的状态，`1` 表示启用。
  - `created_at` string

    创建时间（ISO-8601 格式）。
  - `updated_at` string

    最后更新时间（ISO-8601 格式）。
  - `independent_seo` boolean

    是否独立管理 SEO 设置。
  - `url` string

    自定义页的相对地址。
  - `meta_title` string

    页面元信息中的 SEO 标题。
  - `meta_keyword` string

    页面元信息中的 SEO 关键词。
  - `meta_description` string

    页面元信息中的 SEO 描述。
- `msg` string

  响应返回的结果说明。
- `state` number

  请求结果标识，`success` 或 `0` 表示请求成功。

```json
{
  "data": {
    "id": 13594997,
    "store_id": 2446407,
    "origin": "openapi",
    "title": "Ajax API Probe Page",
    "content": "<p>Sample custom page used for Ajax API documentation examples.</p>",
    "status": 1,
    "created_at": "1788356532",
    "updated_at": "1788356532",
    "independent_seo": false,
    "url": "/pages/ajax-api-probe-page",
    "meta_title": "Ajax API Probe Page",
    "meta_keyword": "",
    "meta_description": "Sample custom page used for Ajax API documentation examples."
  },
  "msg": "请求成功",
  "state": 0
}
```
