lukeed / lumen-theme

为您的 Lumen 5.* 项目添加主题支持

v1.0.4 2017-09-08 20:27 UTC

This package is not auto-updated.

Last update: 2024-09-20 18:18:34 UTC


README

Build Status Latest Stable Version License

为您的 Lumen 5.* 项目添加主题支持。

对于 Laravel 支持,请访问 Laravel Theme

功能

  • 自定义主题位置
  • 支持主题继承,并提供回退机制
  • 主题资源加载
  • Artisan 控制台命令

安装

在终端中按照以下方式要求它

$ composer require lukeed/lumen-theme

或者将包添加到您的 composer 文件中

"lukeed/lumen-theme": "1.*"

在您的 bootstrap/app.php 文件中添加新的服务提供者和可选外观

// Service provider
$app->register(Lukeed\Theme\ThemeServiceProvider::class);

// Facade
class_alias(Lukeed\Theme\Facade\Theme::class, 'Theme');

配置

theme.path

类型:字符串

默认:public/themes

这是所有主题应存在的 themes 目录的路径。

要更改此值,您可以在 bootstrap/app.php 中加载自定义的 config/theme.php 文件,或者您可以在应用程序的任何地方直接通过 config() 辅助函数设置此值。

// bootstrap/app.php
config(['theme.path' => realpath(base_path('public/custom/path/themes'))]);

或者

// config/theme.php
return [
    'path' => realpath(base_path('public/custom/path/themes'))])
];

// bootstrap/app.php
$app->configure('theme');

创建一个主题

每个主题目录 必须 包含一个 views 文件夹和一个 theme.json 文件,该文件包含有关主题的描述性信息。

{
    "name": "Theme name",
    "author": "Author Name",
    "description": "Default theme description",
    "version": "1.0",
    "directory": "theme-folder",
    "parent": null
}

nameauthordirectory 字段是 必需的

directory 的值必须与主题目录的名称匹配;例如:public/themes/theme-folder

如果您的主题旨在扩展或继承其他主题的视图,请将 "parent theme" 作为 parent 的值包含在 directory 名称中;例如:parent-folder

视图层次结构

给定以下示例

view('home');

将扫描当前活动主题以查找 home.blade.php

如果有附加到主题的 parent,则接下来将扫描其目录。

最后,将搜索 Lumen 的 view.paths 配置值。默认情况下,这是 resources/views

用法

将扫描 theme.path 目录以查找所有可用主题。

如果只找到一个主题,它将自动被选为活动主题。要手动选择不同的主题,您可以使用接受 directory 值的 set 方法。

Theme::set('theme-folder');

然后您可以像通常在 Laravel 中一样调用视图

view('home', []);

这将首先检查当前主题目录中是否有 home.blade.php。如果没有找到,它将检查父主题,最后将回退到默认 Laravel 视图位置。

您还可以使用 ThemeInterface 注入主题实例。

use lukeed\Theme\Contracts\ThemeInterface;

private $theme;

public function __construct(ThemeInterface $theme)
{
    $this->theme = $theme
}

可用方法

以下是您可以访问的方法列表

// Activate/set theme
Theme::set('theme-namespace');

// Get all available themes as an array
Theme::all();

// Get currently active
Theme::get();

// Get theme by namespace
Theme::get('specific-namespace');

// Override default theme path
Theme::setDefaultThemePath('new/path/to/themes');

// Check if theme exists
Theme::has('theme-namespace');

// Render theme path URL
theme_url('assets/style.css');

Artisan 命令

获取所有找到的主题的表

$ php artisan theme:list

+------------------+-------------+------------+
| Name             | Author      | Namespace  |
+------------------+-------------+------------+
| Bootstrap theme  | Karlo Mikus | bootstrap  |
| Default theme    | Test Author | default    |
| Foundation theme | Lorem Ipsum | foundation |
| Test theme       | Dolor Sitha | test       |
+------------------+-------------+------------+

创建带有配置文件的主题目录

$ php artisan theme:make

 Template name:
 > Theme name

 Template author:
 > Firstn Lastn

Theme created succesfully!

变更日志

请参阅 CHANGELOG 了解最近更改的更多信息。

待办事项

  • 与我联系以获取想法