Maksoft.net

feed.map.json съдържа дефиниции за всяка таблица, от която се подава информация чрез Feed API. Позволява настройка на полетата, връзките (JOIN), TTL, филтри и изчисляеми стойности.

Примерна структура:

{
  "pages": {
    "table": "pages",
    "site_key": "SiteID",
    "ttl": 120,

    "access_filter": "pages.SecLevel <= {ACCESS_LEVEL}",

    "fields": [
      "*",
      "CONCAT('/page.php?n=', n, '') AS long_url",
      "date_modified AS updated_at"
    ],

    "fields_to_exclude": [
      "PageURL"
    ],

    "computed": {
      "url": "feed_pageurl(n)",
      "lastmod": "feed_date('Y-m-d', date_modified)"
    },

    "joins": {
      "+text": {
        "type": "LEFT",
        "table": "pages_text",
        "on": "pages.n = pages_text.n",
        "fields": ["lang_id", "title", "content"],
        "nested": true
      }
    },

    "order": {
      "field": "sort_n",
      "direction": "ASC"
    }
  }
}

Описание на ключовете в feed.map.json:

Ключ Тип Описание
table string Име на основната таблица в базата данни.
site_key string Име на полето, което идентифицира сайта (например SiteID).
ttl integer Време за живот на кеша (в секунди).
access_filter string Филтър за ниво на достъп, използващ променливата {ACCESS_LEVEL}.
fields array Списък от полета, които ще бъдат включени в SELECT заявката. Поддържа * за всички полета.
fields_to_exclude array Списък от полета, които ще бъдат премахнати от резултата.
computed object Дефинира изчисляеми полета чрез функции от feed.safe.func.php.
joins object Дефинира JOIN връзки с други таблици (LEFT, INNER, RIGHT). Поддържа вложени резултати.
order object Дефинира сортиране по подразбиране.

Пример за няколко таблици:

{
  "articles": {
    "table": "articles",
    "site_key": "SiteID",
    "fields": ["*", "author", "date_published"],
    "computed": {
      "url": "feed_concat('/articles/', slug)"
    }
  },

  "gallery": {
    "table": "gallery",
    "site_key": "SiteID",
    "fields": ["*", "image_path", "caption"],
    "order": { "field": "sort_n", "direction": "ASC" }
  }
}

Примери за заявки

/feed/pages
/feed/pages?status=1
/feed/pages?preview>100
/feed/pages?title~услуги
/feed/pages?order_by=date_modified&order_dir=DESC
/feed/pages?debug=1

Примерен JSON отговор

{
  "meta": {
    "table": "pages",
    "site_id": 2,
    "limit": 50,
    "offset": 0,
    "count": 2,
    "access_level": 0,
    "result": "ok",
    "debug_sql": "SELECT * FROM `pages` WHERE `SiteID`=2 ..."
  },
  "data": [
    {
      "n": "2",
      "name": "Начало",
      "url": "https://www.maksoft.bg/",
      "lastmod": "2025-07-26"
    }
  ]
}

Пример за PHP потребление

<?php
$json = file_get_contents('https://maksoft.net/feed/pages?limit=10');
$data = json_decode($json, true);
foreach ($data['data'] as $row) {
    echo $row['name'] . " - " . $row['url'] . "<br>";
}
?>

Начало /  /  / Документация /  / Feed Конфигурационен файл
Максофт.БГ Максофт.НЕТ BrandIT