mercator / wn-themeupdater-plugin
Winter CMS 主题更新插件
Requires
- php: >=7.0
- composer/installers: ~1.0
This package is auto-updated.
Last update: 2024-09-11 15:03:46 UTC
README
这是一个支持主题半自动更新的 WinterCMS 插件。
为了本插件,术语 主主题 指的是将用于一个或多个网站的主题模板。此模板主题位于 WinterCMS 的主题目录中。
请注意,使用 composer 安装的主题不会更新。如果您想将主主题重新安装为最新版本,请使用
composer require <<package name>>
代替。
术语 子主题 指的是 WinterCMS 用于显示网站内容的主题。主题再次位于 WinterCMS 的主题目录中。
安装
使用 Composer 通过执行以下命令安装插件
composer require mercator/wn-themeupdater-plugin
Artisan 命令
php artisan theme:copy master child
命令 php artisan theme:copy master child 会复制主题 master 并将其命名为 child。完成后,它将执行位于 master 主题中的脚本 themekeeping/install.php,允许修改创建的 child 主题。请参阅示例,了解一组预定义命令。
php artisan theme:update master child
命令 php artisan theme:update master child 使用 master 主题更新 child 主题中定义的部分。它是通过调用位于 child 主题中的脚本 themekeeping/install.php 来实现的。请参阅示例,了解一组预定义命令。
为自动更新准备您的主题
在主主题中,创建一个名为 themekeeping 的目录(主题维护)。此目录必须包含以下文件之一或两者
- install.php,在克隆主主题后作为 Artisan copy 命令的一部分调用。
- update.php,在从主主题更新子主题时作为 Artisan copy 调用。请注意,此文件最初(一次)从主主题复制到子主题。子主题中的 update.php 将被调用。
命令
$updater->backup(location)
将 location 的子主题备份到临时位置。 location 可以是一个单独的文件或目录。《location》是相对于客户端根目录的,例如,$updater->backup("asssts")
备份资产目录。
$updater->restore(location)
将 location 中指定的目录或文件恢复到子主题。同样,location 是相对于客户端根目录的,例如,$updater->backup("asssts")
备份资产目录。
$updater->remove(location)
从子主题中删除文件或目录。
$updater->replace(location)
在删除子主题中的文件或目录后,使用主主题替换子主题中的文件或目录。
$updater->mastercopy(from, to )
从主主题(from)复制文件或目录到子主题(to)。现有文件将被覆盖。
$updater->childcopy(from, to )
在子主题中本地复制文件或目录。现有文件将被覆盖。例如,如果主主题在 assets 中有一个需要用户适配的配置文件,您可以按以下方式复制
childcopy("assets/config.yaml.temaplate", "assets/config.yaml")
当然,您可以在 install.php 和 update.php 中使用任何其他 PHP 命令。以下两个函数在此上下文中可能很有用
$updater->master_path()
返回主根目录的完全限定名称。
$updater->child_path()
返回子根目录的完全限定名称。
file_exists_child(location)
如果文件或目录存在于子主题中,则返回 true。否则返回 false。
file_exists_master(location)
如果文件或目录存在于主主题中,则返回 true。否则返回 false。
示例
如果您的主题遵循典型的实现,您通常只想更新资源和 theme.yaml。那么 update.php 可能如下所示
<?php
$updater->replace("assets");
$updater->replace("theme.yaml");
要更新,请在控制台中调用以下命令
php artisan theme:copy master child
如果您想从主主题更新布局,但保留现有的 default.htm,请先备份并在之后恢复
<?php
$updater->backup("layouts/default.htm");
$updater->replace("layouts");
$updater->restore("layouts/default.htm");
$updater->replace("assets");
$updater->replace("theme.yaml");
如果您需要调用特定的函数 yourFunction 来配置在复制后的主题,您的 install.php 可能如下所示
<?php
$res = yourFunction($updater->child_path()); // call yourFunction and pass child path
再一次
要使一切运行起来
- 创建一个主主题(或使用 composer 安装它)
- 创建 themekeeping/install.php
- 创建 themekeeping/update.php
- 将您的主题上传到 GitHub(如果您愿意,也可以上传到 composer)
- 在您希望使用的主网站上安装主主题(通过 GitHub 或 composer),例如,让我们称它为 mymaster
- 通过运行
artisan theme:copy mymaster mychid
创建您在网站中想要使用的子主题(这将从一个名为 mymaster 的主主题创建一个名为 mychild 的主题) - 每次您更新主主题时,请下载您正在运行的每个网站上的主题
- 在每台机器上运行
artisan theme:update mymaster mychild
,您就完成了