HTML Template PHP get Header() - 如何获取其内容?
HTML Template PHP get Header() - How access to its content?
我是 PHP 的新手,我正在尝试修改由 prestashop 模块创建的 pdf 的 header。
我想删除徽标图片“spo devis”。
我搜索了很长时间,终于找到了 header 所在的页面。
不幸的是,我不明白它是如何工作的。
这是class结构
class HTMLTemplateQuotationPdf extends HTMLTemplate
{
public $cart;
public $quotation;
public $context;
private $isSeven;
public function __construct($quotation, $smarty)
{ ... }
public function getContent()
{ ... }
public function getHeader()
{ ... }
public function getFooter()
{ ... }
public function getFilename()
{ ... }
public function getBulkFilename()
{ ... }
protected function opartdevisGetTemplate($template_name)
{ ... }
}
对于页脚,很简单,存在一个 tpl 并且代码调用它。
public function getFooter()
{
$shop_address = $this->getShopAddress();
$this->smarty->assign(array(
'available_in_your_account' => $this->available_in_your_account,
'shop_address' => $shop_address,
'shop_fax' => Configuration::get('PS_SHOP_FAX', null, null, (int)$this->cart->id_shop),
'shop_phone' => Configuration::get('PS_SHOP_PHONE', null, null, (int)$this->cart->id_shop),
'shop_details' => Configuration::get('PS_SHOP_DETAILS', null, null, (int)$this->cart->id_shop),
'free_text' => Configuration::get('PS_INVOICE_FREE_TEXT', (int)Context::getContext()->language->id, null, (int)$this->cart->id_shop)
));
return $this->smarty->fetch($this->opartdevisGetTemplate('footer'));
}
protected function opartdevisGetTemplate($template_name)
{
$template = false;
$default_template = rtrim(_PS_MODULE_DIR_, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.'opartdevis/views/templates/front/pdf'.DIRECTORY_SEPARATOR.$template_name.'.tpl';
if ($this->isSeven) {
$overridden_template = _PS_ALL_THEMES_DIR_.$this->shop->theme->getName().DIRECTORY_SEPARATOR.'modules/opartdevis/views/templates/front/pdf'.DIRECTORY_SEPARATOR.$template_name.'.tpl';
} else {
$overridden_template = _PS_ALL_THEMES_DIR_.$this->shop->getTheme().DIRECTORY_SEPARATOR.'modules/opartdevis/views/templates/front/pdf'.DIRECTORY_SEPARATOR.$template_name.'.tpl';
}
if (file_exists($overridden_template)) {
$template = $overridden_template;
} elseif (file_exists($default_template)) {
$template = $default_template;
}
return $template;
}
但是对于header,我迷路了。
public function getHeader()
{
$this->assignCommonHeaderData();
$this->smarty->assign(array(
'header' => $this->module->l('Quotation', 'htmltemplatequotationpdf'),
'title' => '# '.$this->quotation->id,
'date' => Tools::displayDate($this->cart->date_upd),
));
return $this->smarty->fetch($this->getTemplate('header'));
}
我的印象是它调用了自己 (htmltemplatequotationpdf) ...
我没有找到 header 模板 (tpl),我问自己它是否真的存在。
我搜索了所有 img 标签、src 标签、'header' 字和 'pdf' 字。
好像 header 的形状与 classical 模板不同。
你能帮我吗?
提前致谢
你要找的方法在classes/pdf/HTMLTemplate.php里,是assignCommonHeaderData.
你指的是模块调用。
你可以找到
$this->smarty->assign([
'logo_path' => Tools::getShopProtocol() . Tools::getMediaServer(_PS_IMG_) . _PS_IMG_ . $logo,
'img_ps_dir' => Tools::getShopProtocol() . Tools::getMediaServer(_PS_IMG_) . _PS_IMG_,
'img_update_time' => Configuration::get('PS_IMG_UPDATE_TIME'),
'date' => $this->date,
'title' => $this->title,
'shop_name' => $shop_name,
'shop_details' => Configuration::get('PS_SHOP_DETAILS', null, null, (int) $id_shop),
'width_logo' => $width,
'height_logo' => $height,
]);
这是来自 PS 1.7.7.0,但你需要的一切都在那里。
顺便检查一下 tpl 文件,确保不再引用不再传递的变量。
我是 PHP 的新手,我正在尝试修改由 prestashop 模块创建的 pdf 的 header。
我搜索了很长时间,终于找到了 header 所在的页面。 不幸的是,我不明白它是如何工作的。
这是class结构
class HTMLTemplateQuotationPdf extends HTMLTemplate
{
public $cart;
public $quotation;
public $context;
private $isSeven;
public function __construct($quotation, $smarty)
{ ... }
public function getContent()
{ ... }
public function getHeader()
{ ... }
public function getFooter()
{ ... }
public function getFilename()
{ ... }
public function getBulkFilename()
{ ... }
protected function opartdevisGetTemplate($template_name)
{ ... }
}
对于页脚,很简单,存在一个 tpl 并且代码调用它。
public function getFooter()
{
$shop_address = $this->getShopAddress();
$this->smarty->assign(array(
'available_in_your_account' => $this->available_in_your_account,
'shop_address' => $shop_address,
'shop_fax' => Configuration::get('PS_SHOP_FAX', null, null, (int)$this->cart->id_shop),
'shop_phone' => Configuration::get('PS_SHOP_PHONE', null, null, (int)$this->cart->id_shop),
'shop_details' => Configuration::get('PS_SHOP_DETAILS', null, null, (int)$this->cart->id_shop),
'free_text' => Configuration::get('PS_INVOICE_FREE_TEXT', (int)Context::getContext()->language->id, null, (int)$this->cart->id_shop)
));
return $this->smarty->fetch($this->opartdevisGetTemplate('footer'));
}
protected function opartdevisGetTemplate($template_name)
{
$template = false;
$default_template = rtrim(_PS_MODULE_DIR_, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.'opartdevis/views/templates/front/pdf'.DIRECTORY_SEPARATOR.$template_name.'.tpl';
if ($this->isSeven) {
$overridden_template = _PS_ALL_THEMES_DIR_.$this->shop->theme->getName().DIRECTORY_SEPARATOR.'modules/opartdevis/views/templates/front/pdf'.DIRECTORY_SEPARATOR.$template_name.'.tpl';
} else {
$overridden_template = _PS_ALL_THEMES_DIR_.$this->shop->getTheme().DIRECTORY_SEPARATOR.'modules/opartdevis/views/templates/front/pdf'.DIRECTORY_SEPARATOR.$template_name.'.tpl';
}
if (file_exists($overridden_template)) {
$template = $overridden_template;
} elseif (file_exists($default_template)) {
$template = $default_template;
}
return $template;
}
但是对于header,我迷路了。
public function getHeader()
{
$this->assignCommonHeaderData();
$this->smarty->assign(array(
'header' => $this->module->l('Quotation', 'htmltemplatequotationpdf'),
'title' => '# '.$this->quotation->id,
'date' => Tools::displayDate($this->cart->date_upd),
));
return $this->smarty->fetch($this->getTemplate('header'));
}
我的印象是它调用了自己 (htmltemplatequotationpdf) ...
我没有找到 header 模板 (tpl),我问自己它是否真的存在。 我搜索了所有 img 标签、src 标签、'header' 字和 'pdf' 字。
好像 header 的形状与 classical 模板不同。
你能帮我吗?
提前致谢
你要找的方法在classes/pdf/HTMLTemplate.php里,是assignCommonHeaderData.
你指的是模块调用。
你可以找到
$this->smarty->assign([
'logo_path' => Tools::getShopProtocol() . Tools::getMediaServer(_PS_IMG_) . _PS_IMG_ . $logo,
'img_ps_dir' => Tools::getShopProtocol() . Tools::getMediaServer(_PS_IMG_) . _PS_IMG_,
'img_update_time' => Configuration::get('PS_IMG_UPDATE_TIME'),
'date' => $this->date,
'title' => $this->title,
'shop_name' => $shop_name,
'shop_details' => Configuration::get('PS_SHOP_DETAILS', null, null, (int) $id_shop),
'width_logo' => $width,
'height_logo' => $height,
]);
这是来自 PS 1.7.7.0,但你需要的一切都在那里。
顺便检查一下 tpl 文件,确保不再引用不再传递的变量。