O gerador de site estático perfeitamente enxertado com THINKPHP 5.0/5.1 pode personalizar as regras de geração, suportar parâmetros dinâmicos e suportar configurações de intervalo de parâmetros. É uma solução para construir um site estático sem alterar o processo original de desenvolvimento. Farei alguns testes de desempenho quando tiver tempo. Se você tiver alguma outra dúvida durante o uso, deixe uma mensagem. construir site estático, construir arquivo html para estrutura THINKPHP
Esta categoria é adequada para as versões TP5.0 e 5.1 Como o TP5.1 tem mais alterações que o 5.0, este projeto foi adaptado para a versão, então fique à vontade para usá-lo.
public/dist
e pressionar F5. para atualizar o efeito de página estática Você também pode usar o caminho ou roteamento TP original para visualizar o efeito do modelo. composer require jkbuildhtml/jkbuildhtml
dist_rules.php
no diretório do aplicativo. Consulte as regras estáticas abaixo. // 静态站放置路径:
'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 uma instrução em qualquer controlador para gerar todas as páginas estáticas em lotes. Tudo o que você precisa fazer é colocá-la em algum lugar em segundo plano. A exibição da página é exibida linha por linha por flush. Se você quiser usar o ajax para codificá-la sozinho, é claro que pode.
$builder->buildAll();
Também pode ser gerado em uma única página. Geralmente, um botão生一个页面
é adicionado após cada linha de dados na página da lista:
$builder->buildOne($path, ['id' => 5]);
Deve-se observar que os caminhos gerados por uma única página são geralmente nomes de controladores e métodos, que devem ser declarados nas regras de geração estática, caso contrário será solicitado um erro.
Você também pode encapsular o método fetch do controlador TP, para que ele possa ser gerado durante o desenvolvimento.
protected function fetchHtml()
{
$builder = new JKBuildHtmlBuilder();
$builder->buildFromFetch( $html = $this->fetch(), input('get.') );
return $html;
}
dist_dir_name
As páginas estáticas acessarão esses recursos. Se forem colocados fora desta pasta, eles não estarão acessíveis a menos que o diretório do site não seja este diretório.Originalmente, os recursos TP eram colocados em qualquer lugar sob público, mas com classes geradas estaticamente, você deve seguir as regras:
dist_rules.php
:Descrição do par de valores-chave:
O modelo TP original arquiva um caminho de link:
<?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
. O valor pode ser um "caminho de solicitação" na forma de控制器/方法
. O nome do módulo personalizado será adicionado automaticamente ao solicitar. Se uma rota for definida, a rota será escrita.
O valor também pode ser um array. O primeiro é o caminho da solicitação, que passará o parâmetro request; o segundo é o nome do banco de dados, ou seja, todos os valores da coluna onde está localizado o campo do parâmetro; . O sistema irá gerar páginas em lotes com base nos parâmetros: como 'news_:id' => ['news/find', 'article'], é para consultar a coluna id na tabela de artigos.
Se você deseja adicionar condições de consulta do banco de dados, coloque o terceiro valor, por exemplo, id < 100
Isso será passado para a condição where do banco de dados e precisa estar em conformidade com a sintaxe de consulta tp, que se torna 'news_:id' => ['news/find', 'article', ['id' => ['<',100]]],
ou ..."id < 100"]
Se quiser customizar a função que gera IDs, você pode definir o segundo parâmetro para um método global, que pode ser colocado em common.php (o nome da função não precisa incluir func:
:), ou escrito em qualquer controlador: 'func:admin/index/getJobIds'
ou 'func:getjobids'
Se o tipo func for usado, o valor de retorno deverá ser uma matriz bidimensional com parâmetros como chaves. Por exemplo: ['id' => [2,3,4,5]]
O tipo func pode ter um terceiro valor, que é passado como parâmetro de func
O controlador de geração estática gerará diretamente a página anormal no arquivo html e não interromperá a geração.
Leng Feng Cui [email protected]
Está em total conformidade com o protocolo 996ICU e é perfeitamente open source