За нас

Feed API предоставя JSON достъп до съдържанието на Maksoft CMS за външни приложения, сайтове и интеграции. Позволява четене на данни от таблици, филтриране, сортиране и ограничаване на достъпа според нивото на потребителя.
https://maksoft.net/feed/{table_name}?{параметри}
или
https://maksoft.net/feed/{site_id}/{table_name}?{параметри}
| Параметър | Тип / Формат | Описание | Пример |
|---|---|---|---|
| limit | integer | Максимален брой записи (по подразбиране 50, максимум 10000) | limit=100 |
| offset | integer | Брой записи за прескачане (пагинация) | offset=200 |
| debug | 0 / 1 | Активира debug режим и показва SQL заявката | debug=1 |
| order_by | string | Поле, по което се сортира резултатът | order_by=date_modified |
| order_dir | ASC / DESC | Посока на сортиране | order_dir=DESC |
| site_id | integer | Идентификатор на сайта (ако не е зададен в URL) | site_id=2 |
API-то поддържа динамично филтриране на резултатите чрез URL параметри. Всички филтри се интерпретират като SQL WHERE условия.
| Оператор | Описание | Пример |
|---|---|---|
| = | Точно съвпадение | status=1 |
| > | По-голямо от | preview>100 |
| < | По-малко от | id<500 |
| >= | По-голямо или равно | preview>=1000 |
| <= | По-малко или равно | views<=5000 |
| != / <> | Различно от | status!=0 |
| ~ | Текстово съвпадение (LIKE %value%) | title~Новини |
Операторите могат да бъдат част от името на параметъра (preview>100) или да са URL-кодирани (preview%3E100).
?order_by=date_modified&order_dir=DESC
Може да бъде дефинирано и в mapping конфигурацията:
{
"order": {
"field": "sort_n",
"direction": "ASC"
}
}
"computed": {
"url": "feed_pageurl(n)",
"lastmod": "feed_date('Y-m-d', date_modified)"
}
Тези функции се дефинират във feed.safe.func.php и се прилагат автоматично при извеждането на данните.
"fields_to_exclude": ["PageURL", "phpvars"]
Позволява изключване на определени колони от резултата.
"access_filter": "pages.SecLevel <= {ACCESS_LEVEL}"
Ограничава достъпа според нивото на потребителя ($o_page->_user['AccessLevel']).
/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
{
"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"
}
]
}
...Feed API слой за екпорт
Инсталацията под Windows на Maksoft CMS изисква инсталация на Laragon или XAMPP (за Apache и MySQL), сваляне на PHP файловете от github.com/maksoftnet/ms, импорт на база данни maksoft.sql, инсталиране на зависимостите с composer.
Основно процесът преминава през
my.ini
[mysqld]
max_allowed_packet = 2048M
tmp_table_size=256M
max_heap_table_size=256M
net_read_timeout = 600
net_write_timeout = 600
innodb_buffer_pool_size=512M
php.ini
memory_limit = 512M
max_execution_time = 300
post_max_size = 512M
upload_max_filesize = 512M
...Инсталация на Maksoft CMS
Версия 4.0 превръща Maksoft CMS от мултисайт система за управление на интернет сайтове в глобална мрежа за управление и разпространение на информация в интернет между различни платформи.
MBT (Model - Business - Transport) архитектура.
Платформата се изгражда на Node.Js + Type Script.
Това е централната система, която приема, обработва, архивира и дистрибутира данни между:
локални CMS (Maksoft CMS 1.0 до 3.0, WordPress, PrestaShop)
социални мрежи
външни API-та
мобилни приложения
Тя предоставя REST API, Webhooks, cron задачи и съхранява данните едновременно в свързани релационна PostgreSQL и нерелационна MongoDB бази данни или в S3-совместимо хранилище.
PostgreSQL е структурираното ядро, а MongoDB е динамичното, специфично разширение.
| Действие | PostgreSQL | MongoDB |
|---|---|---|
| Създаване на нова страница | pages таблица |
— |
| Добавяне на WooCommerce еквивалент | връзка platform_links |
platformData документ |
| Импорт от PrestaShop | products таблица |
допълнителни атрибути в JSON |
| Социална активност или log събитие | — |
|
Всички базови данни са в PostgreSQL (включително page_id)
MongoDB пази „разширения“ по page_id (или external_ref)
Business слоят решава кога да ползва едното или другото
REST/GraphQL API-то ги агрегира при нужда
За импорт на даннните е нужно да разрешите на MySQL в my.ini импорт на големи пакети, да създадем БД maksoft като команда за импорт mysql -u root maksoft < maksoft.sql и да дадем права на потребител maksoft за достъп от скрипт.
Създайте база данни (БД) maksoft.
Създайте потребител maksoft с достъп до БД maksoft
Задайте избраната парола за достъп в конфигурационния файл lib/config.php
След това може да импортирате (seed) реална база или само структурата.
АК импортиране база и данни, базата данни ще бъде голяма и препоръката е maksoft.sql да се инсталира чрез команден ред. Предварително в
MySQL конфигурация
C:/xampp/mysql/bin/my.ini
трябва да разрешим големи пакети
[mysqld]
max_allowed_packet = 2048M
tmp_table_size=256M
max_heap_table_size=256M
След това от CommandShell (cmd) стартиран като Administrator отидете в папка
cd c:/xampp/mysql/bin/mysql
изпълнете:
mysql -u root maksoft < maksoft.sql
Изчакайте. Процесът може да отнеме време повече от 10 минути.
Прогреса можете да следите в phpMyAdmin
Инсталация на PHP платформата
git clone https://github.com/maksoftnet/ms
Изпълнете клонирането от работната папка на Xampp c:/xampp/htdocs.
След края на клонирането ще имате папка c:/xampp/htdocs с Maksoft CMS.
...Инсталация на Maksoft CMS от Github
Бързината на сайта вече е ключов фактор за SEO оптимизация. С новия сървърен кеш в Maksoft CMS, страниците се зареждат до 5 пъти по-бързо и поемат 20+ пъти повече трафик. Това повишава рейтинга в Google и подобрява потребителското изживяване – особено при кампании и пикова посещаемост.
Новата функционалност кешира всяка често посещавана страница за период от 5 минути. Това позволява на следващите потребители да я заредят почти мигновено, без допълнително натоварване върху сървъра. Резултатът: по-бърз сайт, по-добри позиции и по-висока SEO ефективност.
Сървърният кеш се комбинира с MemCache, който управлява динамичните компоненти на сайта, и клауд CDN кеширане, което осигурява светкавична скорост за глобалните потребители. Това дава предимство пред конкуренцията при SEO оптимизация на сайтове с голям трафик.
Излезте от административен режим и отворете често посещавана страница – ще забележите моментално по-бързо зареждане. В административен режим кеширането е изключено, за да работите винаги с най-актуалното съдържание.
Целта е постигане на над 99.99% uptime при всякакво натоварване. Това е решаващ компонент от цялостната SEO оптимизация стратегия, особено при активно развиващи се сайтове с голямо съдържание и рекламна активност.
Поискайте оферта за Външна Google SEO оптимизация на интернет сайт с Фейсбук Трафик Фуния!
Това ще допълни вътрешната сайт оптимизация на Вашия сайт с органичен линк билдинг- връзки създадени към Вашия сайт от други сайтове и социални мрежи. Нещо повече- това ще сподели актуалната информация от Вашия сайт в социални мрежи- Фейсбук, което привлича нови клиенти и има косвен ефект за Вашите позиции в Гугъл.
Повече информация, инструмент за планиране на ключови думи и цени има ТУК.
...5х по-бърз сайт за SEO с нов кеш от Maksoft CMSLaragon или Xampp са наличните сървъри, които ще ви създадат локална работна среда под Windows или iOS.
Инсталирайте Laragon от Laragon.org
Инсталирайте XAMPP от- www.apachefriends.org/
Инсталация на XAMPP включва работна среда apache2 и MySQL нужна за работа с Maksoft CMS.
Стандартно се инсталира на c:/xampp като при наличие на стара версия следва да преименувате старата папка, защото ще я създаде отново.
...XAMPP или Laragon Инсталация с Apache и MySQLМаксофт е основа на headless CMS система. Целта на новия рендерер на теми е да осигури лесна адаптация и визуализация на сайтове, създадени както за legacy Maksoft CMS, така и за нови дизайни и теми, писани за Maksoft CMS, WordPress, Joomla и други системи.
Темите работят върху стандартизиран слой от данни (ViewData), предоставен от CMS. Темата не комуникира директно с базата данни или CMS класове.
Създаването на нова тема започва със създаване на директория в /themes/ms/... и записване на основния index.php файл в нея.
index.php зарежда engine bootstrap файла /themes/ms/_bootstrap.php, получава готовите ViewData променливи и използва предоставения обект $o_page за достъп до CMS hooks.
Темата се регистрира в CMS чрез запис в таблица Templates. Това я прави достъпна за конкретен сайт (SiteID) или за всички сайтове (SiteID = 0).
CSS/JS активите се управляват централизирано чрез cms_assets.php, което предотвратява дублиране на зависимости и осигурява контрол на версиите.
/themes/themes е стандартният слой за рендериране на Maksoft CMS.
/themes не заменя legacy /Templates, а съществува паралелно с него за backward compatibility.
CMS подава ViewData → Theme engine рендерира → Theme определя структурата
view ├ context ├ auth ├ user ├ user_context ├ site ├ page │ └ streams │ ├ main │ │ └ items[] │ └ subpages │ └ items[] └ theme
streams.main.items съдържа основните content blocks на страницата.
streams.subpages съдържа relation stream с подстраниците. Темата решава къде да го визуализира.
/themes
/ms
/wp
/joomla
Всеки engine определя:
/themes/ms/themes/ms
_bootstrap.php
theme.json
cms_assets.php
functions.php
/helpers
block_dom.php
meta_tags.php
footer_inc.php
breadcrumbs.php
/blocks
text.php
image.php
/components
menu.php
navigation.php
subpages.php
/base
theme.json
/none
theme.json
index.php
meta_tags.php
footer_inc.php
/blocks
text.php
image.php
/components
menu.php
navigation.php
subpages.php
/layout
head.php
header.php
footer.php
scripts.php
/partials
menu.php
breadcrumbs.php
banners.php
/assets
/css
/js
theme.js
/blocks
text.js
image.js
/components
subpages.js
/images
README.md
Blocks са основните content елементи на страницата.
Те се намират в:
$page['streams']['main']['items']
Всеки block съдържа:
[
'id' => 1,
'type' => 'text',
'data' => [...],
'dom' => [
'data-block' => 'text',
'data-id' => '1',
'data-editable' => '0'
]
]
Blocks се рендерират чрез:
BlockResolver чете $page['streams']['main']['items'], намира подходящия template и връща HTML.
theme/blocks/{pageType}/{block}.php
theme/blocks/{block}.php
themes/ms/blocks/{pageType}/{block}.php
themes/ms/blocks/{block}.php
Components са визуални елементи, които не са задължително част от основния body content.
Примери:
Components позволяват на темата да контролира къде точно се рендерира даден елемент.
Subpages не се добавят автоматично в streams.main.items.
Официалният source за подстраници е:
$page['streams']['subpages']
Примерна структура:
$page['streams']['subpages'] = [
'id' => 'children',
'name' => 'subpages',
'kind' => 'relation',
'binding' => 'strong',
'role' => 'subpages',
'display' => [
'enabled' => 1,
'layout' => 'auto',
'columns' => 3,
'elements' => ['image', 'title', 'excerpt'],
'links' => 'full',
'limit' => null,
'order' => 'manual'
],
'items' => [...]
];
Темата рендерира subpages чрез:
Това позволява на темата да избере дали подстраниците да се покажат:
Default renderer-ът за subpages се намира в:
/themes/ms/components/subpages.php
Темата може да го презапише чрез:
theme/components/subpages.php
main_content и sub_pages са отделни render hooks.
Препоръчителна структура в тема:
<main>
<?= $o_page->hook('main_content') ?>
<?= $o_page->hook('phpcode') ?>
<?= $o_page->hook('sub_pages') ?>
<?= $o_page->hook('pageurl') ?>
</main>
Така темата запазва контрол върху реда и мястото на отделните секции.
CMS добавя стандартни DOM markers:
data-block data-id data-editable
DOM markers се генерират чрез helper:
block_dom($block)
Пример:
<section<?= block_dom($block) ?>>
...
</section>
Резултат:
<section data-block="text" data-id="1" data-editable="0">
...
</section>
DOM markers са официалният JS API между CMS и темата.
Темите могат да инициализират JS поведение чрез DOM markers.
document.querySelectorAll("[data-block]").forEach(function(el) {
var type = el.getAttribute("data-block");
if (window.Theme && Theme.blocks && typeof Theme.blocks[type] === "function") {
Theme.blocks[type](el);
}
});
Пример:
window.Theme = window.Theme || {};
Theme.blocks = Theme.blocks || {};
Theme.blocks.text = function(el) {
console.log("Text block init", el.getAttribute("data-id"));
};
За components може да се използва отделен namespace:
window.Theme = window.Theme || {};
Theme.components = Theme.components || {};
Theme.components.subpages = function(el) {
console.log("Subpages component init", el.getAttribute("data-id"));
};
Assets се управляват на две нива.
/themes/ms/cms_assets.php
Дефинира споделени зависимости:
theme/assets/css theme/assets/js theme/assets/images
Темите не трябва да enqueue-ват assets директно в templates. Те използват asset registry и hooks.
theme.jsontheme.json е незадължителен конфигурационен файл. CMS използва overwrite cascade.
Използва се първият намерен theme.json, тръгвайки от директорията на темата нагоре.
/themes/ms/base/none/theme.json /themes/ms/base/theme.json /themes/ms/theme.json /themes/theme.json
Maksoft Template Language (MTL) е compatibility и extension слой върху стандартните PHP templates.
MTL позволява legacy PHP include файлове като edit.php, PageURL и phpCode да декларират JavaScript, CSS и други embedded code blocks без да нарушават нормалното PHP изпълнение.
MTL не заменя PHP. Legacy Maksoft CMS PHP остава валиден execution layer.
<!-- @push('js') -->
<script>
$j(document).ready(function(){
// Legacy JavaScript code
});
</script>
<!-- @endpush -->
MTL-aware engine премества този блок към:
<!-- @asset('jquery') -->
<!-- @asset('jquery-alias-j') -->
<!-- @asset('fancybox') -->
Engine behavior:
$o_page->add_asset('jquery');
$o_page->add_asset('jquery-alias-j');
$o_page->add_asset('fancybox');
/themes/ms/....index.php./themes/ms/_bootstrap.php.$o_page->hook('main_content') за основните blocks.$o_page->hook('sub_pages'), ако темата трябва да показва подстраници./blocks само за основни content blocks./components за menu, navigation, subpages и други relation/render components.block_dom($block) за DOM markers.Theme.blocks и/или Theme.components.streams.main.items.streams.subpages.HTTP Request
↓
page.php
↓
loader.php
↓
$o_page->init_page_blocks()
↓
PageData
↓
ThemeMapper
↓
ViewData
↓
resolveTheme()
↓
include theme/index.php
↓
$o_page->hook('main_content')
↓
BlockResolver
↓
block templates
↓
$o_page->hook('sub_pages')
↓
Subpages component renderer
↓
HTML output
↓
page cache
Основният принцип остава:
CMS управлява данните → Theme управлява HTML и визуализацията...Създаване на теми (темплейти)
Нужни са 2 метода, за да вмъкнете CSS, JS, HTML или PHP логика без да променяте ядрото. Hook системата в Maksoft CMS използва $o_page обекта и централен execution layer, който обединява legacy и modern архитектурата в един pipeline.
$o_page->add_hook() регистрира callback функция към конкретна hook точка. $o_page->hook() изпълнява всички регистрирани функции по ред. ThemeRuntime зарежда legacy данните и регистрира default hook-ове. Системата използва един page object и един asset registry.
ThemeRuntime::boot() инициализира hook средата. Той регистрира main_content и pageurl. Темата не включва PageURL директно. Разработчикът работи само с $o_page->hook() и $o_page->render_assets(). Това означава, че темата остава presentation слой. Не се пипа ядро, не се дублира pipeline, не се създават втори execution механизми.
BlockResolver чете активните блокове от базата. Системата генерира CSS, HTML и JS чрез същите hook точки. Блоковете използват съществуващия hook execution layer. Грешната архитектура води до конфликт на assets, трудно обновяване и проблеми с поддръжката. Централизираната hook система предотвратява това.
...Хукове (Hooks)Около 70% от проблемите при CMS миграции идват от несъвместими шаблони и inline код. Maksoft CMS решава това чрез Maksoft Template Language (MTL), който запазва PHP и добавя структуриран контрол върху JavaScript, CSS и ресурси.
MTL запазва PHP като основа. MTL добавя декларативни директиви. MTL осигурява преносимост между теми. Това позволява съществуващи файлове като edit.php, PageURL и phpCode да продължат да работят, без да се пренаписват.
Maksoft Template Language е съвместим слой върху стандартните PHP шаблони. Той не заменя PHP, а позволява шаблоните да декларират JavaScript, CSS и други блокове по начин, който CMS engine може да обработи централизирано.
Темите не трябва да парсват или интерпретират MTL. Темите само извикват стандартни точки за визуализация като render_assets(), hook('css') и hook('js').
MTL позволява JavaScript кодът да бъде деклариран в PHP шаблон, без да се нарушава legacy изпълнението.
<!-- @push('js') -->
<script type="text/javascript">
$j(document).ready(function(){
// Legacy JavaScript code
});
</script>
<!-- @endpush -->
hook('js').CSS блоковете се декларират по същия начин. Това позволява стиловете да бъдат преместени към правилната зона в страницата, без промени в стария PHP код.
<!-- @push('css') -->
<style>
.edit-page-form {
margin-top: 10px;
}
</style>
<!-- @endpush -->
MTL engine регистрира този блок към hook('css'). Така CSS кодът може да бъде изведен в <head>, а основното съдържание остава чисто.
MTL управлява JavaScript и CSS зависимости чрез asset декларации. Разработчикът посочва нужните ресурси, а CMS engine ги регистрира централизирано.
<!-- @asset('jquery') -->
<!-- @asset('jquery-alias-j') -->
<!-- @asset('fancybox') -->
$o_page->add_asset('jquery');
$o_page->add_asset('jquery-alias-j');
$o_page->add_asset('fancybox');
CMS engine регистрира ресурсите. Темата извежда ресурсите. Разработчикът избягва ръчно дублиране на зависимости.
main_content
→ include(edit.php)
→ HTML + PHP + CSS + JS render inline
main_content
→ capture include output
→ extract @push blocks
→ render remaining HTML/PHP
head
→ hook('css')
footer
→ render_assets('js')
→ hook('js')
Maksoft CMS разделя логика, декларация и визуализация. Това подобрява преносимостта между теми и намалява риска при бъдещи обновления.
MTL позволява внедряване на други езици, без да се нарушава PHP съвместимостта. Обработката остава задача на CMS engine слоя.
<!-- @lang('twig') -->
...
<!-- @endlang -->
<!-- @lang('scss') -->
...
<!-- @endlang -->
Така PHP остава базовият template език, а MTL добавя отворен механизъм за бъдещи разширения.
Грешният избор на CMS често води до трудна поддръжка, скъпи миграции и несъвместими теми. Maksoft CMS намалява този риск, като запазва съществуващия PHP слой и добавя ясен модел за модерна theme архитектура.
Основният принцип е прост: templates declare, engine interprets, themes render.
Проверете подходящите ключови думи за тази тема чрез seo.maksoft.net. За по-добро позициониране комбинирайте съдържанието с вътрешна SEO оптимизация и органичен линк билдинг чрез Активен сайт от Максофт: https://maksoft.net.
Ключови изрази: Maksoft CMS, Maksoft Template Language, MTL PHP шаблони, преносима CMS архитектура, управление на JS и CSS в CMS
...Maksoft Template Language (MTL)Максофт е дигитална агенция със собствени продукти за изработка, поддръжка, SEO оптимизация и маркетинг на интернет сайтове от 1999 година. Ние сме SEO фирма със собствени продукти и услуги за управление на съдържание, SEO оптимизация, дигитален маркетинг и реклама на фирми от различни браншове.
Максофт има над 25 години опит в печатна и интернет реклама. Компанията е водещ вносител на рекламни материали.