// Show the seller name on the cart & blockcart on your agile marketplace.
//
// 1) Back up your files before you change anything;
// 2) I use Prestashop 1.6.1.4 + AgileMultipleSeller 3.3.1 + AgileSellerShipping, you may need to change something to make it work;
// 3) If you don't have AgileSellerShipping installed just ignore the last template snippet hookextracarrier.tpl
// 4) Note when you upgrade your agilemultipleseller module, your changes will disappear;
// 5) As always before changing anything back up everything, turn on debug mode if you get a blank page;
//---------------------------------------------------------
//-------------------------------------------------------------
// Add the following function to the override class, not the core class.
//-------------------------------------------------------------
override/classes/Cart.php
- Code: Select all
/**
* Return cart products with seller details sorted by seller_name
* to display on shopping cart & blockcart
*
* carlo at EggBay.it
*
* @result array Products
*/
public function getProducts($refresh = false, $id_product = false, $id_country = null)
{
if (!$this->id) { return array(); }
$this->_products = parent::getProducts($refresh, $id_product, $id_country);
if (empty($this->_products)) { return array(); }
if(!Module::isInstalled('agilemultipleseller')) return $this->_products;
$context = Context::getContext();
$sql = '
SELECT distinct IFNULL(po.id_owner,0) AS id_seller,
IFNULL(cp.id_product,0) AS id_product,
CASE WHEN IFNULL(sl.`company`,\'\')=\'\' THEN CONCAT(e.firstname,\' \', e.lastname) ELSE sl.`company` END AS seller_name,
IFNULL(sl.`address1`,\'\') AS seller_add1,
IFNULL(sl.`address2`,\'\') AS seller_add2,
IFNULL(sl.`city`,\'\') AS seller_city
FROM ' . _DB_PREFIX_ . 'cart_product cp
LEFT JOIN ' . _DB_PREFIX_ . 'product_owner po ON cp.id_product=po.id_product
LEFT JOIN ' . _DB_PREFIX_ . 'sellerinfo s ON po.id_owner=s.id_seller
LEFT JOIN ' . _DB_PREFIX_ . 'sellerinfo_lang sl ON (sl.id_sellerinfo=s.id_sellerinfo AND sl.id_lang=' . intval($context->language->id) . ')
LEFT JOIN ' . _DB_PREFIX_ . 'employee e ON (po.`id_owner` = e.`id_employee`)
WHERE cp.id_cart=' . intval($this->id) . '
';
$sellers = Db::getInstance()->ExecuteS($sql);
if ($this->_products !== null) {
foreach ($this->_products as $k => $product) {
foreach ($sellers as $seller) {
if ($this->_products[$k]['id_product']==$seller['id_product']) {
if ((int) $seller['id_seller'] == 0)
$product['seller_name'] = Configuration::get('PS_SHOP_NAME');
else
$product['seller_name'] = $seller['seller_name'];
$product['seller_add1'] = $seller['seller_add1'];
$product['seller_add2'] = $seller['seller_add2'];
$product['seller_city'] = $seller['seller_city'];
continue;
}
}
$this->_products[$k] += $product;
}
usort($this->_products,function($a,$b){return strnatcmp($a["seller_name"],$b["seller_name"]);});
return $this->_products;
}
}
//-------------------------------------------------
// Edit these templates and add the following snippets to display the sellers details
//-------------------------------------------------
blockcart.tpl
- Code: Select all
{if $product.seller_name}
<small>
<p></p>
<p><strong>{l s='Sold by' mod='blockcart'}: </strong></br><a href="{$link->getProductLink($product, $product.link_rewrite, $product.category, null, null, $product.id_shop, $product.id_product_attribute)|escape:'html':'UTF-8'}" title="{l s='Seller details' mod='blockcart'}">
{$product.seller_name|truncate:60:'...'|escape:'html':'UTF-8'}{if $product.seller_city}, {$product.seller_city|escape:'html':'UTF-8'}{/if}
</a></p>
</small>
{/if}
//--------------
shopping-cart-product-line.tpl
- Code: Select all
{if $product.seller_name}
<small class="cart_ref">
<strong>{l s='Sold by'}{$smarty.capture.default}</strong></br>
{$product.seller_name|escape:'html':'UTF-8'}{if $product.seller_city}, {$product.seller_city|escape:'html':'UTF-8'}{/if}
</small>
{/if}
//--------------
* this step only if you have agileshipping installed.
agileshipping -> hookextracarrier.tpl
- Code: Select all
{if $product.seller_name}
<p>
<small class="cart_ref">
<strong>{l s='Sold by' mod='agilesellershipping'}: </strong>
{$product.seller_name|escape:'html':'UTF-8'}{if $product.seller_city}, {$product.seller_city|escape:'html':'UTF-8'}{/if}
</small>
</p>
{/if}
//------------------------
* Cache will need refreshing to see the changes.