trq/gen

一个非常简单的使用Twig模板的静态网站生成器

0.0.5 2013-10-22 13:29 UTC

This package is not auto-updated.

Last update: 2024-09-28 13:12:00 UTC


README

一个非常非常简单的使用Twig模板引擎的静态网站生成器。

我开发了这个非常非常简单的静态网站生成器,专门用于生成http://proemframework.org网站。这确实是,非常非常简单。

安装

安装Gen的最佳方式是通过Composer。以下步骤将创建一个composer.json文件,安装所有依赖并启动一个骨架应用。

composer init --require=trq/gen:0.0.1 --stability=dev -n && composer install && vendor/bin/gen -i

默认情况下,Gen期望在源目录中找到以下结构

├── assets     - All contents are recursively copied into the destination directory. *(Optional)*
├── content    - .twig files processed, directories and .html pages produced copied into the destination.
├── extensions - Twig extensions. Any extension here is autoloaded as templates are processed. *(Optional)*
└── templates  - Contains reusable .twig template partials.

一个示例

├── assets
│   ├── css
│   │   ├── bootstrap-responsive.css
│   ├── js
│   │   ├── bootstrap.min.js
│   └── media
│       └── img
│           ├── banner-bg.png
├── content
│   ├── about.twig
│   ├── docs
│   │   ├── current
│   │   │   ├── index.twig
│   └── index.twig
└── templates
    ├── layout.twig

结果:

├── about.html
├── assets
│   ├── css
│   │   ├── bootstrap-responsive.css
│   ├── js
│   │   ├── bootstrap.min.js
│   └── media
│       └── img
│           ├── banner-bg.png
├── docs
│   ├── current
│   │   ├── index.html
└── index.html

注入数据

可以在某些级别将数据(变量、数组、对象)注入到模板中。

通过简单地创建一个返回所需数据的数组的.php文件来注入数据。

<?php
  return ['somevar' => 'some value'];

首先,您可以创建一个global.php文件并将其放入source目录的根目录。除非进一步覆盖,否则此数据将可用于所有模板。

其次,您可以在任何子目录中创建一个local.php文件。此文件提供的数据将与上面的global.php文件合并(覆盖任何重复键)。

最后,您可以创建一个与您的.twig文件同名.php文件。此文件返回的数据将再次合并到上述提供的数据中,并且结果仅对同名.twig文件中的数据进行提供。

Twig扩展

要使用自定义Twig扩展,只需在Gen命名空间中创建一个扩展Gen\Twig\ExtensionBase的类,并将其文件放入extensions目录中,并扩展Gen\Twig\ExtensionBase类。

通过扩展Gen\Twig\ExtensionBase,您的扩展将自动获得访问当前正在处理的目录、当前正在处理的文件、所有传递给Gen的选项以及所有当前可用的数据。

有关创建Twig扩展的信息,请参阅http://twig.sensiolabs.org/doc/advanced.html#creating-an-extension

配置

可以通过在source目录的根目录中放置一个gen.conf.php文件来轻松配置Gen使用的所有目录和文件,并返回您希望覆盖的选项数组。默认情况下,此数组看起来像

$ops = [
    'extensions'    => 'extensions',
    'content'       => 'content',
    'templates'     => 'templates',
    'assets'        => ['assets'],
    'global'        => 'global.php',
    'local'         => 'local.php',
    'src'           => $src,
    'dest'          => $dest
];

其中$src是传递给Gen的,或者使用当前工作目录作为默认值,而$dest是传递给Gen的,或者默认使用$src/build

使用命令行助手

Gen附带了一个非常简单的命令行实用程序,用于处理您的网站。它具有以下选项

-s <source>
-d <destination>
-v verbose output
-i init the base tree structure
-h help

所有这些选项都是可选的。如果没有提供source目录,则将使用当前工作目录。