Der statische Site-Generator, der perfekt in THINKPHP 5.0/5.1 integriert ist, kann die Generierungsregeln anpassen, dynamische Parameter unterstützen und Parameterbereichseinstellungen unterstützen. Es handelt sich um eine Lösung zum Aufbau einer statischen Station, ohne den ursprünglichen Entwicklungsprozess zu ändern. Ich werde einige Leistungstests durchführen, wenn ich Zeit habe. Wenn Sie während der Nutzung weitere Fragen haben, hinterlassen Sie bitte eine Nachricht. Statische Site erstellen, HTML-Datei für das THINKPHP-Framework erstellen
Diese Kategorie ist sowohl für die Versionen TP5.0 als auch 5.1 geeignet. Da TP5.1 mehr Änderungen als 5.0 aufweist, wurde dieses Projekt an die Version angepasst. Sie können es daher gerne verwenden.
public/dist
starren und F5 drücken Um den statischen Seiteneffekt zu aktualisieren, können Sie auch den ursprünglichen TP-Pfad oder das Routing verwenden, um den Vorlageneffekt anzuzeigen. composer require jkbuildhtml/jkbuildhtml
dist_rules.php
im Anwendungsverzeichnis. Siehe die statischen Regeln unten. // 静态站放置路径:
'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()
Platzieren Sie eine Anweisung in einem beliebigen Controller, um alle statischen Seiten stapelweise zu generieren. Sie müssen sie lediglich irgendwo im Hintergrund platzieren. Die Seitenanzeige wird zeilenweise durch Spülen angezeigt. Wenn Sie Ajax zum Codieren verwenden möchten, ist dies natürlich möglich.
$builder->buildAll();
Es kann auch auf einer einzelnen Seite generiert werden. Im Allgemeinen wird nach jeder Datenzeile auf der Listenseite eine Schaltfläche生一个页面
hinzugefügt:
$builder->buildOne($path, ['id' => 5]);
Es ist zu beachten, dass es sich bei den von einer einzelnen Seite generierten Pfaden im Allgemeinen um Controller- und Methodennamen handelt, die in den statischen Generierungsregeln deklariert werden müssen, andernfalls wird ein Fehler angezeigt.
Sie können auch die Abrufmethode des TP-Controllers kapseln, sodass sie während der Entwicklung generiert werden kann.
protected function fetchHtml()
{
$builder = new JKBuildHtmlBuilder();
$builder->buildFromFetch( $html = $this->fetch(), input('get.') );
return $html;
}
dist_dir_name
abgelegt werden. Statische Seiten greifen auf diese Ressourcen zu, wenn sie außerhalb dieses Ordners abgelegt werden, es sei denn, das Site-Verzeichnis ist nicht dieses Verzeichnis.Ursprünglich wurden TP-Ressourcen irgendwo unter öffentlich platziert, aber bei statisch generierten Klassen müssen Sie die folgenden Regeln befolgen:
dist_rules.php
:Beschreibung des Schlüssel-Wert-Paares:
Ursprüngliche TP-Vorlagendatei ein Linkpfad:
<?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
generiert. Der Wert kann ein „Anforderungspfad“ in Form控制器/方法
sein. Der benutzerdefinierte Modulname wird beim Anfordern automatisch hinzugefügt. Wenn eine Route definiert ist, wird die Route geschrieben.
Der Wert kann auch ein Array sein. Der erste ist der Anforderungspfad, der die Parameteranforderung übergibt; der zweite ist der Name der Datenbank, also alle Werte in der Spalte, in der sich das Parameterfeld befindet . Das System generiert stapelweise Seiten basierend auf folgenden Parametern: z. B. „news_:id“ => [‘news/find‘, ‚article‘]‘, um die ID-Spalte in der Artikeltabelle abzufragen.
Wenn Sie Datenbankabfragebedingungen hinzufügen möchten, geben Sie den dritten Wert ein, zum Beispiel id < 100
Dieser wird an die Where-Bedingung der Datenbank übergeben und muss der tp-Abfragesyntax entsprechen, die zu 'news_:id' => ['news/find', 'article', ['id' => ['<',100]]],
oder ..."id < 100"]
Wenn Sie die Funktion, die die ID generiert, anpassen möchten, können Sie den zweiten Parameter auf eine globale Methode setzen, die in common.php platziert werden kann (der Funktionsname muss func:
nicht enthalten :) oder in einen beliebigen Controller geschrieben werden: 'func:admin/index/getJobIds'
oder 'func:getjobids'
Wenn der Typ func verwendet wird, muss der Rückgabewert ein zweidimensionales Array mit Parametern als Schlüssel sein. Zum Beispiel: ['id' => [2,3,4,5]]
Der Funktionstyp kann einen dritten Wert haben, der als Parameter von Funk übergeben wird
Der statische Generierungscontroller generiert die abnormale Seite direkt in der HTML-Datei und stoppt die Generierung nicht.
Leng Feng Cui [email protected]
Entspricht vollständig dem 996ICU-Protokoll und ist vollkommen Open Source