Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在opencart 2.0.3中查找相应.tpl文件的控制器文件_Php_Controller_Opencart - Fatal编程技术网

Php 在opencart 2.0.3中查找相应.tpl文件的控制器文件

Php 在opencart 2.0.3中查找相应.tpl文件的控制器文件,php,controller,opencart,Php,Controller,Opencart,我一直在尝试在Opencart主页中显示自定义数据,但找不到将数据发送到.tpl文件的控制器。我正在使用pavo flshshop主题2.0.3。我已经在目录/controller/product/product.php文件中添加了数据(我不确定是否是正确的controller)。当我在.tpl文件中调用该变量时,它会显示“undefined variable”。有人请帮助我从哪里来的数据 这是我的.tpl路径: C:\xampp\htdocs\grceducators\catalog\view

我一直在尝试在Opencart主页中显示自定义数据,但找不到将数据发送到.tpl文件的控制器。我正在使用pavo flshshop主题2.0.3。我已经在
目录/controller/product/product.php
文件中添加了数据(我不确定是否是正确的controller)。当我在.tpl文件中调用该变量时,它会显示“undefined variable”。有人请帮助我从哪里来的数据

这是我的.tpl路径:

C:\xampp\htdocs\grceducators\catalog\view\theme\pav\u flashshop\template\common\product\default.tpl

以下是default.tpl代码:





任何帮助都将不胜感激。

您在目录/controller/common文件夹中看到的一些控制器文件是“其他东西的容器”。我将解释在home.php文件中发生的情况

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

$data['column\u left']=$this->load->controller('common/column\u left')

使用这一行代码,Opencart将加载分配给主页左侧栏的所有模块(从管理员处,转到页面设计->布局->主页

$data['column\u left']是一个大对象,里面有一个模块列表:

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

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

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

检查打印内容的主页。例如,如果它位于左侧栏,则呈现tpl文件的模块是(管理员)主页布局左侧栏中列出的模块之一

通常,模块名称足以获取哪些模块(然后是哪些控制器)正在呈现tpl(通常,您只需查看目录/controller/extension/module文件夹,即可在布局页面中找到与模块名称匹配的文件名)

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

我遇到过像rubik cubes这样编写的第三方扩展。在这种情况下,您必须使用debug\u backtrace()

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

  • 查找页面的哪个部分呈现内容(内容顶部内容底部列左侧列右侧),然后打开文件目录/controller/common/[您的_部分]

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


  • //PHP<5.3.6
    foreach(debug_backtrace()作为$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']:”);
    }    
    死亡
    //PHP>=5.3.6
    调试\打印\回溯(调试\回溯\忽略\参数);
    死亡
    
    能否显示控制器代码,在哪里设置此变量?请尝试使用记事本++搜索default.tpl的呈现位置。使用“在文件中查找”并添加搜索短语default。tpl@MorganFreeFarm我在这里包含了两块控制器代码。这里/$data['duration']=html\u entity\u decode($product\u info['duration'],ENT\u引号,'UTF-8'))$data['schedule']=html_entity_decode($product_info['schedule'],ENT_引号,'UTF-8');此处/$data['products'][]=array('duration'=>$result['duration'],'schedule'=>$result['schedule'],'href'=>this->$url->链接('product/product','product\u id='.$result['product\u id']));使用此控制器,我实际上成功地在产品页面中显示。@K.B.谢谢您的回复。我已经尝试过搜索,但没有成功。@common/home controller中我有此文件。如果(isset($this->request->get['route']){$this->document->addLink(HTTP_SERVER,'canonical');}$data['column\u left'=$this->load->controller('common/column\u left');$data['column\u right']=$this->load->controller('common/column\u right');$data['content\u top']=$this->load->controller('common/column\u right');$data['footer']=$this->load->controller('common/footer');$data['header']=$this->load->controller('common/header');这真是一个很好的解释,弗兰克。因为我是Opencart新手,所以我学习了主页的数据流。因为我使用的是pavo flshshop 2.0.3版本。我没有用第一种方法fid控制器。因为没有同名的文件。所以我使用了第二种方法。我粘贴了提供的代码u,得到了这个错误。注意:未定义的索引:在第77行的C:\xampp\htdocs\grceducators\catalog\controller\common\content\u top.php中初始化。嗨,Sadhik,谢谢你,我已经编辑了代码,我没有测试它,但是你不应该再看到那个错误了
    <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>
    
    $data['column_left'] {
    
          module 1  {...}  controller + template    
          module 2  {...}  controller + template
          module 3  {...}  controller + template
    }
    
    // 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;