Jump to content

Como modificar el listado de proveedores (SOLUCIONADO)


xonil

Recommended Posts

Hola a todos, llevo revisando el foro desde hace un mes y siempre encuentro alguna solución, pero me he topado con un pequeño escollo y tengo que postear para ver si me pueden ayudar.

 

Como he dicho antes, no he encontrado algún post que me solucione lo que busco, por eso creo un nuevo post.

 

Lo que quiero conseguir es que en el bloque de proveedores aparezcan tanto en el desplegable como en la página donde se listan, no por orden alfabético, como lo hace por defecto, sino por el id.

 

Espero haberme explicado bien. Tengo que aclarar que he cambiado el nombre del bloque por socios y he dejado sólo que se visualice el desplegable.

 

También quiero cambiar el mensaje que aparece en la página donde se listan los proveedores que pone "Hay 24 proveedores", por el de "Hay 24 socios".

 

Aquí está el link para facilitar la ayuda.

 

http://www.zaragozasur.info/es/

 

Gracias de antemano y saludos.

Edited by xonil (see edit history)
Link to comment
Share on other sites

El texto "hay x proveedores", que te aparece aquí: http://www.zaragozasur.info/es/proveedores lo puedes cambiar perfectamente en la pestaña Localización -> Traducciones -> Modificar Traducciones -> Traducciones del Front-Office -> Bandera Español -> Cuadro de traducciones o fichero:

/themes/plantilla/lang/es.php

Busca esto:

Hay %d fabricante.
Hay %d fabricantes.

y dejalo asi:

Hay %d socio.
Hay %d socios.
Link to comment
Share on other sites

ok gracias Nadie. y para que aparezcan no por orden alfabético sino por id?

 

pd. lo que no dije antes es que utilizo la plantilla por defecto.

 

saludos.

 

En tu fichero:

/classes/Supplier.php

Busca esto:

		$query->orderBy(' s.`name` ASC');

Y dejalo asi:

		$query->orderBy(' s.`id_supplier` ASC');

Si te funciona, te digo como hacer un override de la clase, para dejarlo todo mas organizado.

 

Saludos,

Link to comment
Share on other sites

A la perfección, voy a cambiar lo de la traducción para el mensaje que cuenta el número de proveedores para que diga socios.

 

Gracias Nadie, si quieres antes de cerrar y darlo como solucionarlo, me dices como poner el código como override para recogerlo y que esté mas organizado.

 

Para la traducción lo he tocado de código como me has mostrado, Lo único es que en vez de fabricantes y fabricante he buscado proveedor y proveedores que es lo que tenia que cambiar.

Edited by xonil (see edit history)
Link to comment
Share on other sites

El override, seria crear un fichero llamado:

Supplier.php

en el directorio:

/override/classes/

con este contenido:

<?php

class Supplier extends SupplierCore
{

public static function getSuppliers($get_nb_products = false, $id_lang = 0, $active = true, $p = false, $n = false, $all_groups = false)
	{
		if (!$id_lang)
			$id_lang = Configuration::get('PS_LANG_DEFAULT');

		$query = new DbQuery();
		$query->select('s.*, sl.`description`');
		$query->from('supplier', 's');
		$query->leftJoin('supplier_lang', 'sl', 's.`id_supplier` = sl.`id_supplier` AND sl.`id_lang` = '.(int)$id_lang);
		$query->join(Shop::addSqlAssociation('supplier', 's'));
		if ($active)
			$query->where('s.`active` = 1');
		$query->orderBy(' s.`id_supplier` ASC');
		$query->limit($n, ($p - 1) * $n);
		$query->groupBy('s.id_supplier');

		$suppliers = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query);
		if ($suppliers === false)
			return false;
		if ($get_nb_products)
		{
			$sql_groups = '';
			if (!$all_groups)
			{
				$groups = FrontController::getCurrentCustomerGroups();
				$sql_groups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1');
			}
			foreach ($suppliers as $key => $supplier)
			{
				$sql = '
					SELECT DISTINCT(ps.`id_product`)
					FROM `'._DB_PREFIX_.'product_supplier` ps
					JOIN `'._DB_PREFIX_.'product` p ON (ps.`id_product`= p.`id_product`)
					'.Shop::addSqlAssociation('product', 'p').'
					WHERE ps.`id_supplier` = '.(int)$supplier['id_supplier'].'
					AND ps.id_product_attribute = 0'.
					($active ? ' AND product_shop.`active` = 1' : '').
					' AND product_shop.`visibility` NOT IN ("none")'.
					($all_groups ? '' :'
					AND ps.`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` '.$sql_groups.'
					)');
				$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
				$suppliers[$key]['nb_products'] = count($result);
			}
		}

		$nb_suppliers = count($suppliers);
		$rewrite_settings = (int)Configuration::get('PS_REWRITING_SETTINGS');
		for ($i = 0; $i < $nb_suppliers; $i++)
			if ($rewrite_settings)
				$suppliers[$i]['link_rewrite'] = Tools::link_rewrite($suppliers[$i]['name']);
			else
				$suppliers[$i]['link_rewrite'] = 0;
		return $suppliers;
	}


}

Después borra el fichero:

/cache/class_index.php

para que prestashop te detecte el nuevo override. (No te preocupes, porque el fichero se regenera solo de nuevo)

Link to comment
Share on other sites

Listo, sí que me funciona, he creado el archivo en la carpeta override, he borrado el fichero class_index y he vuelto a dejar el código original, y los cambios se mantienen, es decir, se sobre escribe el fichero con el contenido de la carpeta override (creo que es eso lo que ocurre).

 

Gracias de nuevo amigo.

Link to comment
Share on other sites

Listo, sí que me funciona, he creado el archivo en la carpeta override, he borrado el fichero class_index y he vuelto a dejar el código original, y los cambios se mantienen, es decir, se sobre escribe el fichero con el contenido de la carpeta override (creo que es eso lo que ocurre).

 

Gracias de nuevo amigo.

Perfecto !

 

Un placer ayudarte y servirte !

 

Como has añadido la palabra "Solucionado" al titulo del tema, procedo a cerrar el tema.

Link to comment
Share on other sites

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