Generator situs statis yang dicangkokkan secara sempurna dengan THINKPHP 5.0/5.1 dapat menyesuaikan aturan pembangkitan, mendukung parameter dinamis, dan mendukung pengaturan rentang parameter. Ini adalah solusi untuk membangun situs statis tanpa mengubah proses pengembangan aslinya. Saya akan melakukan beberapa pengujian kinerja ketika saya punya waktu. Jika Anda memiliki pertanyaan lain saat digunakan, silakan tinggalkan pesan. membangun situs statis, membuat file html untuk kerangka THINKPHP
Kategori ini cocok untuk versi TP5.0 dan 5.1. Karena TP5.1 memiliki lebih banyak perubahan daripada 5.0, proyek ini telah disesuaikan dengan versi tersebut, jadi silakan menggunakannya.
public/dist
dan tekan F5 untuk menyegarkan efek halaman statis. Anda juga dapat menggunakan jalur atau perutean TP asli untuk melihat efek templat. composer require jkbuildhtml/jkbuildhtml
dist_rules.php
di direktori aplikasi. Lihat aturan statis di bawah. // 静态站放置路径:
'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()
Tempatkan pernyataan di pengontrol mana pun untuk menghasilkan semua halaman statis secara berkelompok. Yang perlu Anda lakukan hanyalah meletakkannya di suatu tempat di latar belakang. Tampilan halaman ditampilkan baris demi baris demi flush. Jika ingin menggunakan ajax untuk mengkodekannya sendiri, tentu saja bisa.
$builder->buildAll();
Hal ini juga dapat dihasilkan pada satu halaman. Umumnya, tombol生一个页面
ditambahkan setelah setiap baris data pada halaman daftar:
$builder->buildOne($path, ['id' => 5]);
Perlu dicatat bahwa jalur yang dihasilkan oleh satu halaman umumnya merupakan nama pengontrol dan metode, yang harus dideklarasikan dalam aturan pembuatan statis, jika tidak, kesalahan akan muncul.
Anda juga dapat merangkum metode pengambilan pengontrol TP, sehingga dapat dihasilkan saat pengembangan.
protected function fetchHtml()
{
$builder = new JKBuildHtmlBuilder();
$builder->buildFromFetch( $html = $this->fetch(), input('get.') );
return $html;
}
dist_dir_name
. Halaman statis akan mengakses sumber daya ini. Jika ditempatkan di luar folder ini, sumber daya tersebut tidak akan dapat diakses kecuali direktori situs bukan direktori ini.Awalnya, sumber daya TP ditempatkan di mana saja di bawah publik, tetapi dengan kelas yang dihasilkan secara statis, Anda harus mengikuti aturan berikut ini:
dist_rules.php
:Deskripsi pasangan nilai kunci:
Templat TP asli mengajukan jalur tautan:
<?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
. Nilainya bisa berupa "jalur permintaan" dalam bentuk控制器/方法
. Nama modul khusus akan ditambahkan secara otomatis saat meminta.
Nilainya juga bisa berupa array. Yang pertama adalah jalur permintaan, yang akan meneruskan permintaan parameter; yang kedua adalah nama db, yaitu semua nilai di kolom tempat bidang parameter berada . Sistem akan menghasilkan halaman dalam batch berdasarkan parameter: seperti 'news_:id' => ['news/find', 'article'], untuk menanyakan kolom id di tabel artikel.
Jika Anda ingin menambahkan kondisi kueri db, masukkan nilai ketiga misalnya id < 100
Ini akan diteruskan ke kondisi di mana db dan harus mematuhi sintaks kueri tp, yang menjadi 'news_:id' => ['news/find', 'article', ['id' => ['<',100]]],
atau ..."id < 100"]
Jika Anda ingin menyesuaikan fungsi yang menghasilkan ID, Anda dapat mengatur parameter kedua ke metode global, yang dapat ditempatkan di common.php (nama fungsi tidak perlu menyertakan func:
:), atau ditulis di pengontrol mana pun: 'func:admin/index/getJobIds'
atau 'func:getjobids'
Jika tipe func digunakan, nilai yang dikembalikan harus berupa array dua dimensi dengan parameter sebagai kuncinya. Misalnya: ['id' => [2,3,4,5]]
Tipe func dapat memiliki nilai ketiga, yang diteruskan sebagai parameter func
Pengontrol generasi statis akan langsung menghasilkan halaman abnormal ke dalam file html dan tidak akan menghentikan pembuatan.
Leng Feng Cui [email protected]
Sepenuhnya mematuhi protokol 996ICU dan merupakan sumber terbuka sempurna