saberbe / stylist

此包的最新版本(2.0)没有可用的许可证信息。

Laravel 6主题包。

2.0 2020-10-01 10:57 UTC

This package is not auto-updated.

Last update: 2024-09-28 04:15:32 UTC


README

关于

Build Status

Stylist是一个兼容Laravel 6的主题包,用于主题化您的Laravel应用程序。

安装

通过常规的composer命令

composer require SaberBe/stylist

然后,确保通过更新您的config/app.php,使Stylist服务提供者可用

'SaberBe\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::image('path/to/image.png') }}

这将在您的主题目录中首先查找图像:/public/themes/active-theme/images/path/to/image.png

相同的做法也应用于您的样式、js以及任何其他静态资产。每次您想要使用主题资产时,请确保使用主题类。

这意味着,当您调用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')