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 -->

我做了什么

问题

谢谢

要将文件包含在与给定文件相同的目录中,您可以使用:

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"区域,您需要做的是制作模板,然后制作模块。