Автоматизация врезки переменных в тексты для rss

Web/сайты Прочее

Был(а) онлайн: 26.04.20 14:45
Umen 26 лет

1.0 Был(а) онлайн: 26.04.20 14:45

Недавно
Нужно собрать интерфейс для автоматизации выдачи однотипных текстов, с заблаговременным пропарсиванием переменных, множественным сайтам через rss. Для комфорта объяснения в самом конце я привожу ориентировочную конструкцию базы, на основе этой схемы идут объяснения в тексте ТЗ. Реализация на php+mysql. Желанно отделить код страниц от дизайна, скажем, с поддержкой Smarty.


Выходит, есть сайты, категории, тексты и переменные и, соответственно, для всех таблицы.
Сайты обращаются к этому движку и получают персонализированную выдачу через rss. То есть для выдачи всякому из сайтов надобно сформировать свою rss ленту, скажем, rss.php?site=1&cat=1 - выдает посты категории 1 для сайта 1, если категория не задана - выдает все посты.
Посты получаются из шаблонных текстов через врезку в них специфических для всякого из сайта переменных.
Тексты содержат ссылки на переменные в виде %VAR_NAME%.
Вся переменная имеет дефолтное значение определенное в табл vars, которое может быть перебито кастом-значением этой переменной, индивидуально заданным для данного сайта. Дефолтные и кастом переменные дозволено беречь как всеобщей таблице с указанием тогда id сайта к которому они относятся (0 - дефолт), так и отдельно, как комфортнее.
Переменные обязаны допускать вложенность. Т.е. %VAR_2% может равняться, скажем, "blah blah %VAR_1%". Исключительное, нужно защитить от безграничных циклов, если юзер сдуру сделает кольцо из взаимоопределяющихся переменных.


Работа происходит дальнейшим образом.
Юзер заходит на add_text.php
Видит форму
Title (textarea)
Text (textarea)
Category (select)
Save (button)
Сбоку от формы выводится список имен всех доступных в системе переменных для комфорта вставки.
Вводит данные и сберегает форму.
Данные сохраняются в таблицу posts со рангом New

manage_texts.php
В виде таблички выводится список всех текстов в системе.
id name category status action
action в данном случае post ,edit, delete

post_text.php
Открывает форму для постинга заданного текста
ID Name Category (для этого текста в системе)
Date range (text field) - сюда юзер вводит разброс дат постинга в днях. Если не заполнил, то будет применяться дефолтное значение 30 дней.
дальше список всех сайтов с чекбоксами в скобках полсе имени всего из сайтов указать число теснее запощенных на него текстов (select из таблицы posts)
Submit (button)
Кнопки js: Check all Check Random 25% Check Random 50% Check Random 75% подмечают автоматом все чекбоксы либо данный процент случайно
Юзер чекает, на какие сайты он хочет это отправить, и жмет сабмит.
По сабмиту юзеру данные сохраняются в таблицу posts пока со рангом New. date - дата когда которой данный пост будет датирован задается прибавлением к нынешней дате случайного промежутка времени из интервала указанного в Date Range. Если юзер указал 30, скажем, то посты будут публиковаться в течение месяца. Все, пост в rss, соответсвенно, должен будет появлиться только когда данный момент в поле date теснее пройдет.
Дальше, открывается огромная таблица со сгенерированными текстами (title + date + text) и подмеченными чекбоксами.
Юзер еще раз проверяет тексты, если где-то что-то не так он может снять галочку с данного текста.
По сабмиту подмеченные посты меняют ранг на Posted в таблице Posts, и сам текст в таблице texts меняет ранг на Posted. Неотмеченные посты генерятся вторично (данные в таблице posts переписываются) и юзеру выводится вновь форма подтверждения для теснее оставшихся постов.


++++++++++++++++++++++++
Предлагаю следующую конструкцию базы (примитивно для пояснениня сути тз)

sites
-----
id
name
url

vars
----
id
name
value
site_id

texts
-----
id
name - имя текста внутри системы, выводится как наименование текста
title - настоящее наименование текста, обрабатывается врезкой переменных
text - сам текст, обрабатывается врезкой переменных
cat_id
status (New|Ready|Posted)

posts
-----
id
text_id
site_id
title
text
time
status (New|Posted)

cats
----------
id
name

Чтобы добавить заявку к этому заказу, нужно войти или зарегистрироваться

Мой блок

26.04.20 14:45
Umen 26