monkblog/theme-manager

一个简单的主题管理器

v1.1.2 2015-09-07 19:14 UTC

README

这是一个可以与Laravel 5一起使用的简单主题管理器。

Circle CI StyleCI Code Climate Test Coverage Total Downloads Latest Stable Version Latest Unstable Version License

要求

  • 使用Laravel需要版本5或更高。
  • PHP 5.5.9或更高版本

安装

使用Composer要求此包

composer require monkblog/theme-manager 1.1.*

给我看看已有的例子!!

examples.php

文档

要求主题元数据字段

此包要求theme.yml/theme.yaml文件至少定义一个name字段。

从版本1.1开始,您可以定义一个需要在每个theme.yml文件中定义的所需字段列表。此包将处理并分离无效主题和有效主题。

转到config/theme-manager.php,将required_fields更改为要强制执行的所需字段数组。(如果配置不在您的配置文件夹中,请参阅发布配置部分)。

将所需字段注入启动类

如果您不使用Laravel Service Provider,您可以将一个数组传递给\ThemeManager\Starterstart()方法

$basePath = null;
$requiredFields = [ 'display_name', 'version', 'license', ];

$starter = ( new \ThemeManager\Starter )->start( $basePath, $requiredFields );

$themeManager = new \ThemeManager\ThemeManager( $starter );

您也可以使用辅助函数作为快捷方式

$themeManager = theme_manager( null, [ 'display_name', 'version', 'license', ] );

错误处理

从版本1.1开始,有一个boolean $exceptionOnInvalid,默认为false。要使包抛出无效主题的异常,将config/theme-manager.php中的exception_on_invalid更改为true,或传递true作为\ThemeManager\Starterstart方法的$exceptionOnInvalid参数。

文件夹结构

此包假设您在项目的根目录中有一个包含所有主题文件夹的themes文件夹。

“基本路径”可以通过config/theme-manager.php\ThemeManager\Starter类的start( __DIR__ . '/folder/' )方法来覆盖

例如:

# themes/my-theme/theme.yml
name: my-theme
  • app/
  • public/
  • themes/
    • my-theme/
      • theme.yml
    • my-theme-with-autoload/
      • composer.json
      • helpers.php
      • src/
        • MyThemeNamespace/
          • MyClass.php
          • MyThemeServiceProvider.php
      • theme.yml
      • vendor/
    • my-other-theme/
      • theme.yml
  • vendor/

启动主题类

在应用程序运行之前启动主题服务提供程序或其他重要类

对于Laravel用户:此代码片段可能最好放在bootstrap/autoload.php的底部

( new \ThemeManager\Starter )->bootstrapAutoload();

或者

theme_manager_starter()->bootstrapAutoload();

您也可以可选地传递一个指向您的主题文件夹的路径,如果它与默认路径不同

theme_manager_starter()->bootstrapAutoload( '/path/to/theme-folder' );

与Laravel一起使用

一旦Composer安装或更新了您的包,您需要将ThemeManager注册到Laravel中。进入您的config/app.php,找到providers键并添加

'ThemeManager\ServiceProvider',

您可以将ThemeManager Facade添加到全局访问中

'ThemeManager' => 'ThemeManager\Facade\ThemeManager',

用法

ThemeManager::all();
ThemeManager::getAllThemeNames();

ThemeManager::themeExists( 'theme-name' );
$theme = ThemeManager::getTheme( 'theme-name' );
$themeName = $theme->getName();

发布配置

运行

php artisan vendor:publish --tag=theme

覆盖基本主题路径

(如果theme-manager.php不存在,请参阅发布配置部分)

转到config/theme-manager.php,将base_path更改为您想要使用的文件夹。

<?php

return [

    'base_path' => __DIR__ . '/../path/to/themes-folder',

    //Other config stuff
    ...
];

向管理器添加更多主题文件夹

如果您有一个次要的themes文件夹,您可以使用以下方法将所有主题添加到ThemeManager中

ThemeManager::addThemeLocation( base_path( '/path/to/alternative/themes-folder' ) );

许可证

此包是开源软件,根据MIT许可证授权。