[英]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.