3

我开始在 laravel 4 中开发我的硕士论文,现在需要一个用于管理主题的包。例如,该应用程序将具有 3 个主题:admin、Theme1 和 Theme2。

你有什么建议吗?

拥有该软件包会很有趣的一些功能:

  • 管理风格和脚本(添加资产)
  • 资产缩小
  • 编译lesscss(可选)
4

4 回答 4

4

听起来您需要掌握Cartalyst 主题包。据我所知,勾选你所有的方框。

如果您不热衷于为订阅付费,那么您可能需要考虑自己滚动。有许多资产管理包(AsseticBassetJeffrey Way 的 Laravel Guard)可以帮助您在这方面入门。至于实际换出主题部分,您需要自己在那里实现一些东西。

于 2013-05-16T00:38:07.840 回答
3

我写了一个包名“主题”。

https://github.com/teepluss/laravel4-theme

于 2013-06-25T17:46:35.537 回答
2

这是我在 laravel 中管理主题的 DIY 方式,过去我已将其应用于我的几个项目,但这不是其他答案提供的自动方式。

我发现前端的人非常有创意,所以我尽量让他们保持孤立,这样他们就不必了解太多后端的东西就可以做出贡献。因此,我创建了一个名为themespublic 的文件夹。

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 中)。

于 2014-12-08T15:08:48.463 回答
2

如果你已经切换到 Laravel 5,你可以试试我的包,它的特性如下:

  • 主题文件夹中的视图和资产分离
  • 主题继承:扩展任何主题并创建主题层次结构

在这里试试:igaster/laravel-theme

于 2015-03-01T20:44:19.017 回答