robsox / stylist
Laravel 5,6,7,8,9 主题软件包。
Requires
- php: ^8.0
- illuminate/support: ^6.0|^7.0|^8.0|^9.0
- laravel/framework: ^6.0|^7.0|^8.0|^9.0
- laravelcollective/html: ^6.0|^7.0
Requires (Dev)
- orchestra/testbench: ^4.0|^5.0
This package is auto-updated.
Last update: 2024-09-24 21:56:35 UTC
README
关于
Stylist 是一个 Laravel 5.5+ 兼容的软件包,用于为主题你的 Laravel 应用程序。
安装
通过常规 composer 命令
composer require floatingpoint/stylist
然后,确保通过更新你的 config/app.php 文件,使 Stylist 服务提供者可用于你的应用程序
'FloatingPoint\Stylist\StylistServiceProvider',
版本兼容性
你现在可以开始了!
设置主题
为了让 Stylist 开始使用主题,你必须至少注册一个主题,并激活它。
Stylist::registerPath('/absolute/path/to/theme', true);
你的主题应该包含一个 theme.json 文件,其中包含一些基本信息
{
"name": "My theme",
"description": "This is my theme. There are many like it, but this one is mine."
}
一次只能激活一个主题,所以多次调用激活主题将简单地停用之前激活的主题。
那么,当你现在加载视图时会发生什么?
Stylist 的工作原理
每次你注册并激活一个新主题时,Stylist 就会意识到一个新位置来搜索视图、样式表、javascript 和图像文件。Stylist 还有一些关于如何组织你的主题目录的看法。这样做的原因是让每个主题都遵循相同的做法。例如,当你将 Stylist 指向你的主题目录时,它应该具有以下目录(如果需要的话)
/public/stylesheets
/public/javascripts
/public/images
/views/
然后,当你进行如下调用时
return View::make('layout.application');
它将在你的主题目录中查找:/views/layout/ 下的 application.blade.php。简单吧?
在处理资产时,Stylist 需要 Illuminate\Html 库,但你不是使用 HTML 类,而是使用 Stylist 的 Theme 门面
{{ Theme::image('path/to/image.png') }}
这将首先在您的主题目录中查找图像:/public/themes/active-theme/images/path/to/image.png
相同的做法也适用于你的样式、js 以及任何其他静态资产。每次你想使用主题资产时,确保你使用 Theme 类。
这意味着当你调用 Theme::image 时,你的 HTML 中的输出 URL 实际上看起来像以下这样
/themes/active-theme/images/path/to/image.png
当然,如果你不想让 Stylist 为你管理这些,只需使用常规的 HTML 门面。
我们还有一个步骤还没有完成——那就是发布你的主题资产。这不是一个必要的步骤——你只需简单地将你的主题资产从其目录复制到 Laravel 公共目录中的相应目录即可。你需要确保在发布之前,你的主题可用且已注册。服务提供者是一个很好的地方来做到这一点。
public function register()
{
Stylist::registerPaths(Stylist::discover('/path/to/my/themes'));
}
然后简单地运行发布命令
php artisan stylist:publish
或者,如果你只想发布选定的主题
php artisan stylist:publish ThemeName
然后你的主题资产将被发布到其相关目录。重要的是要注意,返回的数组必须包含指向主题目录的数组元素,而不是主题的 ASSETS 目录。这是因为 stylist 将尝试与主题及其 json 文件一起工作,并发布所需的文件。
主题继承
主题可以有父主题。这意味着你可以请求一个视图,Stylist 将首先查看你激活的子主题,并按树状结构向上查找。如果你喜欢某个主题但只想自定义单个视图文件,这真的很好。
定义父主题
为主题定义父主题非常简单。你只需在 theme.json 中定义父主题即可
"parent": "Another theme"
这将确保Stylist首先在您的主题目录中查找文件和资源,然后才在父主题目录中查找。如果您的主题的父主题还有父主题,那么它将继续向上查找直到找到文件。
父主题不需要激活,您的主题才能使用它们。只需激活您的主题即可。然而,它们确实需要注册。这可能由管理您主题的包处理,或者您可以自己注册。
样式表
主题也可以继承样式表。为了做到这一点,子主题必须具有与其父主题相同的样式表名称。如果是这种情况,则首先加载父CSS文件,然后加载子主题的CSS。这使得通过简单地覆盖某些样式很容易为主题创建“皮肤”。
辅助方法
Stylist也有一些辅助方法,以简化开发。
Theme::url()
在视图中使用时,此方法将返回主题公共目录的相对路径。您也可以使用它来访问任何文件
Theme::url('favicon.ico')