Вижте класирането
на този сайт в:
BGTop.net
Българския ТОП

Транспорт за София и страната - 12 тона, 17 европалети, хладилен фургон, брезент 0898529582

Бърз хостинг от 2.90 лева!

README.txt файл

11:55:31 28 юли 2017

Система за управление на съдържанието създадена от Ваньо Георгиев http://vanyog.com.
Започната през декември 2010 г.
Хранилище с програмен код https://github.com/vanyog/mycms

Този README.txt файл съдържа кратко общо описание на системата и към момента е съществена част от документация по нея.
Указания за ползване на системата ще намерите във файл USEAGE.txt.

ИДЕИ ЗА ГЛАВНИТЕ ВЪЗМОЖНОСТИ НА СИСТЕМАТА

- минимализъм - постигане на много възможности с малък размер на системата (към момента малко над 1 МБ без компресия)
- бързина, която се постига чрез кеширане на страниците
- позволява инсталиране на работещ сайт и постепенно пренасяне на съдържанието му в новата система
- позволява поддържане на многоезични сайтове, добавянето на нов език се извършва с лесна настройка
- редактирането на всички файлове и данни на сайта може да се извършва само с помощта на Интернет браузър; редакторът, който се използва за тази цел, показва HTML код, но има възможност да се ползва и WYSIWYG редактор, например CKEditor
- дава пълна свобода за съставяне на съдържанието на страниците, системата е отворена и позволява добавяне на скриптове за генериране на произволно сложно специализирано съдържание
- модулен характер - състои се от главна библиотека в директория lib и независими модули, всеки в собствена директория, в поддиректория mod или избрана от потребителя друга директория
- кои HTML и CSS стандарти ще се спазват е избор на разработчика и не се налагат от самата система
- системата е ориентирана повече към улесняване работата на php програмиста, създаващ сайт, но и с намерение да се направи лесна за използване и от собственици на сайтове, желаещи сами да поддържат съдържанието им
- позволява лесно преминаване на всяка страница от локално копие на сайта към работещото онлайн копие и обратно, както и бързо прехвърляне на съдържание от едното към другото копие


МИНИМАЛНИ ИЗИСКВАНИЯ ЗА СЪРВЪРА

Apache версия 2.2.12 или следваща
MySQL версия от 5.1.37 или следваща
PHP версия от 5.3.0 или следваща

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

КРАТКО ОПИСАНИЕ

Настройки

Настройките, с изключение на тези за достъп до базата занни, се съхраняват в таблица $tn_prefix.'options' и съответно се четат и записват с функциите stored_value($n) и store_value($n,$v) от файл lib/f_stored_value.php.

Шаблони

Съдържанието на всички страници се съхранява в базата данни и се генерира с помощта на шаблони и скриптове за генериране на html код.

Шаблоните се съхраняват в таблицата от базата данни $tn_prefix.'templates'. ($tn_prefix е представка към имената на таблиците в базата данни, задава се във файл conf_database.php.)

Шаблонът представлява html код с вмъкнати в него елементи от вида: <!--$$_XXXX_$$-->, където XXXX са различни имена. Тези елементи при генериране на страница се заместят с друг html код. Замяната се извършва от скрипта index.php чрез извикване на функцията parse_template() (от файл f_parse_template.php), която от своя страна извиква parse_content() от файл f_parse_content.php.

Един шаблон може да бъде наследник на друг шаблон, т.е. да се вмъква в него. В кой друг шаблон трябва да се вмъкне даден шаблон се посочва в полето parent на записа му в таблица $tn_prefix.'templates'. Ако това поле е нула, шаблонът не се вмъква в друг шаблон. Мястото в което се вмъква шаблон наследник се означава с <!--$$_TEMPLATE_$$-->. Вмъкването на шаблоните се извършва от функцията parse_template() преди да започне вмъкването на друго съдържание с parse_content().

Менюта

Структурирането на сайта се осъществява чрез групиране на страниците в дървовидна схема от раздели, подраздели, под-подраздели и т.н. Всички страници от конкретен раздел (група) от тази йерархия имат еднакъв номер на полето `menu_group` в таблица $tn_prefix.'pages'. За да бъде една група страници подгрупа в друга група, се създава запис в таблица $tn_prefix.'menu_tree', който означава, че групата с номер стойността на полето `group` е подгрупа на групата с номер стойността на полето `parent`. Същият запис посочва със стойността на полето `index_page`, коя е главната страница на групата. Нормално е в шаблона на всяка страница да се вмъкне елемент <!--$$_MENU_$$-->, което предизвиква показване на мястото на този елемент на меню - хипервръзки към страниците от същата група.

Текстове

Всички показвани на страниците надписи и текстове се съхраняват в таблицата $tn_prefix.'content' и могат да бъдат на различни езици. Езиците, на които се показват текстове на сайта се задават в настройката 'languages'. Всеки текст или надпис се идентифицира с име, което е еднакво за преводите на този текст на всички езици. Надпис се показва с функцията translate($n) (дефинирана във файл f_translate.php), в която $n е името на надписа. Вижте повече в коментарите във файл f_translate.php.

В текстовете, също както и в шаблоните, може да има <!--$$_XXXX_$$--> елементи за заместване, които се генерират от различни php функции. Заместването на тези елементи се извършва от функцията parse_content(), дефинирана във файл f_parse_content.php, а самата тя се извиква от функцията translate() след извличане на даден превод на текст от таблицата $tn_prefix.'content'.

Филтри

Филтрите са функции, дефинирани във файловете от директория filter. Тези функции автоматично променят или допълват някои срещащи се в текстовете фрагменти. Например: филтърът email превръща всеки срещащ се в текста имейл адрес в хипервръзка, която да отвари програма за писане на имейли. Кои филтри да се приложат към даден текст се посочва в таблица $tn_prefix.'filters'.

Скриптове

Имената XXXX в елементите от вида <!--$$_XXXX_$$-->, които се заместват с друг html код са имена на модули или имена на PHP скриптовете, които се съхраняват в таблица $tn_prefix.'scripts' и се изпълняват с функцията eval().

Модули

Модулите са скриптове, които се извикват автоматично от функция parse_content(), за да заместят с html код елементите <!--$$_XXXX_$$-->. XXXX - трябва да е име на поддиректория от дериктория mod (изписано тук само с главни букви, но физически, на диска, името на директорията трябва да е само с малки букви). В тази директория трябва да има файл с име f_xxxx.php, в който да е дефинирана функция с име xxxx(), приемаща, ако е необходимо, само един стрингов параметър. Информация за отделните модули има в README.txt файловете в директориите на модулите.

В директория mod се съхраняват стандартни (предлагани заедно със системата) модули, но по желание на разработчика на сайта, създадени от него модули може да се сложат в друга директория, която се указва с настройката 'mod_path' в таблица $tn_prefix.'options'. По подразбиране това е поддиректория _mod. В тази директория може да се сложат и копия на стандартни модули, които да се модифицират според нуждите на конкретния сайт. parse_content() проверява за наличие на модул с дадено име първо в тази директория, а после в директория mod.

Модули, предназначени да се управляват от удостоверени потребители, след влизане с потребителско име и парола, могат да дефинират потребителско меню с действия, които потребителят може да извършва. Html кода на това меню се генерира от функция xxxx_menu_items(), дефинирана във файл f_menu_items.php, на директорията на модула.

КЕШИРАНЕ

С цел постигане на бързодействие пълният html код на страниците се съхранява в таблица $tn_prefix.'page_cache'. Интервалът време, през който се опресняват записите в тази таблица се задава в минути с настройката chache_time. Ако тази настройка не е зададена или е 0, не се извършва кеширане, а ако е -1 кешът е “вечен” и се опреснява само след извършване на промени в страницата. Не се извършва кеширане: при отваряне на страниците от администратори; на страниците със стойност 1 на полето `donotcache`; както и на страници, които получават данни с POST метод или ако масив $_SESSION не е празен.

УГОВОРКИ

Директорията $adm_pth, зададена във файл conf_paths.php, съдържа скриптове за администриране на системата и трябва да е защитена с парола.

Имената XXXX на елементите, подлежащи на заместване в шаблоните и в текстовете на страниците се изписват само с главни букви. Имената може да се състоят от две части, отделени с _. В такъв случай втората част е параметър, който се предава на функцията, генерираща съответното съдържание.

Имената на надписите, функциите и настройките, използвани в модули трябва да започват с ИмеНаМодула_. Това улеснява тяхното отделяне от същите елементи на други модули, например, при съставяне на tables.sql файла на модула, при превеждане на неговите надписи или при деинсталиране на модула.

ПРЕФИКСИ В ИМЕНАТА НА ФАЙЛОВЕТЕ:

conf_ - файлове съдържащи настройки
f_ - файлове дефиниращи функции
f_db_ - файлове дефиниращи функции за извличане/записване на информация в базата данни

ГЛАВНИ ТАБЛИЦИ В БАЗАТА ДАННИ

Във всички таблици има поле с име ID и опции primary index и auto_increment, затова това поле няма да се споменава в описанието на таблиците. Полето представлява автоматично поставян, уникален номер на записа в таблицата.

$tn_prefix.'templates' - съхранява шаблоните за генериране на страници
----------------------
Полета:
parent - родител на шаблона. Използва се, когато шаблонът трябва да се вмъкне в друг шаблон, за да оформи страница.
template - html код на шаблона.
comment - описание на шаблона.

$tn_prefix.'content' - съхранява текстове, преведени на различни езици.
--------------------
Полета:
name - име на текста
nolink - флаг, който ако е 1 не позволява в режим на редактиране след надписа да се показва линк *. Използва се, когато този линк би нарушил валидността на html кода.
date_time_1 - дата и час на първото му въвеждане
date_time_2 - дата и час на последната му редакция
language - двубуквено означение на езика, например: 'bg','en' и т.н.
text - текст в html формат, съдържащ евентуално и <!--$$_XXXX_$$-->

$tn_prefix.'pages' - съхранява информация как да се генерира всяка страница
------------------
Полета:
menu_group - номер на групата хипервръзки, които се показват като меню заедно със страницата
title - име на заглавието на страницата, което се взема от таблица $tn_prefix.'content'
content - име на съдържанието на страницата, взема се от таблица $tn_prefix.'content'
template_id - номер на шаблона, по който се съставя страницата, взема се от таблица $tn_prefix.'templates'
hidden - логическо поле, което ако е 1 означава, че страницата не трябва да се показва в навигацията на сайта
options - поле, което съдържа флагове, използвани за предаване на информация към различни функции за генериране на съдържание, например, размери на google реклами
dcount - брой показвания на страницата през денонощието
tcount - общ брой показвания на страницата от момента на пускането й

$tn_prefix.'scripts' - съхранява скриптове, които се извличат и се изпълняват с eval(), за да генерират html код за заместване на <!--$$_XXXX_$$--> елементите
-----------------------
Полета:
name - име, което съвпада с XXXX името
script - php код
coment - текстово описание на скрипта (нещо като help)

$tn_prefix.'menu_items' - съхранява информация за съставяне на менюта от хипервръзки
-----------------------
Полета:
place - числа, задаващи реда на подреждане на хипервръзките в менюто
group - номер на менюто, към което принадлежи хипервръзката
name - име на текста, с който се показва хипервръзката
link - url, към който сочи хипервръзката. Обикновено и число - номер на страница от сайта, но може да е и друг url.

$tn_prefix.'menu_trees'. Предвидено е менютата да образуват дървовидна структура и някои менюта да са "деца" на други менюта. Тази таблица се посочва родителското меню на всяко меню "дете".
-----------------------
Полета:
group - номер на менюто (групата хипервръзки)
parent - номер на родителя на менюто
index_page - номер (ID) на страница от таблица $tn_prefix.'pages', която се явява главна страница на менюто

$tn_prefix.'visit_history' - съхранява броя на посещенията на всяка страница по дни
--------------------------
page_id - номер на страницата
date - дата на записване на информацията. Броят на посещенията се отнася за предишното на тази дата денонощие.
count - брой посещения на страницата през предишното денонощие

$tn_prefix.'content_history' - отразява динамиката на изменение на обема на сайта
---------------------------
date - дата, на която е записан обема на сайта
size - обем на сайта, измерен в брой битове на поле `text` на записите от таблица $tn_prefix.'content'

$tn_prefix.'options' - за съхраняване на настройки и други стойности
--------------------
name - име на настройката или стойността
value - стойност. Може да бъде и php код, който с eval() да създаде и присвои стойност на променлива.

$tn_prefix.'filters' - посочва кои филтри да се приложат към текстовете от таблица $tn_prefix.'content'
--------------------
name - име на текста
filters - списък от разделени със запетаи имена на филтри, които да се прилагат върху текста с име name

$tn_prefix.'page_cache' - съхранява пълният html код на страниците с цел кеширане и постигане на бързодействие
-----------------------
page_ID - номер (ID) на страницата
language - език на страницата
date_time_1 - дата и час на последното записване на html кода в тази таблица
text - пълен html код на страницата
referer - адрес, от който е дошъл посетителя в момента на запазване в кеша

Модулите, при своето инсталиране, създават собствени таблици, които са описани в README.txt файловете в директориите на модулите.

Инструкции за използване на системата на български ще намерите във файл USAGE.txt.

ЗА ПОВЕЧЕ ИНФОРМАЦИЯ разгледайте коментарите в php файловете.

За контакт с автора посетете сайта vanyog.com.

Системата може да изтеглите от адрес: https://github.com/vanyog/mycms

 

Същата тема в Google