deltaspikeme / stylist-theme
Laravel主题包。
Requires
- php: ^8.2
- illuminate/support: ^v10.45.0
- spatie/laravel-html: ^3.5.0
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: ^v8.21.1
- phpunit/phpunit: ^10.1
This package is auto-updated.
Last update: 2024-09-21 19:12:47 UTC
README
关于
免责声明:我没有编写此包的代码,我所做的就是更新此包以支持Laravel 6。
Stylist是一个兼容Laravel +5.5的主题包,用于主题化您的Laravel应用程序。
安装
通过常规composer命令
composer require deltaspikeme/stylist-theme
此步骤不是必需的,因为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');
它将在您的主题目录中查找:/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 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')