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

Компютърна
Библия 6

Download Download Download Download Download Download

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

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

README.txt файл

11:55:31 28 юли 2017


Система за управление на съдържанието MyCMS
===========================================

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

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

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

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

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

Създаването на системата е стартирано при следните версии сървърен софтуер:

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

но системата се поддържа така, че да е съвместима с последните версии сървърен софтуер, предлаган в абонаментните планове за споделен хостинг. Иначе съвместимостта с различни сървърни конфигурации не се следи стриктно и не се регистрира с кои версии възникват проблеми. При установяване на проблем веднага се правят промени в най-новата версия на системата, които да го отстранят.

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

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

Настройки

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

Шаблони

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

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

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

Страници

Страниците от сайта се описват в таблица $tn_prefix.'pages', където в записа за всяка страница се посочва: нейния номер, име не стринга, съдържащ заглавието, име на стринга съдържащ основния HTML код на страницата, номерът на шаблона за генериране на цялата страницата и др. (Повече вижте в описанието на полетата на тази таблица по-долу.) Всяка страница се отваря на адрес:
http://ДомейнНаСайта/ПапкаНаСистемата/index.php?pid=IDнаСтраницата.
(Някои модули може да допълват адресите на страниците с необходими за тях параметри.)

Текстове

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

Менюта

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

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

Нормално е в шаблона на всяка страница да се вмъкне елемент <!--$$_MENU_$$-->, което предизвиква показване на мястото на този елемент на меню - хипервръзки към страниците от същата група.

Елементи за генериране на съдържание

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

Модули

Частта означена с XXXX в елементите от вида <!--$$_XXXX_$$--> има формат ИмеНаМодул или ИмеНаМодул_Параметри. Дали да се използва формат без параметри или формат с параметри зависи от конкретния модул или скрипт. Някои модули не изискват параметри, други изискват параметри във вид на стринг, съставен по специфични за модула правила. (За изискванията на всеки модул има информация в README.txt файла в директорията на модула, или ако няма такъв файл - в коментарите в програмния код на модула.)

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

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

В директориите на модули, използващи специфични таблици в базата данни, трябва да има файл tables.sql, съдържащ SQL код за създаване и зареждане на тези таблици с минимален, задължително необходим за работата на модула набор от записи.

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

Във файл с име _style.css в директорията на модул може да се сложат CSS дефиниции, с цел визуално форматиране на HTML елементите генерирани от модула.

Скриптове

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

Филтри

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

КЕШИРАНЕ

С цел постигане на бързодействие пълният 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_ - файлове дефиниращи функции за извличане/записване на информация в базата данни
o_ - файлове дефиниращи PHP обекти

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

Във всички таблици има поле с име 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