Генератор статических сайтов, идеально совместимый с THINKPHP 5.0/5.1, может настраивать правила генерации, поддерживать динамические параметры и поддерживать настройки диапазона параметров. Это решение для создания статического сайта без изменения исходного процесса разработки. Когда у меня будет время, я проведу несколько тестов производительности. Если у вас возникнут другие вопросы во время использования, пожалуйста, оставьте сообщение. создать статический сайт, создать html-файл для платформы THINKPHP
Эта категория подходит как для версий TP5.0, так и для 5.1. Поскольку в TP5.1 больше изменений, чем в 5.0, этот проект был адаптирован к этой версии, поэтому смело используйте его.
public/dist
и нажать F5. для обновления эффекта статической страницы. Вы также можете использовать исходный путь TP или маршрутизацию для просмотра эффекта шаблона. composer require jkbuildhtml/jkbuildhtml
dist_rules.php
в каталоге приложения. См. статические правила ниже. // 静态站放置路径:
'dist_path' => 'public/',
// 静态页存放文件夹名 一般放置在public下;静态站点直接指向这个目录即可:
'dist_dir_name' => 'dist',
// 生成的静态页子页的存放目录,即匹配规则中没有@符号的页面的存放目录,注意例中路径中的'dist/site-pages'会进行目录匹配作为替换./或../的依据,所以这个名称在项目文件夹名中最好唯一:
'dist_sub_dir' => 'site-pages',
// 要生成静态页的模块名:
'dist_module_name' => 'index',
// 静态页文件名字中的参数分隔符:
'dist_file_dot' => '_',
// 静态资源路径替换 静态站点根目录下会替换成 `./` 其他会替换成 `../`
'dist_src_match' => '/public/static/',
$builder = new JKBuildHtmlBuilder()
Поместите оператор в любой контроллер для пакетной генерации всех статических страниц. Все, что вам нужно сделать, это поместить его где-нибудь в фоновом режиме. Отображение страницы отображается построчно. Если вы хотите использовать ajax для самостоятельного кодирования, вы, конечно, можете.
$builder->buildAll();
Его также можно создать на одной странице. Обычно кнопка生一个页面
добавляется после каждой строки данных на странице списка:
$builder->buildOne($path, ['id' => 5]);
Следует отметить, что пути, генерируемые одной страницей, обычно представляют собой имена контроллеров и методов, которые должны быть объявлены в правилах статической генерации, иначе будет выдано сообщение об ошибке.
Вы также можете инкапсулировать метод выборки контроллера TP, чтобы его можно было генерировать во время разработки.
protected function fetchHtml()
{
$builder = new JKBuildHtmlBuilder();
$builder->buildFromFetch( $html = $this->fetch(), input('get.') );
return $html;
}
dist_dir_name
. Статические страницы будут иметь доступ к этим ресурсам. Если они размещены за пределами этой папки, они будут недоступны, если каталог сайта не находится в этом каталоге.Первоначально ресурсы TP размещались где угодно под общедоступными, но при использовании статически генерируемых классов необходимо следовать следующим правилам:
dist_rules.php
:Описание пары ключ-значение:
Исходный файл шаблона TP, путь ссылки:
<?php
// +----------------------------------------------------------------------
// | 生成静态页的规则文件
// +----------------------------------------------------------------------
return [
// 这个是首页 带@的会生成在dist目录下,否则生成在子文件夹里;生成的html文件不带@
'@index' => 'index/index',
'@news' => 'news/index',
// 这个是带db的,表示要查询article表的id列,循环生成静态页
'news_:id' => ['news/find', 'article'],
// 这个是带自定义方法的,表示要执行getjobis方法返回id为键的二维数组,循环生成静态页
'job_:id' => ['jobs/find', 'func:getjobids'],
// 这个是请求tp的模块/控制器/方法,返回一个二维数组
'job_:id_:code' => ['index/index', 'func:dist/index/test'],
];
dist/site-pages
. Значением может быть «путь запроса» в форме控制器/方法
. Имя пользовательского модуля будет автоматически добавлено при запросе. Если маршрут определен, маршрут будет записан.
Значение также может быть массивом. Первый — это путь запроса, по которому будет передаваться запрос параметра; второй — имя БД, то есть все значения в столбце, где находится поле параметра. Система будет генерировать страницы пакетно на основе параметров: например, 'news_:id' => ['news/find', 'article'], чтобы запросить столбец id в таблице статей.
Если вы хотите добавить условия запроса к базе данных, поместите третье значение, например, id < 100
Оно будет передано в условиеwhere базы данных и должно соответствовать синтаксису запроса tp, который становится 'news_:id' => ['news/find', 'article', ['id' => ['<',100]]],
или ..."id < 100"]
Если вы хотите настроить функцию, генерирующую идентификаторы, вы можете установить второй параметр как глобальный метод, который можно поместить в common.php (имя функции не обязательно должно включать func:
:) или записать в любой контроллер: 'func:admin/index/getJobIds'
или 'func:getjobids'
Если используется тип func, возвращаемое значение должно быть двумерным массивом с параметрами в качестве ключей. Например: ['id' => [2,3,4,5]]
Тип func может иметь третье значение, которое передается как параметр func.
Контроллер статической генерации напрямую сгенерирует аномальную страницу в html-файл и не остановит генерацию.
Ленг Фэн Цуй [email protected]
Полностью соответствует протоколу 996ICU и имеет открытый исходный код.