monkblog / theme-manager
一个简单的主题管理器
Requires
- php: >=5.5.9
- illuminate/filesystem: 5.0.*|5.1.*
- illuminate/support: 5.0.*|5.1.*
- symfony/yaml: 2.*
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- mockery/mockery: ~0.9.1
- phpunit/phpunit: ~4.0
README
这是一个可以与Laravel 5一起使用的简单主题管理器。
要求
- 使用Laravel需要版本5或更高。
- PHP 5.5.9或更高版本
安装
使用Composer要求此包
composer require monkblog/theme-manager 1.1.*
给我看看已有的例子!!
文档
要求主题元数据字段
此包要求theme.yml
/theme.yaml
文件至少定义一个name
字段。
从版本1.1开始,您可以定义一个需要在每个theme.yml
文件中定义的所需字段列表。此包将处理并分离无效主题和有效主题。
转到config/theme-manager.php
,将required_fields
更改为要强制执行的所需字段数组。(如果配置不在您的配置文件夹中,请参阅发布配置部分)。
将所需字段注入启动类
如果您不使用Laravel Service Provider,您可以将一个数组传递给\ThemeManager\Starter
的start()
方法
$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\Starter
类start
方法的$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
- MyThemeNamespace/
- theme.yml
- vendor/
- my-other-theme/
- theme.yml
- my-theme/
- 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许可证授权。