software:development:demo:cms:ucms:creating_sample_install_php
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| software:development:demo:cms:ucms:creating_sample_install_php [2026/05/04 14:03] – [Файл install.php] VladPolskiy | software:development:demo:cms:ucms:creating_sample_install_php [2026/05/05 11:15] (текущий) – [Дополнения и Файлы] VladPolskiy | ||
|---|---|---|---|
| Строка 10: | Строка 10: | ||
| * Все стили оформления будут перенесены в отдельный внешний файл **install.css.** | * Все стили оформления будут перенесены в отдельный внешний файл **install.css.** | ||
| Для удобства редактирования каждая значимая строка кода снабжена подробными комментариями. | Для удобства редактирования каждая значимая строка кода снабжена подробными комментариями. | ||
| + | <note shadow> | ||
| + | < | ||
| + | <iframe height=" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| ===== Директории ===== | ===== Директории ===== | ||
| + | Директории это структурные элементы файловой системы, | ||
| + | Ниже приведена схема файлов и директорий шаблона модуля install.php: | ||
| < | < | ||
| |AAA||||||AAA{text-align: | |AAA||||||AAA{text-align: | ||
| Строка 883: | Строка 891: | ||
| } | } | ||
| </ | </ | ||
| + | ==== install.css ==== | ||
| + | В директории **%%./ | ||
| + | <note shadow> | ||
| + | {{: | ||
| + | </ | ||
| + | до конца кода стилей (до закрывающего тега **%%</ | ||
| + | <note shadow> | ||
| + | {{: | ||
| + | </ | ||
| + | и вставим **%%(Ctrl+V)%%** вырезанный код стилей в файл **%%install.css%%**, | ||
| + | <code css install.css> | ||
| + | /* Настройки всей видимой части страницы */ | ||
| + | body { | ||
| + | font-family: | ||
| + | background: linear-gradient(to bottom, #ffffff 0%, #E0E0E0 100%); /* переход от белого до светлый серый */ | ||
| + | display: flex; /* Включение гибкой верстки для выравнивания содержимого */ | ||
| + | justify-content: | ||
| + | / | ||
| + | min-height: 100vh; /* Минимальная высота body — 100% высоты окна просмотра */ | ||
| + | margin: 0; /* Удаление стандартных внешних отступов браузера */ | ||
| + | color: #333; /* Основной цвет текста (темно-серый) */ | ||
| + | } | ||
| + | |||
| + | /* Внешняя обертка для карточки установки */ | ||
| + | .install-container { | ||
| + | width: 100%; /* Растягивание на всю доступную ширину */ | ||
| + | max-width: 700px; /* Ограничение максимальной ширины в 700 пикселей */ | ||
| + | padding: 20px; /* Внутренние отступы от краев экрана */ | ||
| + | margin: 20px auto 0; /* Отступ 20px сверху, | ||
| + | } | ||
| + | |||
| + | /* Основная карточка с контентом */ | ||
| + | .install-card { | ||
| + | border: 2px #808080 solid; /* Серая сплошная рамка толщиной 2px */ | ||
| + | background: #e3ffec; /* Светло-зеленый фон как на скриншоте */ | ||
| + | border-radius: | ||
| + | padding: 15px; /* Внутренний отступ от рамки до текста */ | ||
| + | box-shadow: 0 15px 25px -4px rgba(0, 0, 0, 0.5); /* Глубокая тень: смещение вниз, размытие и полупрозрачный черный цвет */ | ||
| + | } | ||
| + | |||
| + | /* Стили верхнего заголовка внутри карточки */ | ||
| + | .install-title { | ||
| + | font-size: 18px; /* Размер шрифта заголовка */ | ||
| + | font-style: italic; /* Написание курсивом */ | ||
| + | font-weight: | ||
| + | color: #808080; /* Серый цвет текста */ | ||
| + | margin-left: | ||
| + | padding-bottom: | ||
| + | } | ||
| + | |||
| + | /* Оформление таблицы с параметрами системы */ | ||
| + | table { | ||
| + | font-family: | ||
| + | font-weight: | ||
| + | font-size: 14px; /* Размер шрифта в таблице */ | ||
| + | width: 100%; /* Таблица занимает всю ширину карточки */ | ||
| + | border-collapse: | ||
| + | margin: 20px 0; /* Отступы сверху и снизу от таблицы */ | ||
| + | } | ||
| + | | ||
| + | /* Стили обычных ячеек */ | ||
| + | td { | ||
| + | padding: 5px 0; /* Вертикальные отступы внутри строк */ | ||
| + | border-bottom: | ||
| + | } | ||
| + | |||
| + | /* Специальные стили для правой колонки значений */ | ||
| + | td: | ||
| + | text-align: left; /* Текст внутри ячейки прижат к левому краю */ | ||
| + | padding-left: | ||
| + | } | ||
| + | |||
| + | /* Цвет текста для статуса " | ||
| + | .status-ok { | ||
| + | color: #2e7d32; /* Темно-зеленый цвет */ | ||
| + | font-weight: | ||
| + | } | ||
| + | |||
| + | /* Текст подсказки */ | ||
| + | .hint { | ||
| + | font-size: 0.9em; /* Размер чуть меньше основного (90%) */ | ||
| + | color: #666; /* Средне-серый цвет */ | ||
| + | line-height: | ||
| + | } | ||
| + | |||
| + | /* Блок сообщения об ошибке */ | ||
| + | .error-msg { | ||
| + | background: #ffdce0; /* Светло-розовый фон ошибки */ | ||
| + | padding: 2px 20px; /* Минимальные отступы сверху/ | ||
| + | border-radius: | ||
| + | border-left: | ||
| + | margin-top: 5px; /* Отступ сверху от предыдущего текста */ | ||
| + | } | ||
| + | |||
| + | /* Убираем отступы у параграфа внутри блока ошибки для компактности */ | ||
| + | .error-msg p { | ||
| + | margin: 0; | ||
| + | } | ||
| + | |||
| + | /* Стили подвала (авторские права) */ | ||
| + | .footer { | ||
| + | text-align: center; /* Центрирование текста */ | ||
| + | font-size: 13px; /* Уменьшенный размер шрифта */ | ||
| + | font-style: italic; /* Курсив */ | ||
| + | font-weight: | ||
| + | color: #888; /* Светло-серый цвет */ | ||
| + | margin-top: 20px; /* Отступ от основной карточки */ | ||
| + | } | ||
| + | |||
| + | /* Цвет ссылок в подвале */ | ||
| + | .footer a { color: #666; } | ||
| + | |||
| + | /* Стили для форм и таблиц */ | ||
| + | .form-table { | ||
| + | border-collapse: | ||
| + | margin-top: | ||
| + | width: 100%; /* Таблица растягивается на всю ширину контейнера */ | ||
| + | } | ||
| + | |||
| + | /* Общие стили для заголовков (th) и обычных ячеек (td) */ | ||
| + | .form-table th, | ||
| + | .form-table td { | ||
| + | padding: 10px 20px 10px 0; /* Внутренние отступы: | ||
| + | font-size: | ||
| + | vertical-align: | ||
| + | text-align: | ||
| + | } | ||
| + | |||
| + | .form-table th { | ||
| + | width: 150px; | ||
| + | font-weight: | ||
| + | } | ||
| + | |||
| + | .form-table p { | ||
| + | margin: 4px 0 0; /* Отступ только сверху (4px), чтобы текст под инпутом не прилипал */ | ||
| + | font-size: | ||
| + | color: #666; /* Серый цвет текста для второстепенной информации */ | ||
| + | } | ||
| + | |||
| + | .form-table input { | ||
| + | width: 100%; /* Инпут занимает всю доступную ширину ячейки */ | ||
| + | font-size: | ||
| + | padding: 5px; /* Внутренний отступ текста от краев инпута */ | ||
| + | box-sizing: | ||
| + | } | ||
| + | |||
| + | .form-table select { | ||
| + | width: 100%; /* Инпут занимает всю доступную ширину ячейки */ | ||
| + | font-size: | ||
| + | padding: 5px; /* Внутренний отступ текста от краев инпута */ | ||
| + | box-sizing: | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Файл tpl_install_header.php ==== | ||
| + | В файле **%%tpl_install_header.php%%** в месте вырезанного кода стилей запишем следующую строчку кода (подключение файла стилей): | ||
| + | <code php tpl_install_header.php> | ||
| + | <?php include __DIR__ . '/ | ||
| + | </ | ||
| + | В результате вставки кода, место выреза, | ||
| + | <note shadow> | ||
| + | {{: | ||
| + | </ | ||
| + | которая подключит наш файл стилей **%%install.css%%**, | ||
| + | <code php tpl_install_header.php> | ||
| + | <!-- Объявление типа документа: | ||
| + | что используется современный стандарт HTML5 --> | ||
| + | < | ||
| + | <!-- Начало документа, | ||
| + | поисковикам и браузерам, | ||
| + | <html lang=" | ||
| + | < | ||
| + | <!-- Установка кодировки UTF-8 для корректного отображения | ||
| + | кириллицы и спецсимволов --> | ||
| + | <meta charset=" | ||
| + | <!-- Адаптация страницы под ширину экрана мобильных устройств --> | ||
| + | <meta name=" | ||
| + | <!-- Заголовок вкладки браузера --> | ||
| + | < | ||
| + | < | ||
| + | эти стили нужны только в этом файле. После установки приложения эта папка | ||
| + | будет удалена. --> | ||
| + | < | ||
| + | <?php include __DIR__ . '/ | ||
| + | </ | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | <!-- Ограничивающий контейнер по центру экрана --> | ||
| + | <div class=" | ||
| + | <!-- Основная «зеленая» карточка --> | ||
| + | <div class=" | ||
| + | <!-- Заголовок блока --> | ||
| + | <div class=" | ||
| + | | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | Откроем файл **%%install.php%%** в бразере, | ||
| + | <note shadow> | ||
| + | {{: | ||
| + | </ | ||
| + | Браузер отображает страницу **%%install.php%%** в законченном виде, включая " | ||
| + | Этот код предназначен для встраивания (инлайнинга) содержимого CSS-файла напрямую в HTML-структуру страницы с помощью PHP.\\ | ||
| + | Комментарий к коду: | ||
| + | |||
| + | - **%%< | ||
| + | - **%%<? | ||
| + | - **%%include%%**: | ||
| + | - **%%__DIR__: | ||
| + | - **%%'/ | ||
| + | |||
| + | Плюсы: | ||
| + | |||
| + | * Ускорение загрузки (Critical Path): Браузеру не нужно делать дополнительный HTTP-запрос за отдельным CSS-файлом. Стили применяются мгновенно, | ||
| + | * Автономность: | ||
| + | |||
| + | Минусы: | ||
| + | |||
| + | * Отсутствие кэширования: | ||
| + | * Объем страницы: | ||
| + | |||
| + | ====== Заключение ====== | ||
| + | ===== Введение ===== | ||
| + | В этой главе руководства мы получили входной шаблон **%%install.php%%** с прикрепленными файлами. Проведем небольшую корректировку полученных файлов, | ||
| + | <note green> | ||
| + | :&12: **Примечание**\\ | ||
| + | Удаляя лишние из готового шаблона, | ||
| + | файл **%%sample_install.php%%** будет являться тестовым файлом для наглядности примеров. | ||
| + | </ | ||
| + | ==== Файл tpl_install_header.php ==== | ||
| + | |||
| + | Блок вставки стилей | ||
| + | <code php tpl_install_header.php> | ||
| + | < | ||
| + | <?php include __DIR__ . '/ | ||
| + | </ | ||
| + | </ | ||
| + | **1.** Чтобы сделать этот вызов безопасным и более правильным с точки зрения разработки, | ||
| + | |||
| + | <code php tpl_install_footer.php> | ||
| + | < | ||
| + | <?php | ||
| + | $cssPath = __DIR__ . '/ | ||
| + | if (file_exists($cssPath)) { | ||
| + | echo file_get_contents($cssPath); | ||
| + | } | ||
| + | ?> | ||
| + | </ | ||
| + | </ | ||
| + | **2.** Для чистого кода | ||
| + | **Оптимальный вариант**: | ||
| + | <code php tpl_install_header.php> | ||
| + | < | ||
| + | <html lang=" | ||
| + | < | ||
| + | <meta charset=" | ||
| + | <meta name=" | ||
| + | < | ||
| + | < | ||
| + | /* Вставка стилей инлайном, | ||
| + | <?php | ||
| + | $cssPath = __DIR__ . '/ | ||
| + | if (file_exists($cssPath)) { | ||
| + | echo file_get_contents($cssPath); | ||
| + | } | ||
| + | ?> | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div class=" | ||
| + | | ||
| + | <!-- Блок вставки файлов программы --> | ||
| + | </ | ||
| + | ==== Файл tpl_install_footer.php ==== | ||
| + | |||
| + | **1.**Для чистого кода в этом блоке достаточно одного краткого комментария. Все закрывающие теги и так понятны из структуры HTML.\\ | ||
| + | **Оптимальный вариант**: | ||
| + | <code php tpl_install_footer.php> | ||
| + | <!-- Конец блока вставки файлов программы --> | ||
| + | </ | ||
| + | <!-- Подвал страницы с копирайтом и версией --> | ||
| + | <div class=" | ||
| + | <p> | ||
| + | Author: <a href=" | ||
| + | <a href=" | ||
| + | </p> | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== Файл install.css ==== | ||
| + | В CSS-коде обычно оставляют комментарии только для сложных логических решений или для визуального разделения крупных секций. Описание стандартных свойств (вроде **%%color%%** или **%%margin%%**) считается избыточным. | ||
| + | Пример оформленного CSS кода: | ||
| + | <code css install.css> | ||
| + | /* Базовые настройки страницы */ | ||
| + | body { | ||
| + | font-family: | ||
| + | background-color: | ||
| + | display: flex; | ||
| + | justify-content: | ||
| + | min-height: 100vh; | ||
| + | margin: 0; | ||
| + | color: #333; | ||
| + | } | ||
| + | |||
| + | .install-container { | ||
| + | width: 100%; | ||
| + | max-width: 700px; | ||
| + | padding: 20px; | ||
| + | margin: 20px auto 0; | ||
| + | } | ||
| + | |||
| + | /* Карточка установщика */ | ||
| + | .install-card { | ||
| + | border: 2px #808080 solid; | ||
| + | background: #e3ffec; | ||
| + | border-radius: | ||
| + | padding: 15px; | ||
| + | box-shadow: 0 15px 25px -4px rgba(0, 0, 0, 0.5); | ||
| + | } | ||
| + | |||
| + | .install-title { | ||
| + | font-size: 18px; | ||
| + | font-style: italic; | ||
| + | font-weight: | ||
| + | color: #808080; | ||
| + | margin-left: | ||
| + | padding-bottom: | ||
| + | } | ||
| + | |||
| + | /* Стили таблицы параметров */ | ||
| + | table { | ||
| + | font-family: | ||
| + | font-weight: | ||
| + | font-size: 14px; | ||
| + | width: 100%; | ||
| + | border-collapse: | ||
| + | margin: 20px 0; | ||
| + | } | ||
| + | | ||
| + | td { | ||
| + | padding: 5px 0; | ||
| + | border-bottom: | ||
| + | } | ||
| + | |||
| + | td: | ||
| + | text-align: left; | ||
| + | padding-left: | ||
| + | } | ||
| + | |||
| + | .status-ok { | ||
| + | color: #2e7d32; | ||
| + | font-weight: | ||
| + | } | ||
| + | |||
| + | /* Служебные блоки: подсказки и ошибки */ | ||
| + | .hint { | ||
| + | font-size: 0.9em; | ||
| + | color: #666; | ||
| + | line-height: | ||
| + | } | ||
| + | |||
| + | .error-msg { | ||
| + | background: #ffdce0; | ||
| + | padding: 2px 20px; | ||
| + | border-radius: | ||
| + | border-left: | ||
| + | margin-top: 5px; | ||
| + | } | ||
| + | |||
| + | .error-msg p { | ||
| + | margin: 0; | ||
| + | } | ||
| + | |||
| + | .footer { | ||
| + | text-align: center; | ||
| + | font-size: 13px; | ||
| + | font-style: italic; | ||
| + | font-weight: | ||
| + | color: #888; | ||
| + | margin-top: 20px; | ||
| + | } | ||
| + | |||
| + | .footer a { color: #666; } | ||
| + | |||
| + | /* Стили для табличных форм ввода */ | ||
| + | .form-table { | ||
| + | border-collapse: | ||
| + | margin-top: 1em; | ||
| + | width: 100%; | ||
| + | } | ||
| + | |||
| + | .form-table th, | ||
| + | .form-table td { | ||
| + | padding: 10px 20px 10px 0; | ||
| + | font-size: 14px; | ||
| + | vertical-align: | ||
| + | text-align: left; | ||
| + | } | ||
| + | |||
| + | .form-table th { | ||
| + | width: 150px; | ||
| + | font-weight: | ||
| + | } | ||
| + | |||
| + | /* Пояснительный текст под полями ввода */ | ||
| + | .form-table p { | ||
| + | margin: 4px 0 0; | ||
| + | font-size: 12px; | ||
| + | color: #666; | ||
| + | } | ||
| + | |||
| + | .form-table input, | ||
| + | .form-table select { | ||
| + | width: 100%; | ||
| + | font-size: 12px; | ||
| + | padding: 5px; | ||
| + | box-sizing: border-box; /* Гарантирует, | ||
| + | } | ||
| + | </ | ||
| + | ==== Файл install.php ==== | ||
| + | Оптимизация кода **%%install.php%%** заключается в добавлении семантики, | ||
| + | <code php index.php> | ||
| + | <? | ||
| + | /** | ||
| + | * Шаблон мастера установки (Index) | ||
| + | * Подключает заголовок, | ||
| + | */ | ||
| + | require_once ' | ||
| + | ?> | ||
| + | |||
| + | <main class=" | ||
| + | <p> | ||
| + | На этом этапе система проверяет совместимость вашего сервера с минимальными требованиями. | ||
| + | Будут проверены версия PHP, наличие необходимых расширений (PDO, GD, cURL) и права доступа | ||
| + | к ключевым директориям проекта. | ||
| + | </ | ||
| + | |||
| + | <p> | ||
| + | Если все параметры соответствуют норме, вы сможете перейти к настройке базы данных | ||
| + | и созданию учетной записи администратора в следующем шаге. | ||
| + | </p> | ||
| + | </ | ||
| + | |||
| + | <? | ||
| + | /* Закрывающий шаблон: | ||
| + | require_once ' | ||
| + | ?> | ||
| + | </ | ||
| + | Перейдите в браузере по ссылке http:// | ||
| + | <note shadow> | ||
| + | {{: | ||
| + | </ | ||
| + | В этом же окне проверим **%%Ctrl+Shift+I%%** в инструментах разработчика (Developer Tools) поведение страницы при эмуляция мобильных устройств. | ||
| + | <note shadow> | ||
| + | {{: | ||
| + | </ | ||
| + | ===== Дополнения и Файлы ===== | ||
| + | * {{ : | ||
| + | * [[ software: | ||
| + | * [[ software: | ||
| + | |||
| + | |||
| + | |||
software/development/demo/cms/ucms/creating_sample_install_php.1777892602.txt.gz · Последнее изменение: — VladPolskiy
