[英]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行。
试图制作一个字符串,并通过一个变量传递。
问题
谢谢
要将文件包含在与给定文件相同的目录中,可以使用:
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.