Maksoft.net

Блоковете в страница са независими части информация, преместваеми в рамките съдържанието на всяка страница, които позволяват вграждането и позиционирането на отделни функционалности и части информация в различните редактируеми елементи на страницата. 

Реализацията е свързана с 3 таблици 

  • block_types дефинира глобално наличните типове.

  • page_blocks казва: този тип блок е разрешен за този сайт/страница.

  • page_blocks_data казва: този разрешен блок е реално включен в страница X, на позиция Y.

🧱 1️⃣ Таблица: block_types

Описва глобалните типове блокове и техните зависимости.

Поле Тип Описание
block_type_id INT AUTO_INCREMENT Уникален идентификатор на типа блок
block_key VARCHAR(50) Уникален код на типа (напр. hero, custom, gallery)
block_name VARCHAR(100) Име за показване в админ панела
description TEXT Подробно описание на предназначението на типа
icon_class VARCHAR(50) Bootstrap икона за визуализация в админ интерфейса
css_assets TEXT Външни CSS ресурси (от cms_assets.php), разделени със запетая
js_assets TEXT Външни JS зависимости
php_init TEXT Глобален PHP код за инициализация на типа блок
editable_fields JSON Определя кои полета поддържа блокът (напр. ["init","html","css","js","php","data"])
created_at TIMESTAMP Дата на създаване
updated_at TIMESTAMP

Последна промяна

🧩 2️⃣ Таблица: page_blocks

Описва кои типове блокове са разрешени за конкретен сайт и/или страница (каталог на достъпните блокове).

Поле Тип Описание
blk_id INT AUTO_INCREMENT Уникален идентификатор на разрешения блок
site_id INT DEFAULT 0 ID на сайта (0 = публичен, достъпен за всички сайтове)
page_n INT DEFAULT 0 ID на страницата, за която блокът е разрешен (0 = глобален в сайта)
block_type_id INT NOT NULL Връзка към block_types
block_key VARCHAR(100) Уникален ключ за блока (напр. promo_banner, custom_footer)
block_name VARCHAR(100) Име за админ интерфейса
config_json JSON Настройки/параметри за блока
access_level INT Ниво на достъп, необходимо за използване на блока.
0 = общодостъпен (гости), 1+ = минимално ниво на потребителя, което му позволява да вижда/редактира блока.
sort_order INT DEFAULT 0 Ред на показване в админ списъка (не влияе на рендеринга)
is_active TINYINT DEFAULT 1 Статус на блока (1 = активен, 0 = неактивен)
created_at TIMESTAMP Дата на създаване
updated_at TIMESTAMP Последна промяна

🧾 3️⃣ Таблица: page_blocks_data

Съдържа реалните инстанции на блокове, включени от потребителя в страниците и определя реда им на визуализация.

Поле Тип Описание
data_id INT AUTO_INCREMENT Уникален идентификатор на инстанцията
blk_id INT NOT NULL Връзка към page_blocks (кой блок е инстанциран)
site_id INT NOT NULL ID на сайта
page_n INT NOT NULL ID на страницата
lang_id INT DEFAULT 0 Езикова версия
data_json JSON Съдържание на блока (init, css, html, php, js, data и др.)
sort_order INT NOT NULL Редът, в който блокът се визуализира в рамките на страницата.

Системата използва три взаимносвързани таблици — block_types, page_blocks и page_blocks_data.


Таблицата block_types дефинира глобалните типове блокове и техните зависимости (CSS, JS, init PHP и конфигурационни полета).


Таблицата page_blocks описва кои блокове от даден тип са разрешени за конкретен сайт или страница и служи като каталог, от който потребителят избира.


Таблицата page_blocks_data съдържа реалните инстанции на блоковете, които потребителят е включил на страница, с тяхното съдържание (init, css, html, php, js) и позиция (sort_order).


При визуализация CMS-ът зарежда активните инстанции от page_blocks_data, изпълнява init кодовете, обединява CSS и JS ресурсите от block_types, и рендерира HTML съдържанието в зададения ред.

 

Наличен е универсален loader render_engine_file() (HTML/PHP + {{placeholders}})

 


Начало /  /  / Документация / Блокове в страница (page_blocks)
Maksoft.Bg Maksoft.Net BrandIT
xxx