我已经有了条款和条件链接并添加了Fancybox,但是当它点击链接时,它会出现整个网页,而不仅仅是花式框容器中的内容。
链接的格式为site / online-store / au / content / 3-terms-of-use-use?content_only = 1
然而,content_only = 1似乎没有做任何事情?
答案 0 :(得分:1)
问题是此链接正在从https页面加载非https内容。
要修复它,请编辑controllers / front / ParentOrderController.php
$this->link_conditions = $this->context->link->getCMSLink($cms, $cms->link_rewrite, false);
并将最后一个参数更改为true以强制使用https
$this->link_conditions = $this->context->link->getCMSLink($cms, $cms->link_rewrite, true);
答案 1 :(得分:0)
问题是因为您加载的CMS没有所需的参数。因此,条件
/controllers/front/CmsController.php
if (Configuration::get('PS_SSL_ENABLED') && Tools::getValue('content_only') && $id_cms && Validate::isLoadedObject($this->cms) && in_array($id_cms, array((int)Configuration::get('PS_CONDITIONS_CMS_ID'), (int)Configuration::get('LEGAL_CMS_ID_REVOCATION'))))
{
$this->ssl = true;
}
返回false。只需用
替换它 $this->ssl = true;
...多田
答案 2 :(得分:0)
这将适用于PrestaShop 1.6.x / 1.7.x,并将在Fancybox中打开ToS
在您的控制器中:
$cms = new CMS(Configuration::get('PS_CONDITIONS_CMS_ID'), $this->context->language->id);
$conditions_link = $this->context->link->getCMSLink($cms, $cms->link_rewrite).'?content_only=1';
$this->addJqueryPlugin(array('fancybox'));
$this->context->smarty->assign(['conditions_link' => $conditions_link]);
然后,在您的.tpl文件中:
<a class="fancybox-tos" href="{$conditions_link}">{l s='Terms of service' d='Shop.Theme.Checkout'}</a>
最后,在您的.js文件中:
$(document).ready(function() {
$('.fancybox-tos').fancybox({
type: 'iframe',
autoDimensions: false,
autoSize: false,
width: 600,
height: 'auto',
helpers: {
overlay: {
locked: false
}
}
});
});
我希望这会有所帮助!