ahmedzidan/laravel-stylist

Laravel 5 主题包。

1.2.1 2020-04-22 23:24 UTC

This package is auto-updated.

Last update: 2024-09-23 09:34:49 UTC


README

关于

Build Status

Stylist 是一个 Laravel 5.5+ 兼容的主题包,用于为主题化 Laravel 应用程序。

安装

使用常规 composer 命令

composer require ahmedzidan/laravel-stylist

然后,确保 Stylist 服务提供者能够通过更新你的 config/app.php 文件来访问你的应用程序

'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 5 中公共目录中相应的目录。你只需要确保在发布之前,你的主题是可用的并且已注册。服务提供者是一个很好的地方来完成这个任务。

public function register()
{
    Stylist::registerPaths(Stylist::discover('/path/to/my/themes'));    
}

然后简单地运行发布命令

php artisan stylist:publish

或者,如果你想发布特定的主题

php artisan stylist:publish ThemeName

然后你的主题资产将被发布到它们相关的目录。重要的是要注意,返回的数组必须包含指向主题目录的数组元素,而不是主题的资产目录。这是因为 Stylist 会尝试与主题及其 json 文件一起工作,并发布所需的文件。

主题继承

主题可以有父主题。这意味着你可以请求一个视图,Stylist 将首先查看你已激活的子主题,并逐步向上查找。如果你喜欢某个主题但只想自定义单个视图文件,这真是太好了。

定义父主题

定义主题的父主题非常简单。你只需在 theme.json 中定义父主题即可。

"parent": "Another theme"

这将确保Stylist首先在您的主题目录中查找文件和资源,然后查找父主题目录。如果您的主题的父主题也有父主题,那么它将继续向上查找,直到找到文件。

父主题不需要被激活,您的主题才能使用它们。只需要激活您的主题即可。然而,它们确实需要被注册。这可以由管理您主题的包处理,或者您可以自己注册。

样式表

主题还可以继承样式表。为了做到这一点,子主题必须有一个与父主题完全相同的样式表名称。如果是这样,那么将首先加载父CSS文件,然后加载子主题的CSS。这使得通过简单地覆盖某些样式来创建主题的“皮肤”变得非常容易。

辅助方法

Stylist还有一些辅助方法,以简化开发。

Theme::url()

当在视图中使用时,此方法将返回到主题公共目录的相对路径。您也可以用它来访问任何文件

Theme::url('favicon.ico')