Jump to content

http://www.ABC.com/es/fabricantes (url ejemplo)


sbm

Recommended Posts

abre el manufacturer.php en la carpeta classes, y podras ver las opciones de orden aqui

 

public static function getManufacturers($getNbProducts = false, $id_lang = 0, $active = true, $p = false, $n = false, $all_group = false)

 

debes cambiar esto

 

ORDER BY m.`name` ASC

 

por

 

ORDER BY p.`quantity` ASC

Link to comment
Share on other sites

hola Shaker,

 

Muchas gracias por tu respuesta. Hice el cambio pero ahora sale una sola marca, y 0 productos.

 

Así quedó el codigo:

 

<?php

/*

* 2007-2012 PrestaShop

*

* NOTICE OF LICENSE

*

* This source file is subject to the Open Software License (OSL 3.0)

* that is bundled with this package in the file LICENSE.txt.

* It is also available through the world-wide-web at this URL:

* http://opensource.or...ses/osl-3.0.php

* If you did not receive a copy of the license and are unable to

* obtain it through the world-wide-web, please send an email

* to [email protected] so we can send you a copy immediately.

*

* DISCLAIMER

*

* Do not edit or add to this file if you wish to upgrade PrestaShop to newer

* versions in the future. If you wish to customize PrestaShop for your

* needs please refer to http://www.prestashop.com for more information.

*

* @author PrestaShop SA <[email protected]>

* @copyright 2007-2012 PrestaShop SA

* @version Release: $Revision: 16875 $

* @license http://opensource.or...ses/osl-3.0.php Open Software License (OSL 3.0)

* International Registered Trademark & Property of PrestaShop SA

*/

 

class ManufacturerCore extends ObjectModel

{

public $id;

 

/** @var string Name */

public $name;

 

/** @var mixed A description */

public $description;

 

/** @var mixed A short description */

public $short_description;

 

/** @var int Address */

public $id_address;

 

/** @var string Object creation date */

public $date_add;

 

/** @var string Object last modification date */

public $date_upd;

 

/** @var string Friendly URL */

public $link_rewrite;

 

/** @var mixed Meta title */

public $meta_title;

 

/** @var mixed Meta keywords */

public $meta_keywords;

 

/** @var mixed Meta description */

public $meta_description;

 

/** @var boolean active */

public $active;

 

protected $fieldsRequired = array('name');

protected $fieldsSize = array('name' => 64);

protected $fieldsValidate = array('name' => 'isCatalogName');

 

protected $fieldsSizeLang = array('short_description' => 254, 'meta_title' => 128, 'meta_description' => 255, 'meta_description' => 255);

protected $fieldsValidateLang = array('description' => 'isString', 'short_description' => 'isString', 'meta_title' => 'isGenericName', 'meta_description' => 'isGenericName', 'meta_keywords' => 'isGenericName');

 

protected $table = 'manufacturer';

protected $identifier = 'id_manufacturer';

 

protected $webserviceParameters = array(

'fields' => array(

'active' => array(),

'link_rewrite' => array('getter' => 'getLink', 'setter' => false),

),

'associations' => array(

'addresses' => array('resource' => 'address', 'setter' => false, 'fields' => array(

'id' => array('xlink_resource' => 'addresses'),

)),

),

);

 

public function __construct($id = NULL, $id_lang = NULL)

{

parent::__construct($id, $id_lang);

 

/* Get the manufacturer's id_address */

$this->id_address = $this->getManufacturerAddress();

$this->link_rewrite = $this->getLink();

$this->image_dir = _PS_MANU_IMG_DIR_;

}

 

public function getFields()

{

parent::validateFields();

if (isset($this->id))

$fields['id_manufacturer'] = (int)($this->id);

$fields['name'] = pSQL($this->name);

$fields['date_add'] = pSQL($this->date_add);

$fields['date_upd'] = pSQL($this->date_upd);

$fields['active'] = (int)($this->active);

return $fields;

}

 

public function getTranslationsFieldsChild()

{

$fieldsArray = array('description', 'short_description', 'meta_title', 'meta_keywords', 'meta_description');

$fields = array();

$languages = Language::getLanguages(false);

$defaultLanguage = _PS_LANG_DEFAULT_;

foreach ($languages as $language)

{

$fields[$language['id_lang']]['id_lang'] = $language['id_lang'];

$fields[$language['id_lang']][$this->identifier] = (int)($this->id);

 

foreach ($fieldsArray as $field)

{

if (!Validate::isTableOrIdentifier($field))

die(Tools::displayError());

 

/* Check fields validity */

if (isset($this->{$field}[$language['id_lang']]) && !empty($this->{$field}[$language['id_lang']]))

$fields[$language['id_lang']][$field] = pSQL($this->{$field}[$language['id_lang']], true);

elseif (in_array($field, $this->fieldsRequiredLang))

$fields[$language['id_lang']][$field] = pSQL($this->{$field}[$defaultLanguage]);

else

$fields[$language['id_lang']][$field] = '';

 

}

 

$fields[$language['id_lang']]['description'] = (isset($this->description[$language['id_lang']])) ? pSQL($this->description[$language['id_lang']], true) : '';

$fields[$language['id_lang']]['short_description'] = (isset($this->short_description[$language['id_lang']])) ? pSQL($this->short_description[$language['id_lang']], true) : '';

}

return $fields;

}

 

public function delete()

{

if ($this->id_address)

{

$address = new Address((int)$this->id_address);

if (!Validate::isLoadedObject($address) || !$address->delete())

return false;

}

 

if (Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'product` SET `id_manufacturer` = 0 WHERE `id_manufacturer` = '.(int)$this->id) && parent::delete())

return $this->deleteImage();

 

return false;

}

 

/**

* Delete several objects from database

*

* return boolean Deletion result

*/

public function deleteSelection($selection)

{

if (!is_array($selection) || !Validate::isTableOrIdentifier($this->identifier) || !Validate::isTableOrIdentifier($this->table))

die(Tools::displayError());

$result = true;

foreach ($selection AS $id)

{

$this->id = (int)($id);

$this->id_address = self::getManufacturerAddress();

$result = $result AND $this->delete();

}

return $result;

}

 

protected function getManufacturerAddress()

{

if (!(int)($this->id))

return false;

$result = Db::GetInstance(_PS_USE_SQL_SLAVE_)->getRow('SELECT `id_address` FROM '._DB_PREFIX_.'address WHERE `id_manufacturer` = '.(int)($this->id));

if (!$result)

return false;

return $result['id_address'];

}

 

/**

* Return manufacturers

*

* @param boolean $getNbProducts [optional] return products numbers for each

* @return array Manufacturers

*/

public static function getManufacturers($getNbProducts = false, $id_lang = 0, $active = true, $p = false, $n = false, $all_group = false)

{

if (!$id_lang)

$id_lang = (int)_PS_LANG_DEFAULT_;

$sql = 'SELECT m.*, ml.`description`';

$sql.= ' FROM `'._DB_PREFIX_.'manufacturer` m

LEFT JOIN `'._DB_PREFIX_.'manufacturer_lang` ml ON (m.`id_manufacturer` = ml.`id_manufacturer` AND ml.`id_lang` = '.(int)($id_lang).')

'.($active ? ' WHERE m.`active` = 1' : '');

$sql.= ' ORDER BY p.`quantity` ASC'.($p ? ' LIMIT '.(((int)($p) - 1) * (int)($n)).','.(int)($n) : '');

$manufacturers = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql);

if ($manufacturers === false)

return false;

if ($getNbProducts)

{

$sqlGroups = '';

if (!$all_group)

{

$groups = FrontController::getCurrentCustomerGroups();

$sqlGroups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1');

}

foreach ($manufacturers as $key => $manufacturer)

{

$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('SELECT p.`id_product`

FROM `'._DB_PREFIX_.'product` p

LEFT JOIN `'._DB_PREFIX_.'manufacturer` as m ON (m.`id_manufacturer`= p.`id_manufacturer`)

WHERE m.`id_manufacturer` = '.(int)($manufacturer['id_manufacturer']).

($active ? ' AND p.`active` = 1 ' : '').

($all_group ? '' : ' AND p.`id_product` IN (

SELECT cp.`id_product`

FROM `'._DB_PREFIX_.'category_group` cg

LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`)

WHERE cg.`id_group` '.$sqlGroups.')'));

 

$manufacturers[$key]['nb_products'] = sizeof($result);

}

}

$rewrite_settings = (int)Configuration::get('PS_REWRITING_SETTINGS');

for ($i = 0; $i < sizeof($manufacturers); $i++)

if ($rewrite_settings)

$manufacturers[$i]['link_rewrite'] = Tools::link_rewrite($manufacturers[$i]['name'], false);

else

$manufacturers[$i]['link_rewrite'] = 0;

return $manufacturers;

}

 

/**

* @deprecated

*/

public static function getManufacturersWithoutAddress()

{

Tools::displayAsDeprecated();

$sql = 'SELECT m.* FROM `'._DB_PREFIX_.'manufacturer` m

LEFT JOIN `'._DB_PREFIX_.'address` a ON (a.`id_manufacturer` = m.`id_manufacturer` AND a.`deleted` = 0)

WHERE a.`id_manufacturer` IS NULL';

return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql);

}

 

/**

* Return name from id

*

* @param integer $id_manufacturer Manufacturer ID

* @return string name

*/

static protected $cacheName = array();

public static function getNameById($id_manufacturer)

{

if (!isset(self::$cacheName[$id_manufacturer]))

self::$cacheName[$id_manufacturer] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('

SELECT `name` FROM `'._DB_PREFIX_.'manufacturer` WHERE `id_manufacturer` = '.(int)($id_manufacturer).' AND `active` = 1');

return self::$cacheName[$id_manufacturer];

}

 

public static function getIdByName($name)

{

$result = Db::getInstance()->getRow('

SELECT `id_manufacturer`

FROM `'._DB_PREFIX_.'manufacturer`

WHERE `name` = \''.pSQL($name).'\'');

if (isset($result['id_manufacturer']))

return (int)($result['id_manufacturer']);

return false;

}

 

public function getLink()

{

return Tools::link_rewrite($this->name, false);

}

 

public static function getProducts($id_manufacturer, $id_lang, $p, $n, $orderBy = NULL, $orderWay = NULL, $getTotal = false, $active = true, $active_category = true)

{

if ($p < 1) $p = 1;

if (empty($orderBy) ||$orderBy == 'position') $orderBy = 'name';

if (empty($orderWay)) $orderWay = 'ASC';

 

if (!Validate::isOrderBy($orderBy) OR !Validate::isOrderWay($orderWay))

die (Tools::displayError());

 

$groups = FrontController::getCurrentCustomerGroups();

$sqlGroups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1');

 

/* Return only the number of products */

if ($getTotal)

return (int)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('

SELECT COUNT(*)

FROM `'._DB_PREFIX_.'product` p

WHERE p.id_manufacturer = '.(int)($id_manufacturer)

.($active ? ' AND p.`active` = 1' : '').'

AND p.`id_product` IN (

SELECT cp.`id_product`

FROM `'._DB_PREFIX_.'category_group` cg

LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`)'.

($active_category ? ' INNER JOIN `'._DB_PREFIX_.'category` ca ON cp.`id_category` = ca.`id_category` AND ca.`active` = 1' : '').'

WHERE cg.`id_group` '.$sqlGroups.')');

 

$sql = '

SELECT p.*, pa.`id_product_attribute`, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`,

pl.`meta_keywords`, pl.`meta_title`, pl.`name`, i.`id_image`, il.`legend`, m.`name` manufacturer_name, tl.`name` tax_name,

t.`rate`, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 new

FROM `'._DB_PREFIX_.'product` p

LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (p.`id_product` = pa.`id_product` AND default_on = 1)

LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.')

LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1)

LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.')

LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group`

AND tr.`id_country` = '.(int)Country::getDefaultCountryId().'

AND tr.`id_state` = 0)

LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`)

LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.(int)($id_lang).')

LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer`

WHERE p.`id_manufacturer` = '.(int)($id_manufacturer).($active ? ' AND p.`active` = 1' : '').'

AND p.`id_product` IN (

SELECT cp.`id_product`

FROM `'._DB_PREFIX_.'category_group` cg

LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`)'.

($active_category ? ' INNER JOIN `'._DB_PREFIX_.'category` ca ON cp.`id_category` = ca.`id_category` AND ca.`active` = 1' : '').'

WHERE cg.`id_group` '.$sqlGroups.'

)

ORDER BY '.(($orderBy == 'id_product') ? 'p.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay).'

LIMIT '.(((int)($p) - 1) * (int)($n)).','.(int)($n);

 

$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql);

if (!$result)

return false;

if ($orderBy == 'price')

Tools::orderbyPrice($result, $orderWay);

return Product::getProductsProperties($id_lang, $result);

}

 

public function getProductsLite($id_lang)

{

return Db::getInstance()->ExecuteS('

SELECT p.`id_product`, pl.`name`

FROM `'._DB_PREFIX_.'product` p

LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)($id_lang).')

WHERE p.`id_manufacturer` = '.(int)($this->id));

}

/*

* Specify if a manufacturer already in base

*

* @param $id_manufacturer Manufacturer id

* @return boolean

*/

public static function manufacturerExists($id_manufacturer)

{

$row = Db::getInstance()->getRow('

SELECT `id_manufacturer`

FROM '._DB_PREFIX_.'manufacturer m

WHERE m.`id_manufacturer` = '.(int)($id_manufacturer));

 

return isset($row['id_manufacturer']);

}

 

public function getAddresses($id_lang)

{

return Db::getInstance()->ExecuteS('

SELECT a.*, cl.name AS `country`, s.name AS `state`

FROM `'._DB_PREFIX_.'address` AS a

LEFT JOIN `'._DB_PREFIX_.'country_lang` AS cl ON (cl.`id_country` = a.`id_country` AND cl.`id_lang` = '.(int)($id_lang).')

LEFT JOIN `'._DB_PREFIX_.'state` AS s ON (s.`id_state` = a.`id_state`)

WHERE `id_manufacturer` = '.(int)($this->id).'

AND a.`deleted` = 0');

}

 

public function getWsAddresses()

{

return Db::getInstance()->ExecuteS('

SELECT a.id_address as id

FROM `'._DB_PREFIX_.'address` AS a

WHERE `id_manufacturer` = '.(int)($this->id).'

AND a.`deleted` = 0');

}

 

public function setWsAddresses($id_addresses)

{

$ids = array();

foreach ($id_addresses as $id)

$ids[] = (int)$id['id'];

$result1 = (Db::getInstance()->Execute('

UPDATE `'._DB_PREFIX_.'address`

SET id_manufacturer = 0

WHERE id_manufacturer = '.(int)$this->id.'

AND deleted = 0') !== false);

$result2 = true;

if (count($ids))

$result2 = (Db::getInstance()->Execute('

UPDATE `'._DB_PREFIX_.'address`

SET id_customer = 0, id_supplier = 0, id_manufacturer = '.(int)$this->id.'

WHERE id_address IN('.implode(',', $ids).')

AND deleted = 0') !== false);

return ($result1 && $result2);

}

}

 

En la imagen adjunta como quedó la pagina en el front.....

 

Que salió mal?

 

De nuevo, gracias por tu ayuda!

 

Steven

post-375505-0-57104600-1349016031_thumb.jpg

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...