JKBuildHtml: статический генератор сайтов на основе ThinkPHP
Идеальное решение для создания статических сайтов без изменения процесса разработки на ThinkPHP 5.0 и 5.1. Позволяет настраивать правила генерации, поддерживает динамические параметры и настройку диапазона параметров.
Build static site, build html file for THINKPHP framework.
Этот инструмент подходит для обеих версий ThinkPHP, TP 5.0 и TP 5.1, поскольку TP 5.1 имеет больше изменений по сравнению с TP 5.0, проект был адаптирован к обеим версиям.
composer require jkbuildhtml/jkbuildhtml
Процесс настройки состоит из трёх шагов:
// Путь размещения статического сайта:
'dist_path' => 'public/',
// Имя папки для хранения статических страниц сайта, обычно помещается в public; прямой доступ к этому каталогу приведёт к статическому сайту:
'dist_dir_name' => 'dist',
// Каталог хранения подстраниц статических страниц, то есть страниц без символа @ в правилах, обратите внимание, что путь в примере будет использоваться в качестве замены для ./ или ../, поэтому рекомендуется сделать имя каталога уникальным в папке проекта:
'dist_sub_dir' => 'site-pages',
// Название модуля для генерации статических страниц:
'dist_module_name' => 'index',
// Разделитель параметров в именах файлов статических страниц:
'dist_file_dot' => '_',
// Статический путь к ресурсам, статический корневой каталог сайта заменит `./` на другие пути, которые будут заменены на `../`:
'dist_src_match' => '/public/static/'
$builder = new \JKBuildHtml\Builder()
Поместите следующий код в любой контроллер для пакетной генерации всех статических страниц. Просто поместите его в подходящее место на бэкэнде. Страницы отображаются построчно, если вы хотите использовать AJAX, вам придётся написать код самостоятельно.
$builder->buildAll();
Также можно генерировать отдельные страницы. Обычно это реализуется в виде кнопки «Создать страницу» в каждой строке списка данных.
$builder->buildOne($path, ['id' => 5]);
Обратите внимание, что при генерации отдельной страницы путь должен быть указан в соответствии с правилами статической генерации и должен быть объявлен в файле правил, иначе будет выдана ошибка. Вы также можете инкапсулировать метод fetch в TP-контроллере, чтобы генерировать страницы во время процесса разработки.
protected function fetchHtml()
{
$builder = new \JKBuildHtml\Builder();
$builder->buildFromFetch( $html = $this->fetch(), input('get.') );
return $html;
}
В ThinkPHP ресурсы обычно размещаются в общей папке, но с появлением статического генератора ресурсов необходимо следовать определённым правилам:
<?php
// +----------------------------------------------------------------------
// | 生成静态页的规则文件
// +----------------------------------------------------------------------
return [
// Это домашняя страница с символом @, которая будет сгенерирована в папке dist; страницы без @ будут сгенерированы в подпапке site-pages
'@index' => 'index/index',
'@news' => 'news/index',
// Это страница с параметром db, представляющая собой запрос к таблице article по id, и каждая страница будет генерироваться циклически
'news_:id' => ['news/find', 'article'],
// Эта страница имеет пользовательский метод, который представляет собой выполнение метода getjobis для возврата массива с идентификаторами, и каждая страница будет циклически генерироваться
'job_:id' => ['jobs/find', 'func:getjobids'],
// Этот запрос представляет собой модуль/контроллер/метод TP, возвращающий двумерный массив
'job_:id_:code' => ['index/index', 'func:dist/index/test'],
];
Ключи с двоеточием обозначают наличие динамических параметров, и страницы будут генерироваться в папке site-pages.
Параметры должны соответствовать именам столбцов таблицы базы данных.
Чтобы избежать ошибок генерации, разделите разные параметры знаком подчёркивания (_).
Значения могут представлять собой «путь запроса», который может быть записан в формате «контроллер/метод», и система автоматически добавит имя модуля при запросе.
Значение также может быть массивом, первый элемент которого является путём запроса, второй — именем таблицы базы данных, а третий — условием запроса. Например, 'id < 100'
будет передано в условие where запроса.
Если вы хотите добавить условия запроса к параметрам, добавьте их в третий элемент массива. Например: 'id < 100'
.
Если вы хотите создать функцию для генерации идентификаторов, поместите имя функции во второй элемент массива, например: ['func:admin/index/getJobIds']
.
Тип func может иметь третий параметр, который будет передан в функцию.
При использовании типа func возвращаемое значение функции должно быть двумерным массивом с параметрами в качестве ключей. Например: ['id' => [2,3,4,5]]
.
Функция типа func может принимать третий параметр.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )