Joomla组件:在视图中包含/需要php

时间:2015-07-05 10:07:00

标签: php html joomla joomla3.0

这是我第一次为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行。

  • 尝试制作一个String并将其传递给变量。

问题

  • 是否可以在模板中包含php文件(default.php)?
  • 如果没有,还有其他办法吗?
  • 如果是的话,这是Joomla的好习惯吗?

由于

2 个答案:

答案 0 :(得分:0)

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

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');

答案 1 :(得分:0)

您不需要任何组件来执行此操作。我的意思是你可以 这样做只是作为一个中间步骤,因为Joomla旨在通过让API包含基本上与你所有作品相同的模块来使这一切变得更容易。

你会注意到在joomla模板文件中有一些模块位置被加载的地方。这些是菜单,页脚,侧边栏等。

根据它们的不同,您应该将每个子部分作为一个模块。在某些情况下,如果你只是加载一些html,你可以使用已经在Joomla中的现有模块或制作一个“自定义html”模块。在其他情况下makin一个joomla模块真的很简单,只需几个文件,你可以把你的PHP代码放在那里,真的开始你可以把整个东西放在模块的tmpl / default.php中,或者你可以把它分开帮手和布局。 如果您利用CMS而不是与之抗争,那么从长远来看,您会更加快乐。

组件仅适用于“body”区域,您需要做的是制作模板,然后制作模块。