1

我们计划用 zf2 和教义 orm 创建一个 CMS。

实际上,我们担心我们的 cms 模板,我们希望我们的系统可以使用多个模板,并通过管理员轻松地在主题之间切换

对于最终用户开发人员来说,创建新模板应该很容易

我们想要关于如何构建模板系统的建议或建议:

有一个核心模块,还有很多子模块都有自己的 phtml,所以在哪里存储 theme1 phtml 以及在哪里存储 theme2 phtmls ...

任何建议或建议,请谢谢

4

3 回答 3

3

我鼓励你看看Twig,它是迄今为止我见过的最好的模板引擎 :) 学习 Twig 语法确实需要一些时间,但如果你看看你得到了什么,它是非常值得的 :)

我还不能写评论,所以我写了这个作为答案。希望这可以帮助。相信我,树枝是要走的路。Joust 查看他的文档以了解如何使用它的更具体细节!

编辑:

您尝试解决的问题与模板引擎无关。您可以使用任何模板引擎来做到这一点。如果你愿意,你甚至可以用普通的 PHP 来做到这一点。

我构建了 Web 应用程序,用户可以在其中注册,获取自己的子域,然后他们可以在那里构建自己的网页。更改主题、编辑文本、添加页面。简单的 CMS 功能。

最简单的方法是创建主题文件夹,您可以在其中存储主题,如下所示:

themes/
    - themeBlue
        - css/
        - images/
        - js/
        - html or views/

    - themeRose
        ...

现在这是您放置所有主题的地方,每个主题都有自己的文件夹,其中包含图像、css、js 文件......

然后你会有用户,每个用户都可以选择和更改主题。该信息将存储在数据库中。您需要存储 Jack 正在使用 themeBlue 的用户。你可以随心所欲地这样做。您可以将其放在用户表中,如 user_theme 列。

现在,当有人访问网站时,您首先查询数据库以查看该用户或网络创建者使用的主题。然后从当前主题文件夹加载所有文件。并使用存储在数据库中的数据填充 html 文件,就像在任何其他 CMS 中一样。

这是最简单的实现。例如,您可以将 css 和 html 文件存储在数据库中:)

希望这能回答你的问题。祝你好运,我几乎疯狂地构建我的系统 :) 我最终编写了自己的 PHP MVC 框架角逐来完成我想要的。

于 2012-10-10T18:06:26.947 回答
1

如果您在 application.config.php 中激活另一个具有相同视图和布局(相同的文件夹结构和文件名)的模块,它的视图脚本和布局将在核心模块之后加载时自动使用。

所以你可以简单地让你的 application.config.php 动态加载只包含视图文件夹的活动模板模块。这将是一个简单有效的解决方案,无需任何其他库。

此外,您还可以使用资产管理器(如assetic)在您的(模板)模块中提供图像、css 等。(看看zf2-assetic-module,我根据assetic编写了自己的assetize-module以满足我的需求......)

于 2012-10-10T21:47:00.707 回答
1

新浪,

我在我的 Application->Module.php onBootstrap 中执行此操作

    $ss = $serviceManager->get('application_settings_service');
    $settings = $ss->loadSettings();

    $serviceManager->get('translator');
    $templatePathResolver = $serviceManager->get('Zend\View\Resolver\TemplatePathStack'); 
    $templatePathResolver->setPaths(array(__DIR__ . '/view/'.$settings['theme'])); // here is your skin name 

    $viewModel = $application->getMvcEvent()->getViewModel();
    $viewModel->themeurl = 'theme/'.$settings['theme'].'/';

在这种情况下,我的视图文件夹中有这个结构

    view/
       default/
          application/
          error/
          layout/
          zfcuser/
       red/
          application/
          error/
          layout/
          zfcuser/

上面的 $viewmodel 将一个变量注入到 public_html 文件夹 /theme/red/ 中的主题 URL 的布局中,所有资源都为红色

访问 layout.phtml -> themeurl;?> 在 vi​​ewscript layout()->themeurl;?>

我仍在制定我的动态视图。现在我有一个 BaseController 并且我所有的 ActionControllers 都扩展了它。它有一个 render() 函数可以构建所需的视图,但不确定它是否可以扩展,希望尝试一些占位符的想法。

application_settings_service 是一个设置服务,它获取用于调用系统的任何域的设置,并构建一个可通过站点的任何服务感知部分访问的数组。那是一个完全不同的帖子,它可能会或可能不会摩擦 MVC 窥视错误的方式

我知道您的问题已标记为已回答,只是想我会分享

埃里克

于 2012-10-18T02:10:00.797 回答