Joomla 组件:在视图中包含/需要 php
Posted
技术标签:
【中文标题】Joomla 组件:在视图中包含/需要 php【英文标题】:Joomla Component: include/require php in View 【发布时间】:2015-09-22 14:49:49 【问题描述】:这是我第一次为 Joomla 3 制作组件。 我正在尝试将 php 网站转换为组件。
几乎我的 php 网站的每个视图都是这样构建的:
标题 侧边栏 导航栏 实际内容 页脚 脚本所以基本上它看起来像这样:
来自 php 网站的视图
<?php require_once('includes/header.php'); ?>
<body>
<div">
<?php require_once('includes/sidebar.php') ?>
<div>
<?php require_once('includes/navbar.php') ?>
</div>
<div>
<!-- Content or something -->
</div>
<?php require_once('includes/footer.php') ?>
</div>
<?php require_once('includes/scripts.php') ?>
<script>
</script>
</body>
</html>
但在 Joomla 中这是不可能的。如果我尝试包含或需要像上面这样的 php 文件,它就不起作用。
组件中的视图如下所示:
com_component
../views
../tmpl
default.php
view.html.php
../includes
header.php
footer.php
sidebar.php
scripts.php
navbar.php
Default.php 应该在前端显示仪表板。 这就是我在 default.php 中尝试做的事情:
Default.php
<?php include_once('../../includes/header.php') ?>
<body>
<?php include_once('../../includes/sidebar.php') ?>
<?php include_once('../../includes/navbar.php') ?>
<!-- Some content-->
<?php include_once('../../includes/footer.php') ?>
<!-- etc -->
我做了什么
我发现了一些 JDocument 和 JHTML 函数,它们可以将样式表和 javascript 添加到模板中。但这不是我想要的。
我使用了 Joomla 的 addCustomTag 函数,但它只在模板中显示注释的 php 行。
尝试将其制作成一个字符串并通过变量传递。
问题
是否可以在模板中包含 php 文件(default.php)? 如果没有,还有其他方法吗? 如果是,在 Joomla 中这是一种好的做法吗?谢谢
【问题讨论】:
【参考方案1】:你不需要一个组件来做这些。我的意思是你可以 这样做,但它应该只是一个中间步骤,因为 Joomla 旨在通过 API 包含模块来简化这一切,这些模块基本上就是你所有的部分。
你会注意到在 joomla 模板文件中有一些地方是加载模块位置的。这些是菜单、页脚、侧边栏等。
根据它们是什么,您应该真正将这些小节中的每一个都设为一个模块。在某些情况下,您可能可以使用 Joomla 中已经存在的模块,或者如果您只是加载一些 html,则可以制作“自定义 html”模块。在其他情况下,制作一个 joomla 模块真的很容易,只需几个文件,你可以把你的 php 代码放在那里,真正开始你可以把整个东西放在模块的 tmpl/default.php 中,或者你可以将它分开助手和布局。 如果您利用 CMS 而不是与之抗争,从长远来看,您会更快乐。
组件只针对“body”区域,你需要做的是先做模板,然后再做模块。
【讨论】:
【参考方案2】:要将文件包含在与给定文件相同的目录中,您可以使用:
include __DIR__ . '/../includes/header.php'
如果您不使用 DIR,当前路径与主页(站点根目录中的 index.php)相关,而不与布局(default.php)相关。
一个更兼容 Joomla 的解决方案是将所有“子布局”放在同一个文件夹中,并使用如下常规命名:
com_component/
views/
myview/
view.html.php
tmpl/
default.php
default_header.php
default_footer.php
....
然后您可以在主布局中使用以下代码:
echo $this->loadTemplate('header');
...
echo $this->loadTemplate('footer');
【讨论】:
谢谢,我创建了一个 default_header.php 并在布局中呼应了它,这就成功了以上是关于Joomla 组件:在视图中包含/需要 php的主要内容,如果未能解决你的问题,请参考以下文章