เครื่องมือสร้างไซต์แบบสแตติกที่กราฟต์อย่างสมบูรณ์แบบด้วย 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
ค่าอาจเป็น "เส้นทางคำขอ" ในรูปแบบของ控制器/方法
ชื่อโมดูลที่กำหนดเองจะถูกเพิ่มโดยอัตโนมัติเมื่อมีการร้องขอ หากมีการกำหนดเส้นทาง เส้นทางจะถูกเขียน
ค่ายังสามารถเป็นอาร์เรย์ได้ ค่าแรกคือพาธคำขอ ซึ่งจะส่งผ่านคำขอพารามิเตอร์ ส่วนค่าที่สองคือชื่อของ db นั่นคือค่าทั้งหมดในคอลัมน์ที่มีฟิลด์พารามิเตอร์อยู่ ระบบจะสร้างเพจเป็นชุดตามพารามิเตอร์: เช่น 'news_:id' => ['news/find', 'article'] คือการสืบค้นคอลัมน์ id ในตารางบทความ
หากคุณต้องการเพิ่มเงื่อนไขการสืบค้น db ให้ใส่ค่าที่สามในตัวอย่าง id < 100
ซึ่งจะถูกส่งผ่านไปยังเงื่อนไขของ db และจำเป็นต้องปฏิบัติตามไวยากรณ์การสืบค้น tp ซึ่งจะกลายเป็น 'news_:id' => ['news/find', 'article', ['id' => ['<',100]]],
หรือ ..."id < 100"]
หากคุณต้องการปรับแต่งฟังก์ชันที่สร้าง ID คุณสามารถตั้งค่าพารามิเตอร์ตัวที่สองให้เป็นวิธีการแบบสากล ซึ่งสามารถวางไว้ใน common.php (ชื่อฟังก์ชันไม่จำเป็นต้องรวม func:
:) หรือเขียนในตัวควบคุมใดๆ: 'func:admin/index/getJobIds'
หรือ 'func:getjobids'
หากใช้ประเภท func ค่าที่ส่งคืนจะต้องเป็นอาร์เรย์สองมิติที่มีพารามิเตอร์เป็นคีย์ ตัวอย่างเช่น: ['id' => [2,3,4,5]]
ประเภท func สามารถมีค่าที่สาม ซึ่งถูกส่งผ่านเป็นพารามิเตอร์ของ func
ตัวควบคุมการสร้างแบบคงที่จะสร้างเพจที่ผิดปกติลงในไฟล์ html โดยตรงและจะไม่หยุดการสร้าง
เล้งเฟิงชุย [email protected]
สอดคล้องกับโปรโตคอล 996ICU อย่างสมบูรณ์ และเป็นโอเพ่นซอร์สที่สมบูรณ์แบบ