Теория управления компонентами из админки

К вопросу о устройстве идеальной CMS, на основе модулей. Некоторые размышления кодо-человечных взаимодействий. То есть – как научить заказчика самостоятельно вносить изменения в коды через понятный ему интерфейс. Либо настраивать сотни схожих проектов под нужды заказчика, чтобы избежать повторений в коде. Материал немного сжат и рассчитан на подготовленного пользователя. В конце – парочка теоретических примеров

Надеюсь, размышления наработки помогут мне и Вам в создании данного механизма, если он еще будет актуален

Используем широко распространенный PHP и шаблонизатор Smarty

В смарти все шаблоны расположены в отдельной папки. Назовем ее по-умолчанию templates. Предполагается, что там можно создать отдельную папку плагины plugins. При этом читая код можно включить в компилятор указание нужных величин. Это словно использовать методы существующего класса, только плюс еще веб интерфейс.

Настройки каждого компонента и компиляция PHP и шаблона на выходе. Шаблон подключается методом insert. В названии шаблона компилится название плагина, который она использует. В шаблоне в комментах хранятся настройки которые были скомпилены. И админка читает их и позволяет перепросить

Готовый шаблон


шаблон
{* название и версия плагина *}
{* параметр1 = значение *}

Из админки происходит чтение папки с плагинами

По каждому плагину определяется версия компилятора и создается каталог с компиляторами. Также для у каждого компилятора есть возможность создать свой компонент.

В php файле на основе компиляции плагинов - создаются такие же комментарии, говорящие о версии и названии плагина

#plugin 1

Каждый плагин содержит отдельный класс, который подключается в php файл. В том месте где используется, с помощью оператора require_once

Это могут быть для всей классы для всей программы – включаются в setup.
Классы для шаблона – включаются в файл шаблона.
Классы функций – включаются в функцию при использовании

Какие примеры классов можно подключить и как это будет выглядеть в целом?

Класс авторизация

Включается в setup

В комментах написано #authorization v.1

Класс с авторизацией содержит функции для проверки пароля. Он позволяет для всей программы использовать новые переменные. Их он заносит в отдельную таблицу с комментами что это за переменная. Список всех переменных отображает при изменении шаблона для сайта

Как использовать файл с классом в шаблоне?

Для этого нужно подключить форму для авторизации include file=plugins/auth… и тот созданный компонент

Что нужно сделать чтобы запретить вход на сайт без авторизации?

Разместить параметр


{if $uId==…} или {if $uGrade==…} … {else}{include file=plugins/auth…}{/if}

Нет

Для этого в параметрах php указывается переадресация на страницу с авторизацией. Header=location…

Шаблоны от этого не используются. А в глобальных настройках указывается, создавать ли отдельный шаблон для авторизации или использовать ли запрет для входа без авторизации.

Авторизация работает как с файлами так и с базами данных

Плагин с возможностью редактирования контента внутри шаблона с шапкой. В шаблоне в место контента который зависит от параметра action, ставится блок {include file=plugins/content…}

Содержание внутри плагин берет из файлов в папке с названием основного шаблона.

Если файла нету – плагин возвращает шаблон с пустой надписью. Этот шаблон настраивается из настроек плагина. Возможность включить и отклюить его в админке, а также можно привязать возможность к правам модуля авторизации

Для редактирования появляется карандашик. Это плагин расчитывает перед выводом – появляется карандашик

В php файл записывает свои команды перед выводом содержания на страницу. Добавляется процедура проверки на то был ли изменен шаблон и редактирует файл шаблона. Соответственно плагин позволяет легко создать неограниченное число статических страниц, или страниц не сильно зависящих от программного кода.

А также плагин позволяет включить в любое место редактируемых шаблонов собственные, но сделать это можно лишь вручную.

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

Простой и понятный плагин без лишних вопросов о том как создать таблицы и управлять ими

Плагин для голосовалки

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

Копируется класс для взаимодействия с этой базой.

В шаблон в то место где должна быть голосовалка пишется insert

В меню админки точно указывается шаблон для голосовалки. Точно также как и через плагин content, только больше программного кода в нем, но также можно гибко настроить все детали голосовалки

С помощью админки можно самостоятельно изменять базовые функции, такие как вид кнопок, выдача ответа методом Аякса

С помощью админки в класс php записывается информация о правилах проведения опроса.

Как часто человек может голосовать, сколько раз на один вопрос он может отвечать и выбор срока окончания голосования

Это все пишется шаблон

Условия голосования задаются отдельно и все настройки хранятся в отдельных файлах.

Плагин для вывода таблиц

Это и новости и данные и курсы и любые данные которые можно получить при помощи запросов и вывести в виде таблицы.

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

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

Запросы плагин может писать автоматически, преобразуя на русский большую часть фраз, но для сложных запросов – только использовать язык sql. Сложности также могут быть при работе с уже существующей базой данных.

Продолжение, возможно, следует

Больше материалов выкладываю на своем Дзен канале

  • Автор: kosmom
  • Рейтинг: 0
  • Просмотров: 977
  • Комментариев: 0
  • Создан: 29.11.2008 13:53

Комментарии (0)

Ваши предложения и пожелания пишите на pro@kosmom.ru

Теги

ajax axios backup bootstrap core framework eloquent excel home project html ios javascript keep-alive kpi laravel legacy mvp orm php rip scroll solid timestamp undefined vue vuetify watch безопасность биометрический паспорт ваша любаша для путешествий загран на 10 лет загран паспорт загранпаспорт нового образца зимние книги как заполнить анкеты кеширование книги на новый год логирование мцф недвижимость новогодние книги образец заполнения антеты паспорт для путешествий паспорт нового поколения печать продукт проектирование прокси разработка ремонт ремонт в апартаментах ремонт нежилого помещения самокат сдача сколько стоил ремонт апартаментов спорт стандарты таблица финансы хостинг цена ремонта что почитать зимой юзабилити

Случайный пост

20.09.2011 22:13
День второй