繁体   English   中英

Joomla组件:在视图中包含/需要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行。

  • 试图制作一个字符串,并通过一个变量传递。

问题

  • 是否可以在模板(default.php)中包含php文件?
  • 如果没有,还有其他方法吗?
  • 如果是,那么Joomla中的良好做法吗?

谢谢

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

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

您不需要任何组件即可执行任何此操作。 我的意思是您可以执行此操作,但这仅应作为中间步骤,因为Joomla旨在通过使API包含模块来简化所有这些工作,而这些模块基本上就是您要做的所有事情。

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

取决于它们是什么,您应该真正将这些小节中的每一个作为模块。 在某些情况下,您可能会使用Joomla中已经存在的模块,或者如果只是加载一些html,则可以制作一个“自定义html”模块。 在其他情况下,使用joomla模块确实非常简单,只需几个文件,您可以将php代码放在其中,真正开始时,您可以将整个内容放在模块的tmpl / default.php中,也可以在其中拆分助手和布局。 如果您利用CMS而不是与之抗争,那么从长远来看,您会更加快乐。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM