Содержание
Архитектура простейшей CMS на PHP+MySQL / Habr
Предисловие
Очень лёгкая CMS может понадобиться в разных случаях. Например, если слабый сервер или нужно разместить очень много сайтов на одну железку с ограниченными ресурсами. К примеру, возьмём VDS начальной ценовой категории в $10/месяц. Можно туда поместить 100 сайтов на WordPress? Вряд ли! А можно поместить 100 сайтов на какой-нибудь лёгкой CMS’ке? Можно и даже больше! Данный пример ближе всего SEO’шникам.
Теория
Что нужно получить в итоге:
1. CMS должна работать с одной БД для нескольких сайтов.
2. CMS должна потреблять минимум оперативной памяти.
3. Админка:
— Список контента (редактирование, удаление).
— Операции с категориями (добавление, редактирование, удаление).
4. Лёгкая встраиваемость в любые шаблоны.
1. Одна БД для нескольких сайтов
Решается просто. При инсталляции все таблицы будут иметь свой префик. Например:
site1_content
site1_categories
site2_content
site2_categories
Таким образом, одна БД на слабом VDS может спокойно обслуживать несколько десятков сайтов, а то и более, в зависимости от количества контента.
2. Минимум потребления памяти
Всё очень просто. В CMS не будет никаких наворотов, только то, что нужно для работы. И так как основной контент — это текст, тяжести никакой не должно быть.
Админка
В админке никаких логинов, только пароль админа для аутентификации. Страница входа, страница со списком статей (справа от названия статей ссылки на редактирование и удаление), страница для работы с категориями (тот же принцип: добавить новую, отредактировать старую, а вот удаления не будет, об этом позже), страница добавления контента и ссылка «Выход».
Почему нельзя удалить категорию? Потому что в БД в таблице site1_content у каждой статьи есть поле category. Статьи из базы никуда не денутся, просто не будет отображаться категория со статьями и придётся редактировать статьи, меняя категорию.
Лёгкая встаиваемость в шаблоны
Достигается просто includ’ами. В данном примере инклуды файлов header.php, content.php, menu.php. Просто нужно вставить инклуд в нужно место. Header.php вверху, content и menu в соответствующие места. Вот и вся работа с шаблонами!
Файлы
Следующие файлы будут в поставке:
/site1/index.php < — единственный файл с дизайном, хорошо подходят css шаблоны, в него и нужно добавить инклуды
/site1/login.php < — страница ввода пароля админа
/site1/conf.php < — конфигурация, данные БД, md5 хэш пароля админа, данные сайта: title, description, keywords.
/site1/.htaccess < — если нужна своя особая структура ссылок
/site1/header.php < — здесь происходят все действия с БД
/site1/content. php < — вывод контента: если это страница, то выводим статью, если категория, то выводим список статей в этой категории, если главная страница, то выводим последние XX статей по дате или id
/site1/menu.php < — инклуд для вывода меню сайта
/site1/admin.php < — список статей
/site1/admin-edit.php < — редактирование и удаление статей (контента)
/site1/admin-cat.php < — работа с категориями
БД
Для начала в конфиге указываем данные для БД: user, base, host, pass, prefix (!)
Важно для каждой новой установки указывать уникальный префикс, иначе при новой инсталляции в одну базу данных могут пострадать уже существующие. Можно конечно написать проверку есть ли уже такие таблицы, но мы же ленивые.
Скрипт установки таблиц в БД сначала читает конфиг, а потом создаёт таблицы с префиксами:
$content=$prefix."content";
$categories=$prefix."categories";
Струтура таблиц примерно такая:
site1_content -> `id` INT(7) NOT NULL AUTO_INCREMENT PRIMARY KEY, `category` INT(3) NOT NULL, `title` VARCHAR(250) NOT NULL, `text` TEXT NOT NULL, `keywords` VARCHAR(250) NOT NULL, `date` VARCHAR(20) NOT NULL, `link` VARCHAR(250) NOT NULL)
link — это ссылка на источник контента. Мы ведь уважаем труд авторов статей?
site1_categories -> `id` INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(250) NOT NULL
Алгоритм CMS’ки
Header.php получает запрос (через GET переменные) и в зависимости от того, какая страница запрошена делает соответствующий запрос к БД + 1 запрос для меню. Далее данные сохраняются в переменных.
Menu.php циклом выводит меню.
Content.php циклом (если это index или category) выводит список статей (анонсами) или саму статью (если это content).
К слову о GET запросе. Это может выглядеть так: site1.tld/category.php?id=5 или так: site1.tld/category5/. Всё зависит от фантазии и .htaccess
Послесловие
Естественно не имеет смысла разбирать все аспекты до мелочей. Всё описанное не просто теория. У меня есть рабочая версия, которую я использую для SEO раскрутки своих СДЛ (сайтов для людей).
Практика показала, что потребление памяти всего 256Кб на скрипт. Одна база спокойно выдерживает на слабом VDS около 50 установок, в каждой из которых около 200 статей. Может быть может и больше, не тестировал отказоустойчивоть VDS’ки.
Спасибо за внимание!
P.S: мне нравится изобретать велосипед
Сайт о программировании в Pawn
Pawn.Wiki — Сайт о программировании в Pawn
Перейти к содержимому
Типичный Скриптер SAMP — паблик, посвящённый скриптингу и всему, что с ним связано. |
По всем вопросам, касающимся размещения рекламы на сайте обращайтесь в Telegram: ссылка |
Список форумов
Школа скриптингаУроки, готовые решение и прочее. Подфорумы:
|
| |
Первая помощьПомощь в pawn скриптинге. Подфорумы:
|
| |
ЗагрузкиМоды, скрипты, маппинг и прочее загрузки. Подфорумы:
|
| |
ДругоеДругие темы которые относятся к тематике pawn. Подфорумы:
|
|
НовостиПоследние новости мультиплеера и их обсуждения. |
| |
ХостингиХостинги для SAMP серверов. Подфорумы:
|
| |
СервераИгровые сервера SAMP. Подфорумы:
|
| |
МодификацииМодификации для SAMP и GTA SA. Подфорумы:
|
|
Торговая площадкаЗдесь можно купить или продать товар. Подфорумы:
|
| |
ГрафикаОбсуждения связанные с графикой. |
| |
Движки сайтовIPB, vBulletin, phpBB, DLE и другое. |
| |
ПрограммированиеОбсуждение языков программирования. |
| |
ИнтернетСоцсети, поисковики, партнерки и многое другое. |
| |
ПортфолиоПортфолио пользователей форума. |
| |
БеседкаРазговоры на различные темы. |
|
Новости форумаСписок важных новостей и обновлений форума. |
| |
Технический разделПредложения, замечания и вопросы по работе форума. |
| |
Платные услугиПлатные услуги от нашего форума. |
| |
Наши проектыСписок проектов которые принадлежат нам. |
|
PHP включает и требует
❮ Предыдущий
Далее ❯
Оператор include
(или require
) принимает весь текст/код/разметку, существующий в указанном файле, и копирует его в
файл, в котором используется оператор include.
Включение файлов очень полезно, когда вы хотите включить тот же PHP,
HTML или текст на нескольких страницах веб-сайта.
Операторы PHP include и require
Можно вставить содержимое одного файла PHP в другой файл PHP (перед
сервер выполняет его) с оператором include или require.
Инструкции include и require идентичны, за исключением случаев сбоя:
-
require
вызовет фатальную ошибку (E_COMPILE_ERROR) и остановит скрипт -
include
выдаст только предупреждение (E_WARNING) и сценарий будет продолжен
Итак, если вы хотите, чтобы выполнение продолжалось и отображались результаты, даже если
include файл отсутствует, используйте оператор include. В противном случае, в случае FrameWork, CMS или
сложное кодирование приложения PHP, всегда используйте оператор require для включения файла ключа в
поток исполнения. Это поможет избежать нарушения безопасности вашего приложения.
и целостности, на случай, если один ключевой файл случайно пропадет.
Включение файлов экономит много работы. Это означает, что
вы можете создать стандартный файл заголовка, нижнего колонтитула или меню для всех ваших веб-страниц.
Затем, когда заголовок необходимо обновить, вы можете только
обновить включаемый файл заголовка.
Синтаксис
включить ‘ имя файла ‘;
или
требуют ‘ имя файла ‘;
Примеры включения PHP
Пример 1
Предположим, у нас есть стандартный файл нижнего колонтитула с именем «footer.php», который выглядит следующим образом:
echo «
Авторское право © 1999-» . дата(«Г») . «W3Schools.com
«;
?>
Чтобы включить файл нижнего колонтитула на страницу, используйте оператор include
:
Пример
Добро пожаловать на мою домашнюю страницу!
Текст.
Еще текст.
Выполнить пример »
Пример 2
Предположим, у нас есть стандартный файл меню с именем «menu. php»:
echo ‘Home —
Учебное пособие по HTML —
Учебное пособие по CSS —
Учебное пособие по JavaScript —
Учебное пособие по PHP‘;
?>
Все страницы веб-сайта должны использовать этот файл меню. Вот как это можно сделать
(мы используем элемент
Пример
Добро пожаловать на мою домашнюю страницу!
Некоторые текст.
Еще текст.
Выполнить пример »
Пример 3
Предположим, у нас есть файл с именем «vars.php», в котором определены некоторые переменные:
$color=’red’;
$car=’БМВ’;
?>
Затем, если мы включим файл «vars. php», переменные можно будет использовать в вызывающем файле:
Пример
Добро пожаловать на мою домашнюю страницу!
echo «У меня $color $car.»;
?>
Пример выполнения »
PHP include vs. require
Оператор require
также используется для включения файла в код PHP.
Однако между include и require есть одно большое различие; когда
файл включен в оператор include
, и PHP не может его найти, сценарий
будет продолжать выполняться:
Пример
Добро пожаловать на мою домашнюю страницу!
echo «У меня $color $car.»;
?>
Пример запуска »
Если мы сделаем тот же пример с оператором require
,
Оператор echo не будет выполнен, потому что выполнение скрипта прекращается после того, как
Оператор require
вернул фатальную ошибку:
Пример
Добро пожаловать на мою домашнюю страницу!
php’;
echo «У меня $color $car.»;
?>
Пример выполнения »
Используйте require
, когда файл требуется приложению.
Используйте , включая
, когда файл не требуется, и приложение должно продолжать работу, если файл не найден.
PHP-упражнения
Проверьте себя с помощью упражнений
Упражнение:
Напишите правильный синтаксис для включения файла с именем «footer.php».
❮ Предыдущий
Следующий ❯
ВЫБОР ЦВЕТА
Лучшие учебники
Учебник по HTML
Учебник по CSS
Учебник по JavaScript
Учебник How To
Учебник по SQL
Учебник по Python
Учебник по W3.CSS
Учебник по Bootstrap
Учебник по PHP
Учебник по Java
Учебник по C++
Учебник по jQuery
900 Справочник
900
Справочник по HTML
Справочник по CSS
Справочник по JavaScript
Справочник по SQL
Справочник по Python
Справочник по W3. CSS
Справочник по Bootstrap
Справочник по PHP
Цвета HTML
Справочник по Java
Справочник по Angular
Справочник по jQuery
Основные примеры
Примеры HTML
Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3.CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery
|
О
W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения.
Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания.
Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования,
куки-файлы и политика конфиденциальности.
Copyright 1999-2023 Refsnes Data. Все права защищены.
W3Schools работает на основе W3.CSS.
Вставить PHP на страницу — CMS и WordPress — Форумы SitePoint
avidrunner
#1
Я попробовал несколько плагинов и не могу найти ни одного, который работает для простого включения PHP на мою страницу WordPress. Есть ли у кого-нибудь рекомендации? И есть ли причина, по которой WordPress не поддерживает включение PHP в страницы через WYSIWYG-редактор по умолчанию?
Спасибо
WebMachine
#2
Редактор WYSIWYG ограничивает тип кода, который вы можете использовать, из соображений безопасности.
Вам нужно будет добавить включение PHP непосредственно в код шаблона страницы, который вы хотите изменить. Перейдите в Внешний вид > Редактор, чтобы найти шаблон.
Просто имейте в виду, что если вы измените код в теме, он будет перезаписан в следующий раз, когда обновление для темы станет доступным, и вы обновите его. Тогда вы потеряете все свои изменения. Если вы хотите изменить код темы, вам действительно следует использовать дочернюю тему.
avidrunner
#3
Страница, на которую я публикую сообщения, уже использует шаблон. Однако включение SVG должно находиться в области содержимого этого шаблона. Поэтому я считаю, что мне нужно использовать WYSIWYG.
Есть ли подключаемый модуль PHP, который работает с последней версией WordPress для этого?
Веб-машина
#4
Пробовали ли вы искать в репозитории плагинов на сайте WordPress? Там перечислено несколько плагинов, которые могут выполнить эту работу: https://wordpress. org/plugins/search/Insert+PHP/
SamA74
#5
Я не люблю слишком много ссылаться на темы, но просто для контекста я полагаю, что проблема связана с этой темой:-
Но я считаю уместным продолжить обсуждение этого здесь, так как это проблема, специфичная для WP, не имеющая прямого отношения к html и css.
Веб-машина
#6
Не могли бы вы сделать php-код, который хотите включить в шаблон? Тогда этот плагин: https://wordpress.org/plugins/improved-include-page/ может сделать эту работу за вас. Кажется, он включает шаблон внутри другой страницы или сообщения.