Найти в Дзене
🛠️ИдеиВДело✨

Как добавить статью в блог OkayCMS через MySQL: все поля, таблицы и готовый пример

Если нужно массово переносить статьи, восстанавливать блог после миграции или быстро загружать контент без ручного ввода через админку, удобнее всего понимать, в какие таблицы и какие поля пишет OkayCMS. На практике статья в блоге OkayCMS хранится не в одной таблице, а сразу в нескольких. Основной контент, SEO, категории и рекомендуемые товары распределены по разным сущностям. Ниже — понятная инструкция, где всё разложено по полочкам. В этой структуре OkayCMS используются 4 основные таблицы: ok_blog
ok_lang_blog
ok_blog_categories_relation
ok_related_blogs ok_blog — основная таблица статьи. Здесь хранятся служебные данные, настройки видимости, дата, картинка, рейтинг, время чтения и основная текстовая часть. ok_lang_blog — языковая таблица статьи. Используется для мультиязычности. В ней лежат заголовок, SEO и текст статьи для конкретного языка. ok_blog_categories_relation — связь статьи с категориями блога. Одна статья может быть привязана к одной или нескольким категориям. ok_related_
Оглавление

Если нужно массово переносить статьи, восстанавливать блог после миграции или быстро загружать контент без ручного ввода через админку, удобнее всего понимать, в какие таблицы и какие поля пишет OkayCMS.

На практике статья в блоге OkayCMS хранится не в одной таблице, а сразу в нескольких. Основной контент, SEO, категории и рекомендуемые товары распределены по разным сущностям. Ниже — понятная инструкция, где всё разложено по полочкам.

Какие таблицы используются для статьи блога

В этой структуре OkayCMS используются 4 основные таблицы:

ok_blog
ok_lang_blog
ok_blog_categories_relation
ok_related_blogs

Что делает каждая таблица

ok_blog — основная таблица статьи. Здесь хранятся служебные данные, настройки видимости, дата, картинка, рейтинг, время чтения и основная текстовая часть.

ok_lang_blog — языковая таблица статьи. Используется для мультиязычности. В ней лежат заголовок, SEO и текст статьи для конкретного языка.

ok_blog_categories_relation — связь статьи с категориями блога. Одна статья может быть привязана к одной или нескольким категориям.

ok_related_blogs — связь статьи с товарами. Используется для блока «Рекомендуемые товары» в записи блога.

Все поля статьи, которые используются в OkayCMS

1. Таблица ok_blog

Это главная таблица статьи.

id

Уникальный идентификатор статьи.

  • Тип: int
  • Обязательное: да
  • Особенность: AUTO_INCREMENT

author_id

ID автора статьи.

  • Тип: int
  • Обязательное: нет
  • Связь: с таблицей авторов ok_authors

name

Название статьи.

  • Тип: varchar(512)
  • Обязательное: да

url

ЧПУ статьи, адрес страницы.

  • Тип: varchar(255)
  • Обязательное: да
  • Важно: должен быть уникальным

geotekstil-dlya-dorozhnogo-stroitelstva

meta_title

SEO-заголовок страницы.

  • Тип: varchar(512)
  • Обязательное: да

meta_keywords

SEO-ключевые слова.

  • Тип: varchar(512)
  • Обязательное: да

meta_description

SEO-описание страницы.

  • Тип: varchar(512)
  • Обязательное: да

annotation

Краткий анонс статьи.

  • Тип: mediumtext
  • Обязательное: да

Обычно используется в списке статей, превью блога и карточках на странице категории.

description

Полный текст статьи.

  • Тип: mediumtext
  • Обязательное: да

В это поле можно записывать HTML.

visible

Активность статьи.

  • Тип: tinyint(1)
  • Обязательное: да
  • 1 — статья видима
  • 0 — статья скрыта

show_table_content

Показывать ли оглавление статьи.

  • Тип: tinyint(1)
  • Обязательное: да
  • 1 — показывать
  • 0 — не показывать

date

Дата публикации статьи.

  • Тип: timestamp
  • Обязательное: нет

'2026-03-17 12:00:00'

image

Имя изображения статьи.

  • Тип: varchar(255)
  • Обязательное: да

Обычно здесь хранится имя файла, а не полный путь.

geotekstil-statya.jpg

last_modify

Дата последнего изменения.

  • Тип: timestamp
  • Обязательное: да
  • Заполняется автоматически

main_category_id

Главная категория статьи.

  • Тип: int
  • Обязательное: нет

Даже если статья дополнительно привязывается через таблицу связей, главная категория обычно записывается и сюда.

read_time

Время чтения статьи в минутах.

  • Тип: int
  • Обязательное: нет

5

updated_date

Дата обновления статьи.

  • Тип: date
  • Обязательное: нет

'2026-03-17'

rating

Рейтинг статьи.

  • Тип: float(3,1)
  • Обязательное: нет
  • Значение по умолчанию: 0.0

5.0

votes

Количество голосов.

  • Тип: int
  • Обязательное: нет
  • Значение по умолчанию: 0

2. Таблица ok_lang_blog

Эта таблица хранит языковую версию статьи.

lang_id

ID языка.

  • Тип: int
  • Обязательное: да

Точное значение зависит от содержимого ok_languages.

blog_id

ID статьи из таблицы ok_blog.

  • Тип: int
  • Обязательное: да

name

Название статьи для выбранного языка.

  • Тип: varchar(512)
  • Обязательное: да

meta_title

SEO title для конкретного языка.

  • Тип: varchar(512)
  • Обязательное: да

meta_keywords

SEO keywords для конкретного языка.

  • Тип: varchar(512)
  • Обязательное: да

meta_description

SEO description для конкретного языка.

  • Тип: varchar(512)
  • Обязательное: да

annotation

Анонс статьи для конкретного языка.

  • Тип: mediumtext
  • Обязательное: да

description

Полный текст статьи для конкретного языка.

  • Тип: mediumtext
  • Обязательное: да

3. Таблица ok_blog_categories_relation

Эта таблица отвечает за привязку статьи к категориям.

post_id

ID статьи.

  • Тип: int
  • Обязательное: да

category_id

ID категории блога.

  • Тип: int
  • Обязательное: да

position

Позиция категории в сортировке.

  • Тип: int
  • Обязательное: да
  • По умолчанию: 0

Эта таблица привязывает товары к статье.

post_id

ID статьи.

  • Тип: int
  • Обязательное: да

ID товара.

  • Тип: int
  • Обязательное: да

position

Позиция товара в сортировке.

  • Тип: int
  • Обязательное: да
  • По умолчанию: 0

Какие поля реально приходят из формы статьи в админке

При сохранении статьи в админке OkayCMS используются такие поля:

id
author_id
read_time
name
date
rating
votes
updated_date
url
visible
show_table_content
meta_title
meta_keywords
meta_description
annotation
description
categories[]
image
delete_image
related_products[]

То есть админка передаёт основные данные статьи, SEO, анонс, полный текст, категории, изображение и рекомендуемые товары.

Как правильно добавлять статью через MySQL

Лучше делать это в 4 шага:

  1. Добавить статью в ok_blog.
  2. Получить id новой статьи через LAST_INSERT_ID().
  3. Добавить языковую версию в ok_lang_blog.
  4. Привязать статью к категории и товарам через таблицы связей.

Готовый пример MySQL для одной статьи

START TRANSACTION;

SET @author_id = 1;
SET @lang_id = 1;
SET @main_category_id = 3;
SET @related_product_id = 25;

SET @name = 'Геотекстиль для дорожного строительства: как выбрать материал правильно';
SET @url = 'geotekstil-dlya-dorozhnogo-stroitelstva-kak-vybrat-material-pravilno';
SET @meta_title = 'Геотекстиль для дорожного строительства: как выбрать материал правильно';
SET @meta_keywords = 'геотекстиль, геотекстиль для дороги, дорожное строительство, дорнит';
SET @meta_description = 'Подробная статья о выборе геотекстиля для дорожного строительства: плотность, разрывная нагрузка, применение и ошибки.';
SET @annotation = 'Разбираем, какой геотекстиль подходит для дорожного строительства, на какие характеристики смотреть и каких ошибок избегать при выборе.';
SET @description = '<h2>Зачем нужен геотекстиль в дорожном строительстве</h2><p>Геотекстиль разделяет слои основания, повышает стабильность конструкции и помогает продлить срок службы дорожного покрытия.</p><h2>На что смотреть при выборе</h2><p>Основные параметры: плотность, разрывная нагрузка, водопроницаемость и тип сырья.</p><h2>Типичные ошибки</h2><p>Частая ошибка — выбирать материал только по цвету, а не по техническим характеристикам.</p>';

SET @visible = 1;
SET @show_table_content = 1;
SET @date_value = '2026-03-17 12:00:00';
SET @image = 'geotekstil-dlya-dorozhnogo-stroitelstva.jpg';
SET @read_time = 6;
SET @updated_date = '2026-03-17';
SET @rating = 5.0;
SET @votes = 1;

INSERT INTO ok_blog (
author_id,
name,
url,
meta_title,
meta_keywords,
meta_description,
annotation,
description,
visible,
show_table_content,
date,
image,
main_category_id,
read_time,
updated_date,
rating,
votes
) VALUES (
@author_id,
@name,
@url,
@meta_title,
@meta_keywords,
@meta_description,
@annotation,
@description,
@visible,
@show_table_content,
@date_value,
@image,
@main_category_id,
@read_time,
@updated_date,
@rating,
@votes
);

SET @blog_id = LAST_INSERT_ID();

INSERT INTO ok_lang_blog (
lang_id,
blog_id,
name,
meta_title,
meta_keywords,
meta_description,
annotation,
description
) VALUES (
@lang_id,
@blog_id,
@name,
@meta_title,
@meta_keywords,
@meta_description,
@annotation,
@description
);

INSERT INTO ok_blog_categories_relation (
post_id,
category_id,
position
) VALUES (
@blog_id,
@main_category_id,
0
);

INSERT INTO ok_related_blogs (
post_id,
related_id,
position
) VALUES (
@blog_id,
@related_product_id,
0
);

COMMIT;

Пример без рекомендуемых товаров

Если не нужно привязывать товар, просто убери этот блок:

INSERT INTO ok_related_blogs (
post_id,
related_id,
position
) VALUES (
@blog_id,
@related_product_id,
0
);

Что обязательно проверить перед импортом

  1. Существует ли автор. Поле author_id должно ссылаться на существующую запись в ok_authors.
  2. Существует ли язык. Поле lang_id должно быть в ok_languages.
  3. Существует ли категория. Поля main_category_id и category_id должны быть в ok_blog_categories.
  4. Уникален ли URL. Поле url не должно дублироваться у других статей.
  5. Загружена ли картинка. Если в поле image записано имя файла, этот файл должен уже лежать в правильной папке сайта.

Практический вывод

Для корректной записи статьи в OkayCMS используются основные поля статьи, SEO-поля, анонс, полный текст, категория, рекомендуемые товары и языковая версия записи.

Если делать импорт напрямую в MySQL, нужно заполнять не только ok_blog, но и ok_lang_blog, иначе мультиязычная часть статьи может работать некорректно.

Полный список используемых полей

-- ok_blog
id
author_id
name
url
meta_title
meta_keywords
meta_description
annotation
description
visible
show_table_content
date
image
last_modify
main_category_id
read_time
updated_date
rating
votes

-- ok_lang_blog
lang_id
blog_id
name
meta_title
meta_keywords
meta_description
annotation
description

-- ok_blog_categories_relation
post_id
category_id
position

-- ok_related_blogs
post_id
related_id
position