簡體   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