THINKPHP 5.0/5.1과 완벽하게 접목된 정적 사이트 생성기는 생성 규칙을 사용자 정의하고 동적 매개변수를 지원하며 매개변수 범위 설정을 지원합니다. 기존 개발 프로세스를 변경하지 않고 정적인 사이트를 구축하는 솔루션입니다. 시간이 나면 성능 테스트를 좀 해보겠습니다. 이용 중 기타 문의사항이 있으시면 메시지를 남겨주세요. 정적 사이트 구축, THINKPHP 프레임워크용 HTML 파일 구축
이 카테고리는 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의 where 조건으로 전달되며 'news_:id' => ['news/find', 'article', ['id' => ['<',100]]],
가 되는 tp 쿼리 구문을 준수해야 합니다. 'news_:id' => ['news/find', 'article', ['id' => ['<',100]]],
또는 ..."id < 100"]
ID를 생성하는 함수를 사용자 정의하려면 두 번째 매개변수를 전역 메서드로 설정할 수 있습니다. 이 메서드는 common.php에 배치할 수 있습니다(함수 이름에는 func:
포함할 필요가 없습니다 :). 또는 모든 컨트롤러에 작성할 수 있습니다 'func:admin/index/getJobIds'
또는 'func:getjobids'
func 유형을 사용하는 경우 반환 값은 매개변수를 키로 포함하는 2차원 배열이어야 합니다. 예: ['id' => [2,3,4,5]]
func 유형은 func의 매개변수로 전달되는 세 번째 값을 가질 수 있습니다.
정적 생성 컨트롤러는 비정상적인 페이지를 html 파일에 직접 생성하고 생성을 중지하지 않습니다.
렝 펑 추이 [email protected]
996ICU 프로토콜을 완벽하게 준수하며 완벽한 오픈 소스입니다.