繁体   English   中英

在opencart 2.0.3中找到各个.tpl文件的控制器文件

[英]Locating the controller file of respective .tpl file in opencart 2.0.3

我一直试图在Opencart主页页面上显示自定义数据,但无法找到从中将数据发送到.tpl文件的控制器。 我正在使用pavo flshshop主题2.0.3。 我已将数据添加到catalog/controller/product/product.php (我不确定控制器是否正确)文件中。 当我在.tpl文件中调用该变量时,它说“未定义的变量”。 有人请帮我处理数据的来源。

这是我的.tpl路径:

C:\\ XAMPP \\ htdocs中\\ grceducators \\目录\\视图\\主题\\ pav_flashshop \\模板\\ COMMON \\产品\\ default.tpl

这是default.tpl代码:


<div class="product-meta clearfix">
    <h6 class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></h6>
    <h6 class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['custom_desc']; ?></a></h6>

    <?php if( isset($product['description']) ){ ?>
        <p class="description"><?php echo utf8_substr( strip_tags($product['description']),0,200);?>...</p>
    <?php } ?>
    <div class="bottom clearfix">
        <?php if ($product['price']) { ?>
            <div class="price">
              <?php if (!$product['special']) { ?>
              <span class="price-new"><?php echo $product['price']; ?></span>
              <?php } else { ?>
              <span class="price-new"><?php echo $product['special']; ?></span><span class="price-old"><?php echo $product['price']; ?></span>
              <?php } ?>
            </div>


        <?php } ?>
         <?php if ($product['description']) { ?>
        <div class="price">
              <span class="price-new"><?php echo $product['custom_desc']; ?></span>

            </div>
            <?php } ?>
    </div>
</div>

任何帮助将不胜感激。

您在目录/控制器/公用文件夹中看到的某些控制器文件是“其他内容的容器”。 我将解释您的情况,例如在文件home.php中

如果打开该文件,则只会看到几行代码,其中一些行如下所示:

$ data ['column_left'] = $ this-> load-> controller('common / column_left') ;

使用这行代码,Opencart会加载分配给主页左侧列的所有模块(从Admin转到页面Design- > layouts- > Home )。

$ data ['column_left']是一个很大的对象,里面有一个模块列表:

这只是一个伪代码,可让您了解东西的工作原理 ):

$data['column_left'] {

      module 1  {...}  controller + template    
      module 2  {...}  controller + template
      module 3  {...}  controller + template
}

每个模块都有自己的控制器 +(模型)+ 模板

为了快速获取正在渲染模板的控制器,首先必须查看主页的布局(从“管理”面板)。 您将看到四个主要部分: 内容顶部内容底部左列右列 “。

在您的首页上打印出您的内容。 例如,如果它在左列中,则呈现tpl文件的模块是您(Admin)主页布局左列中列出的模块之一。

通常,模块名称足以获取正在渲染tpl的模块(然后是哪个控制器)(通常,您只需要在目录/控制器/扩展名/模块文件夹中查找与布局页面中与模块名称匹配的文件名即可) )。

我描述的方法在大多数情况下都可以使用,而无需使用任何调试工具。

我遇到了第三方扩展,如rubik cubes。 在这些情况下,您必须使用debug_backtrace()

该功能(特别是在大型框架上)可以输出大量数据。 为了减少该函数的输出,我建议您:

  1. 查找在页面的哪一部分呈现内容内容顶部内容底部左列右列 ),然后打开文件catalog / controller / common / [ your_section ] .php

  2. 将以下代码复制到该文件的底部(我将您的修改版粘贴到debug_backtrace(),它格式化输出,以便您可以从浏览器轻松读取它):


// PHP < 5.3.6    
foreach (debug_backtrace() as $trace) {    
echo sprintf("\n%s:%s %s::%s", (isset($trace['file'])? $trace['file'] : '') , (isset($trace['line'])? $trace['line'] : ''), (isset($trace['class'])? $trace['class'] : ''), (isset($trace['function'])? $trace['function'] : ''));    

}    
die;

// PHP >= 5.3.6    
debug_print_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);    
die;

暂无
暂无

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

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