Joomla 组件:include/require php 在视图中
Joomla Component: include/require php in View
这是我第一次为 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 -->
我做了什么
我发现了一些可以向模板添加样式表和 javascript 的 JDocument 和 JHTML 函数。但这不是我要找的。
我使用了 Joomla 的 addCustomTag 函数,但它只在模板中显示注释的 php 行。
尝试将其制成字符串并通过变量传递。
问题
- 是否可以在模板中包含 php 个文件 (default.php)?
- 如果不行,请问还有其他方法吗?
- 如果是,那是 Joomla 中的良好做法吗?
谢谢
要将文件包含在与给定文件相同的目录中,您可以使用:
include __DIR__ . '/../includes/header.php'
如果您不使用 DIR 当前路径与主页相关(站点根目录中的 index.php)而不是布局(default.php).
一个更兼容 Joomla 的解决方案是将你所有的 "sub-layouts" 放在同一个文件夹中,并使用这样的常规命名:
com_component/
views/
myview/
view.html.php
tmpl/
default.php
default_header.php
default_footer.php
....
然后您可以在主布局中使用以下代码:
echo $this->loadTemplate('header');
...
echo $this->loadTemplate('footer');
您不需要组件来执行任何这些操作。我是说你可以
这样做,但这应该只是一个中间步骤,因为 Joomla 旨在通过 API 包含模块来简化所有这一切,这基本上就是您所有的部分。
您会注意到在joomla 模板文件中有加载模块位置的地方。这些是菜单、页脚、侧边栏等内容。
根据它们的具体内容,您应该真正将这些小节中的每一个都作为一个模块。在某些情况下,您可能可以使用 Joomla 中已有的模块,或者如果您只是加载一些 html,则可以制作一个 "custom html" 模块。在其他情况下,制作一个 joomla 模块非常简单,只需几个文件,您可以将 php 代码放在那里,真正开始您可以将整个东西放在 tmpl/default.php 用于模块,或者您可以将它拆分为助手和布局。
如果您利用 CMS 而不是与它作斗争,那么从长远来看,您会更快乐 运行。
组件仅适用于"body"区域,您需要做的是制作模板,然后制作模块。
这是我第一次为 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 -->
我做了什么
我发现了一些可以向模板添加样式表和 javascript 的 JDocument 和 JHTML 函数。但这不是我要找的。
我使用了 Joomla 的 addCustomTag 函数,但它只在模板中显示注释的 php 行。
尝试将其制成字符串并通过变量传递。
问题
- 是否可以在模板中包含 php 个文件 (default.php)?
- 如果不行,请问还有其他方法吗?
- 如果是,那是 Joomla 中的良好做法吗?
谢谢
要将文件包含在与给定文件相同的目录中,您可以使用:
include __DIR__ . '/../includes/header.php'
如果您不使用 DIR 当前路径与主页相关(站点根目录中的 index.php)而不是布局(default.php).
一个更兼容 Joomla 的解决方案是将你所有的 "sub-layouts" 放在同一个文件夹中,并使用这样的常规命名:
com_component/
views/
myview/
view.html.php
tmpl/
default.php
default_header.php
default_footer.php
....
然后您可以在主布局中使用以下代码:
echo $this->loadTemplate('header');
...
echo $this->loadTemplate('footer');
您不需要组件来执行任何这些操作。我是说你可以 这样做,但这应该只是一个中间步骤,因为 Joomla 旨在通过 API 包含模块来简化所有这一切,这基本上就是您所有的部分。
您会注意到在joomla 模板文件中有加载模块位置的地方。这些是菜单、页脚、侧边栏等内容。
根据它们的具体内容,您应该真正将这些小节中的每一个都作为一个模块。在某些情况下,您可能可以使用 Joomla 中已有的模块,或者如果您只是加载一些 html,则可以制作一个 "custom html" 模块。在其他情况下,制作一个 joomla 模块非常简单,只需几个文件,您可以将 php 代码放在那里,真正开始您可以将整个东西放在 tmpl/default.php 用于模块,或者您可以将它拆分为助手和布局。 如果您利用 CMS 而不是与它作斗争,那么从长远来看,您会更快乐 运行。
组件仅适用于"body"区域,您需要做的是制作模板,然后制作模块。