bajki / stylist
Laravel 主题包。
This package is not auto-updated.
Last update: 2024-09-27 04:42:27 UTC
README
关于
声明:我没有编写此包的代码,我所做的一切只是更新包以使其与 Laravel 6 兼容。
Stylist 是一个 Laravel +5.5 兼容的包,用于为主题化您的 Laravel 应用程序。
安装
通过常用的 composer 命令
composer require sindev95/stylist
由于 Laravel 包自动发现,此步骤不是必需的
设置主题
为了让 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');
它将首先在您的主题目录中查找 application.blade.php:/views/layout/。简单吗?
在处理资源时,Stylist 需要Illuminate\Html 库,但您应该使用 Stylist 的 Theme 门面而不是 HTML 类。
{{ 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 5 中公共目录中的适当目录。您只需确保在发布之前,您的主题是可用和注册的。服务提供者是一个做这个的好地方。
public function register()
{
Stylist::registerPaths(Stylist::discover('/path/to/my/themes'));
}
然后简单地运行发布命令
php artisan stylist:publish
或者,如果您想发布特定的主题
php artisan stylist:publish ThemeName
您的主题资源将被发布到其相关目录。重要的是要注意,返回的数组必须包含指向 THEME 目录的数组元素,而不是主题的 ASSETS 目录。这是因为 stylist 将尝试与主题及其 json 文件一起工作,并发布所需的文件。
主题继承
主题可以有父主题。这是什么意思?这意味着您可以请求一个视图,Stylist 将首先查找您已激活的子主题,然后逐步向上查找。如果您喜欢某个特定的主题但只想定制单个视图文件,这真是太好了。
定义父主题
为主题定义父主题非常简单。您只需在 theme.json 中定义父主题即可。
"parent": "Another theme"
这将确保 Stylist 首先在您的主题目录中查找文件和资源,然后才查找父主题的目录。如果您的主题的父主题还有父主题,那么它将继续在树中向上查找,直到找到该文件。
父主题无需激活,您的主题即可使用它们。然而,它们确实需要注册。这可以由管理您主题的包处理,或者您可以自己注册。
样式表
主题还可以继承样式表。为了做到这一点,子主题必须有一个与父主题相同的样式表名称。如果是这种情况,那么将首先加载父 CSS 文件,然后加载子主题的 CSS。这使得通过简单地覆盖某些样式轻松创建主题的“皮肤”变得非常简单。
辅助方法
Stylist 也有一些辅助方法,以简化开发。
Theme::url()
当在视图中使用时,此方法将返回主题公共目录的相对路径。您也可以用它来访问任何文件
Theme::url('favicon.ico')