nikhiltester/stylist

Laravel 主题包。

1.0 2020-09-14 09:12 UTC

This package is auto-updated.

Last update: 2024-09-28 17:54:48 UTC


README

关于

Build Status

免责声明:我没有编写此包的代码,我所做的就是将该包更新为与 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');

它将在您的主题目录中查找:/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

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

主题继承

主题可以有父主题。这是什么意思?这意味着您可以在请求视图时,Stylist 首先查看您已激活的子主题,然后逐步向上查找。如果您喜欢某个主题但只想定制单个视图文件,这真的非常好。

定义父主题

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

"parent": "Another theme"

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

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

样式表

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

辅助方法

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

Theme::url()

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

Theme::url('favicon.ico')