Фреймворк SNDL


ArbNet
15023

Здравствуйте уважаемые форумчане!

Начал создавать свой фреймворк для сайтов. Суть его следующая:

Поступает запрос на страницу например: site/contacts

Движок открывает файл структуры страницы site/contacts.xml

Затем разбирается структура xml и формируется готовая страница

Почему я так решил делать? Основной принцип это разделение данных от разметки, но так как в MVC шаблоны пишутся с встроенным php, то этот принцип уже не действителен. Раньше я применял метод вставки данных по меткам, но части разметки также приходилось писать в php, и для одной страницы нужно редактировать несколько файлов. Хотелось чтобы был один файл структуры страницы где небольшими вставками указываешь по мере надобности необходимое(хедер, футер, меню, слайдер и тд. и тп.) и движок это компоновал. Люди желающие делать сайты и не знающие php, html, css разных премудростей сайтостроения, но зная как создать структуру страницы легко смогут это делать.

В таком фреймворке всё разложено по отдельности. Те кто занимаются дизайном составляют шаблоны и стили которые лежат в директориях lay и css соответственно. Кто пишет на php могут добавлять свои классы(узлы, модули). Пользователь же создавая страницу просто указывает в структуре xml что надо подключить такие-то стили, узлы и какие шаблоны нужны в которых вместо меток вставить нужные данные из узлов обработчиков php.

Во-первых хотелось бы узнать ваше мнение по поводу такой идеи фреймворка для сайтов. Во-вторых основу такого фреймворка я сделал, но далее надо наполнять разными шаблонами, стилями, узлами. Хотелось бы узнать найдутся ли те кто захотят развивать данную идею, не плохо бы собрать сообщество фреймворка SNDL (Structure Node Data Layout — Структура Узел Данные Макет)


ArbNet

Плюсы минусы подходов генерации страницы.

Структуирование — мой подход с парсингом xml

Нативный шаблон(MVC) — вставка в шаблоне php

Шаблонизация(метками) — php ищет метки в тексте и обрабатывает и заменяет

В [] буду ставить свою оценку по 5 бальной шкале.

Принцип разделения данных и шаблона?

Структуирование — [5] принцип работает

Нативный шаблон(MVC) — [3] в шаблонах не обойтись без вставок данных php

Шаблонизация(метками) — [4] я никогда не пользовался шаблонизаторами так как привыкать ещё и к его командам надо, делал свои простые шаблонизаторы с самыми нужными командами

Удобство в создании новых страниц?

Структуирование — [5] для меня это наилучшее решение, надо знать только принцип создания структуры — это просто

Нативный шаблон(MVC) — [3] надо знать html и php, поставил 3 так как обычные люди не хотят изучать html и php

Шаблонизация(метками) — [2] надо знать html и команды шаблонизатора, также не совсем удобно

Скорость генерации страницы?

Структуирование — [4] думаю немного медленнее чем MVC

Нативный шаблон(MVC) — [5] быстрая скорость

Шаблонизация(метками) — [1] медленная скорость

Подведём итоги:

Структуирование — оценка 5+5+4=14

Нативный шаблон(MVC) — оценка 3+3+5=11

Шаблонизация(метками) — оценка 4+2+1=7

Структуирование по-моему наилучший подход.


Mik Foxi

ArbNet, каждый программист в своей жизни должен создать свой фреймворк, cms, обосрать других программистов, потом вырасти и кодить то, что популярно и на что есть спрос, вордпресс например. Это норма 😀


Glueon

Если проект загнется, предлагаю переделать его в дорогенератор и зайти в соотв. раздел 🙂


ivan-lev

ArbNet:
в MVC шаблоны пишутся с встроенным php

Хто сказал? [Практически(?)] к любому фреймворку можно прикрутить любой из более-менее <адекватных> {шаблонизаторов}..

ArbNet:
Люди желающие делать сайты и не знающие php, html, css разных премудростей сайтостроения, но зная как создать структуру страницы легко смогут это делать.

«Конструкторов» хватает разношёрстных.. вон, Elementor, к примеру.. Битрикс тот же.. Там тоже компоненты можно «понавтыкать» и даже без знания XML.

ArbNet:
Пользователь же создавая страницу просто указывает в структуре xml что надо подключить такие-то стили, узлы и какие шаблоны нужны

Ну, т.е. пользователь уже должен знать, как минимум, XML, указывать стили (а как они между собой дружить будут?), узлы (?) и шаблоны..


Удивительно

ArbNet, сколько вам лет?


Glueon

Удивительно:
ArbNet, сколько вам лет?

Какая разница. Чем младше, тем полезнее будет опыт, насколько бессмысленным бы он сейчас не казался. Тут куча старых пердунов, которые живут в реалиях 2000х годов и не могут ничего по этой причине сдвинуть с места, и искренне удивляются, почему не получается зарабатывать больше со своими изъезженными схемами.


ArbNet

ivan-lev:
Ну, т.е. пользователь уже должен знать, как минимум, XML, указывать стили (а как они между собой дружить будут?), узлы (?) и шаблоны..

Движок открывает xml структуру например


<page TITLE="Главная">
<nodes>
Menu
</nodes>
<html see="site">
<content>
{menu}
Это содержание
<menu lay="menu">
<list fnc="Menu"/>
</menu>
</content>
</html>
</page>

Чтобы было понятнее объясню о составлении структуры страницы.

xml имеет формат: <перефикс атрибут=»значение атрибута»>содержание</перефикс> или без содержания <перефикс атрибут=»значение атрибута»/>

перефикс — это метка данных в шаблоне куда нужно вставить содержание

атрибут — строго определен, если нужен шаблон меню ставим атрибут lay=»menu»

Итак. Движок берёт <nodes> и загружает нужные классы, у нас указан узел(класс) Menu. Затем берёт основной шаблон для html see=»site» то есть файл site.html. В этом шаблоне должна быть метка [content]. Затем смотрит дочерние данные. В content у нас есть метка для меню и какое-то содержание. Идём дальше, видим перефикс для меню загружаем шаблон меню lay=»menu» в этот шаблон нужно вставить список который нам даст функция узла fnc=»Menu».

основной шаблон {метка} — в реальном шаблоне такая [метка], тут поменял так как вставляется это ***91;content***93;


<!doctype html>
<html>
<head>
<title>{TITLE}</title>
<link type=text/css rel=stylesheet href=site/main.css>
<!-- script -->
</head>
<body>
{content}
</body>
</html>

шаблон меню


<menu class={class}>
{list}
</menu>


ArbNet

Что касается стилей. Они также собираются как мозайка 🙂

На к странице подключаются два файла. Один основной для всего сайта, в котором указаны цвета, размеры, выравнивание, шрифты, каркас. А во втором уже собираются все нужные стили какие подключаются лэи(шаблоны). При запросе стилей страницы открывается структура страницы и через xpath(‘//@lay’) получается массив нужных стилей для лэев. Далее соответственно формируется нужный css.

———- Добавлено 28.10.2019 в 12:11 ———-

Получается так, что знание html и php не обязательно, не надо составлять шаблоны, стилизовать страницу, не надо программировать на php, думать где какие данные разместить и тд. Всё это сделает фреймворк. Надо просто указать то что хотите видеть на странице. Подключатся узлы, возьмутся нужные шаблоны и стили к ним, указываете какие данные нужны тому или иному шаблону. Всё.


ivan-lev

ArbNet:
Подключатся узлы, возьмутся нужные шаблоны и стили к ним, указываете какие данные нужны тому или иному шаблону. Всё.

Из банального — сделайте активный пункт меню, соответствующий текущей категории 2-го уровня другим цветом, а родительскую категорию — открытым блоком. Ту же штуку — с хлебными крошками.

И да.. «точечку-маркер поменяйте на звёздочку..» заказчик попросил..


ArbNet

Легко. В админке будут все настройки, сам же заказчик в любое время сможет настроить как ему захочется. У меня знакомая так же придирается к таким мелочам, поэтому всё это я учёл. Изменять шаблоны стили к ним, а также подобные небольшие настройки формировании данных в узлах по мере надобности будет делаться в админке.

———- Добавлено 28.10.2019 в 13:19 ———-

Есть ещё мысль сделать в админке типа визуального редактора drag&drop перетаскиванием мыши в структуру будут добавляться необходимые элементы страницы. То есть заранее подготовить вставки xml, но это в перспективе.

Покачто хочется найти единомышленников.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *