这是我第一次为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并将其传递给变量。
问题
由于
答案 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”区域,您需要做的是制作模板,然后制作模块。