Php 在opencart 2.0.3中查找相应.tpl文件的控制器文件
我一直在尝试在Opencart主页中显示自定义数据,但找不到将数据发送到.tpl文件的控制器。我正在使用pavo flshshop主题2.0.3。我已经在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
目录/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() 该功能,特别是在大型框架上,可以输出大量数据。为了减少该功能的输出,我建议您:
//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;