prestashop smarty模板中的Geoip
我需要处理product.tpl中的访客国家代码。是否有任何带有国家代码的prestashop全局变量,我可以在smarty模板中使用?如果没有,我可以在哪里添加它?要执行此操作,请首先转到prestashop smarty模板中的Geoip,prestashop,geoip,smarty3,prestashop-1.5,Prestashop,Geoip,Smarty3,Prestashop 1.5,我需要处理product.tpl中的访客国家代码。是否有任何带有国家代码的prestashop全局变量,我可以在smarty模板中使用?如果没有,我可以在哪里添加它?要执行此操作,请首先转到首选项>>地理位置,并启用它,同时下载.dat文件 在此之后,将此代码添加到controllers>>front>>ProductController.php第238行之前 include_once(_PS_GEOIP_DIR_.'geoipcity.inc'); $gi = geoip_open(realp
首选项>>地理位置,并启用它,同时下载.dat文件
在此之后,将此代码添加到controllers>>front>>ProductController.php
第238行之前
include_once(_PS_GEOIP_DIR_.'geoipcity.inc');
$gi = geoip_open(realpath(_PS_GEOIP_DIR_.'GeoLiteCity.dat'), GEOIP_STANDARD);
$record = geoip_record_by_addr($gi, Tools::getRemoteAddr());
在第260行附近的smarty assign中添加此代码
'country_name' => $record->country_name //change country_name to code etc
在product.tpl中的任意位置使用$country\u name
:
在ps-1.5.6中测试,我使用@Raza的代码构建它作为对FrontController的覆盖,目的是不仅在product.tpl中显示它,而且在所有的商店页面上显示它:
在覆盖>类>控制器>创建文件FrontController.php中
输入以下代码
class FrontController extends FrontControllerCore
{
public function initContent()
{
parent::initContent();
include_once(_PS_GEOIP_DIR_.'geoipcity.inc');
$gi = geoip_open(realpath(_PS_GEOIP_DIR_.'GeoLiteCity.dat'), GEOIP_STANDARD);
$record = geoip_record_by_addr($gi, Tools::getRemoteAddr());
$this->context->smarty->assign('country_name', $record->country_name); //change country_name to code etc
}
}
@Raza:在.tpl文件中使用{$country_name}可以以英文显示国家名称。你知道如何使用PS的核心翻译,以活跃的商店语言向全国推广吗
谢谢@nortonOn:您可以尝试使用cookie中的id_lang,这样,它应该以商店语言显示国家名称。
应该是这样的:$country->name[intval($this->context->cookie->id_lang)]代码>
我希望它能帮助你:)