This commit is contained in:
2023-11-01 21:11:32 +02:00
parent 1442b68503
commit d7afa5a322
3 changed files with 88 additions and 0 deletions
+74
View File
@@ -0,0 +1,74 @@
# Static Generator
To generate the static content of the website, lucent provides a helper class.
## Laravel Command
Just create a command and name it as you like. Make sure to inject the StaticGenerator class.
```php
public function __construct(
public StaticGenerator $staticGenerator,
) {
parent::__construct();
}
```
## Redirect command
There are cases which is useful to create a redirect like when you have a multilingual website:
```php
$this->staticGenerator->run(function ($writer) {
$writer->createRedirect("/", "/el");
});
```
## The Writer save command
In order to create an html file, you have to use the writer's save command
The first argument is the url and the second is the rendered HTML. That's where the page classes do come handy.
```php
$this->staticGenerator->run(function ($writer) {
$writer->save("/", $this->ctx->render("homepage"));
$writer->save("/about", $this->ctx->render("about"));
});
```
## Storage and Permissions
All the generated html is stored on `storage/lucent/live`
In order to make it accessible you have to create symlink:
```bash
php artisan lucent:livelink
```
Now your static website is accessible in http://localhost:8000/live
But it would not be nice to have the **live** prefix everywhere. That's why you need to make the following tweak in the nginx vhost
```nginxconf
location / {
try_files /live$uri/index.html /live$uri $uri $uri/ /index.php?$query_string;
}
```
## Build from the Lucent UI
In your lucent.php config file you can define your command that is used to generate the static files:
```php
"generateCommand" => "generate:static"
```
That way, the users will be able to initiate the build command through the user interface.