我有一个在Prestashop 1.6上运行的网站。我们能够安装和设置默认商店以及几个多主机。我们遇到的问题是,随着我们继续为我们的地点创建多元化服务并将产品添加到这些商店,我们希望这些产品能够显示在我们的默认产品上#34; Master"店。有没有办法完成这项工作?
答案 0 :(得分:0)
我确信这种自定义必须在代码中完成,但这并不是很难。您可以构建一个模块来查询产品并将其显示在任何显示挂钩中,例如displayLeftColumnProduct
或displayHome
。
第二种方法是使用覆盖。覆盖Product
课程或ProductController
也可能有效,但在此我将向您展示如何通过覆盖来完成此任务。
查看Product
课程,在getProducts
方法(https://github.com/PrestaShop/PrestaShop/blob/1.6/classes/Product.php#L1069)中,调用Shop::addSqlAssociation('product', 'p')
为商店创建JOIN。要通过它,我们需要覆盖Shop::addSqlAssociation
方法(https://github.com/PrestaShop/PrestaShop/blob/1.6/classes/shop/Shop.php#L954)并检查当前商店是否为“主”,例如:
class Shop extends ShopCore {
public static function addSqlAssociation($table, $alias, $inner_join = true, $on = null, $force_not_default = false)
{
// It better to check using URL
if (self::$context_id_shop == 1) return '';
return parent::addSqlAssociation($table, $alias, $inner_join, $on, $force_not_default);
}
}