我们计划用 zf2 和教义 orm 创建一个 CMS。
实际上,我们担心我们的 cms 模板,我们希望我们的系统可以使用多个模板,并通过管理员轻松地在主题之间切换
对于最终用户开发人员来说,创建新模板应该很容易
我们想要关于如何构建模板系统的建议或建议:
有一个核心模块,还有很多子模块都有自己的 phtml,所以在哪里存储 theme1 phtml 以及在哪里存储 theme2 phtmls ...
任何建议或建议,请谢谢
我们计划用 zf2 和教义 orm 创建一个 CMS。
实际上,我们担心我们的 cms 模板,我们希望我们的系统可以使用多个模板,并通过管理员轻松地在主题之间切换
对于最终用户开发人员来说,创建新模板应该很容易
我们想要关于如何构建模板系统的建议或建议:
有一个核心模块,还有很多子模块都有自己的 phtml,所以在哪里存储 theme1 phtml 以及在哪里存储 theme2 phtmls ...
任何建议或建议,请谢谢
我鼓励你看看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 框架角逐来完成我想要的。
如果您在 application.config.php 中激活另一个具有相同视图和布局(相同的文件夹结构和文件名)的模块,它的视图脚本和布局将在核心模块之后加载时自动使用。
所以你可以简单地让你的 application.config.php 动态加载只包含视图文件夹的活动模板模块。这将是一个简单有效的解决方案,无需任何其他库。
此外,您还可以使用资产管理器(如assetic)在您的(模板)模块中提供图像、css 等。(看看zf2-assetic-module,我根据assetic编写了自己的assetize-module以满足我的需求......)
新浪,
我在我的 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;?> 在 viewscript layout()->themeurl;?>
我仍在制定我的动态视图。现在我有一个 BaseController 并且我所有的 ActionControllers 都扩展了它。它有一个 render() 函数可以构建所需的视图,但不确定它是否可以扩展,希望尝试一些占位符的想法。
application_settings_service 是一个设置服务,它获取用于调用系统的任何域的设置,并构建一个可通过站点的任何服务感知部分访问的数组。那是一个完全不同的帖子,它可能会或可能不会摩擦 MVC 窥视错误的方式
我知道您的问题已标记为已回答,只是想我会分享
埃里克