El generador de sitios estáticos perfectamente integrado con THINKPHP 5.0/5.1 puede personalizar las reglas de generación, admitir parámetros dinámicos y admitir configuraciones de rango de parámetros. Es una solución para construir un sitio estático sin cambiar el proceso de desarrollo original. Haré algunas pruebas de rendimiento cuando tenga tiempo. Si tiene alguna otra pregunta durante el uso, deje un mensaje. crear un sitio estático, crear un archivo html para el marco THINKPHP
Esta categoría es adecuada para las versiones TP5.0 y 5.1. Debido a que TP5.1 tiene más cambios que 5.0, este proyecto se ha adaptado a la versión, así que no dude en utilizarlo.
public/dist
y presionar F5. para actualizar el efecto de la página estática. También puede utilizar la ruta o ruta TP original para ver el efecto de la plantilla. composer require jkbuildhtml/jkbuildhtml
dist_rules.php
en el directorio de la aplicación. Consulte las reglas estáticas a continuación. // 静态站放置路径:
'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()
Coloque una declaración en cualquier controlador para generar todas las páginas estáticas en lotes. Todo lo que necesita hacer es colocarla en algún lugar en segundo plano. La visualización de la página se muestra línea por línea. Si desea utilizar ajax para codificarla usted mismo, por supuesto que puede hacerlo.
$builder->buildAll();
También se puede generar en una sola página. Generalmente, se agrega un botón生一个页面
después de cada fila de datos en la página de lista:
$builder->buildOne($path, ['id' => 5]);
Cabe señalar que las rutas generadas por una sola página son generalmente nombres de controladores y métodos, que deben declararse en las reglas de generación estática; de lo contrario, se generará un error.
También puede encapsular el método de recuperación del controlador TP para que pueda generarse durante el desarrollo.
protected function fetchHtml()
{
$builder = new JKBuildHtmlBuilder();
$builder->buildFromFetch( $html = $this->fetch(), input('get.') );
return $html;
}
dist_dir_name
. Las páginas estáticas accederán a estos recursos. Si se colocan fuera de esta carpeta, no serán accesibles a menos que el directorio del sitio no sea este directorio.Originalmente, los recursos de TP se colocaban en cualquier lugar público, pero con las clases generadas estáticamente, se deben seguir las siguientes reglas:
dist_rules.php
:Descripción del par clave-valor:
Archivo de plantilla TP original con una ruta de enlace:
<?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
. El valor puede ser una "ruta de solicitud" en forma de控制器/方法
. El nombre del módulo personalizado se agregará automáticamente al realizar la solicitud. Si se define una ruta, se escribirá la ruta.
El valor también puede ser una matriz. El primero es la ruta de la solicitud, que pasará la solicitud del parámetro; el segundo es el nombre de la base de datos, es decir, todos los valores de la columna donde se encuentra el campo del parámetro; El sistema generará páginas en lotes según los parámetros: como 'news_:id' => ['news/find', 'article'], es para consultar la columna de identificación en la tabla de artículos.
Si desea agregar condiciones de consulta de base de datos, coloque el tercer valor, por ejemplo, id < 100
Esto se pasará a la condición donde de base de datos y debe cumplir con la sintaxis de consulta tp, que se convierte en 'news_:id' => ['news/find', 'article', ['id' => ['<',100]]],
o ..."id < 100"]
Si desea personalizar la función que genera ID, puede configurar el segundo parámetro en un método global, que puede colocarse en common.php (no es necesario que el nombre de la función incluya func:
:), o escribirse en cualquier controlador: 'func:admin/index/getJobIds'
o 'func:getjobids'
Si se utiliza el tipo func, el valor de retorno debe ser una matriz bidimensional con parámetros como claves. Por ejemplo: ['id' => [2,3,4,5]]
El tipo de función puede tener un tercer valor, que se pasa como parámetro de func.
El controlador de generación estática generará directamente la página anormal en el archivo html y no detendrá la generación.
Leng Feng Cui [email protected]
Cumple totalmente con el protocolo 996ICU y es perfectamente de código abierto