我开始在laravel 4中开发硕士学位论文,现在需要一个用于管理主题的软件包。该应用程序将具有3个主题:admin,Theme1和Theme2。
您有什么建议吗?
拥有该软件包会很有趣的一些功能:
听起来您需要掌握Cartalyst Themes包。尽我所能打勾你所有的盒子。
如果您不愿为订阅付费,那么您可能需要考虑自己滚动订阅。那里有许多资产管理软件包(Assetic,Basset和Jeffrey Way's Laravel Guard)可以帮助您从这方面开始。至于实际换出的主题部分,则需要在此处自己实现一些功能。
我写了一个包名称“ Theme”。
这是我在laravel中管理主题的DIY方法,过去我已将其应用于我的几个项目,但这不是其他答案提供的自动方法。
我发现前端人员非常有创造力,所以我尝试使他们尽可能孤立,这样他们在做出贡献之前就不必了解太多后端知识。因此,我在公共目录下创建了一个名为themes
的文件夹。
public
themes
default
assets
views
layouts
mockups
pages
partials
默认主题文件夹中的内容实际上是任意的,只要您可以使主题文件易于管理。
然后,我将依靠第三方工具,例如CodeKit等来做CSS js的编译工作。因此,这实际上不再是Laravel的特定主题。
要添加另一个主题,只需在主题文件夹下添加另一个文件夹。为了完成上述工作,您仍然需要自己整理主题加载器,因为我们已移至自定义主题位置。我将以下内容放入控制器中
/**
* Register a theme path relative to public
*
* @param string $name Theme name
* @param string $path Theme path
* @param string $asset_name Asset name of the theme, {$asset_name}_path will be registered at the template
* @param string $asset_path Asset path of the theme, {$asset_name}_path will point to $asset_path
*/
protected function registerPublicPath($name, $path, $asset_name = '', $asset_path = '') {
if (empty($asset_name)) {
$asset_name = $name;
}
if (empty($asset_path)) {
$asset_path = $path;
}
$path = public_path() . $path;
View::addLocation($path);
View::addNamespace($name, $path);
View::share($asset_name . '_path', url('/') . $asset_path);
}
并在使用前调用默认主题
// Define a theme namespace folder under public
$this->registerPublicPath(
'default', '/themes/default/views',
'asset', '/themes/default/assets'
);
我在上面所做的方式称为“创建主题引擎”或“创建基本主题”(例如在Drupal中)。