Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » Joomla »

Modificar plantilla de productos relacionados

Estas en el tema de Modificar plantilla de productos relacionados en el foro de Joomla en Foros del Web. Hola, Tengo el problema que en mi web tengo productos con muchos productos relacionados (related products) y puede liar un poco el que se vean ...
  #1 (permalink)  
Antiguo 02/02/2012, 13:31
 
Fecha de Ingreso: febrero-2012
Mensajes: 6
Antigüedad: 12 años, 1 mes
Puntos: 0
Modificar plantilla de productos relacionados

Hola,

Tengo el problema que en mi web tengo productos con muchos productos relacionados (related products) y puede liar un poco el que se vean todos de un tiron...

La idea es poder mostrar en un listado las categorias y al hacer click en la categoria que muestre los productos relacionados .
Uso el tabpane (pestañas) asi que la cosa es hacer una tab dentro de otra y asi poder hacer la estructura que comento.

categoria -> productos relacionados
->productos relacionados
categoria -> productos relacionados
->productos relacionados


y asi... espero que se entienda el concepto

No se si hay algo hecho asi o hay alguien que este dispuesto a intentarlo..


un saludo
  #2 (permalink)  
Antiguo 03/02/2012, 02:07
Avatar de zulkas  
Fecha de Ingreso: julio-2011
Mensajes: 126
Antigüedad: 12 años, 8 meses
Puntos: 11
Respuesta: Modificar plantilla de productos relacionados

¿Entiendo que quieres listar en cada tab una categoría de produtos relacionados? Es correcto?
  #3 (permalink)  
Antiguo 03/02/2012, 02:35
 
Fecha de Ingreso: febrero-2012
Mensajes: 6
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Modificar plantilla de productos relacionados

No del todo,

tengo 4 pestañas, cada una muestra informacion del producto.
Una de ellas es la de productos relacionados.

Dentro de esa pestaña quiero crear otro conjunto de pestañas en vertical con el listado de categorias a los que pertenecen los productos relacionados.
Mas que nada para tener un poco de orden. Asi pues cuando apretenmos la pestaña de la categoria x mostrara los productos relacionados que hay del producto principal.
  #4 (permalink)  
Antiguo 03/02/2012, 03:43
Avatar de zulkas  
Fecha de Ingreso: julio-2011
Mensajes: 126
Antigüedad: 12 años, 8 meses
Puntos: 11
Respuesta: Modificar plantilla de productos relacionados

OK.
Es sencillo de hacer (si sabes modificar código en Joomla), no sé si te saldrán las pestañas en vertical utilizando la clase JPane pero esa es la clase que has de utilizar en la vista.

Otro enlace http://forum.joomla.org/viewtopic.php?p=1906423
  #5 (permalink)  
Antiguo 03/02/2012, 04:47
 
Fecha de Ingreso: febrero-2012
Mensajes: 6
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Modificar plantilla de productos relacionados

El jpane esta mas o menos controlado

EL problema es que muestre las categorias de los productos relacionados

Ejemplo:

PRODUCTO PRINCIPAL


PESTAÑA DE PRODUCTOS COMPATIBLES

Categoria 1 (Al ser la 1 categoria sera mostrada directamente)
producto relacionado ( del producto principal )
producto relacionado ( del producto principal )
producto relacionado ( del producto principal )
producto relacionado ( del producto principal )

Categoria 2 (SOlO veremos los productos que contiene si hacemos click en la categoria)
producto relacionado ( del producto principal )
producto relacionado ( del producto principal )
producto relacionado ( del producto principal )
producto relacionado ( del producto principal )

Categoria 3 (SOlO veremos los productos que contiene si hacemos click en la categoria)
producto relacionado ( del producto principal )
producto relacionado ( del producto principal )
producto relacionado ( del producto principal )
producto relacionado ( del producto principal )




El virtuemart solo muestra los related products, pero no las categorias de los related products, y yo quiero mostrarlas :) y mejor aun seria poder ordenarlas a mi manera (con mis nombres en lugar con los nombres de categorias):





Gracias por el esfuerzo :D a ver si asi me explico mejor !
  #6 (permalink)  
Antiguo 03/02/2012, 06:40
Avatar de zulkas  
Fecha de Ingreso: julio-2011
Mensajes: 126
Antigüedad: 12 años, 8 meses
Puntos: 11
Respuesta: Modificar plantilla de productos relacionados

con ese ejemplo es más gráfico y se entiende mejor,

Sólo has de cambiar la vista de la que tira el producto, no sé si has desarrollado o entiendes el modelo MVC.

No he visto virtuemart pero si me dices versión del mismo y tmb la versión del joomla le hecho un vistazo y lo miro, y así aprendo yo como está virtuemart ;)

Pero vamos no parece complicado lo que necesitas.
  #7 (permalink)  
Antiguo 03/02/2012, 10:03
 
Fecha de Ingreso: febrero-2012
Mensajes: 6
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Modificar plantilla de productos relacionados




Virtuemart 1.1.9
joomla 1.5.25
MVC no lo conozco.

Me defiendo en php (pero no tanto).

Por lo que he investidago dentro de joomla hay que modificar el ps_product.php (diria)

El archivo que llama al mostrar productos relacionados es el realtedProducts.tpl.php, y en el vemos que lo unico que hace es llamar a una funcion que se encuentra en el ps_product.php

Te pongo el codigo aqui:
Código:
	/**
	 * display a snapshot of a product based on the product sku.
	 * This was written to provide a quick way to display a product inside of modules
	 *
	 * @param string $product_sku The SKU identifying the product
	 * @param boolean $show_price Show the product price?
	 * @param boolean $show_addtocart Show the add-to-cart link?
	 * @param boolean $show_product_name Show the product name?
	 */
	function show_snapshot($product_sku, $show_price=true, $show_addtocart=true, $show_product_name = true ) {
		echo $this->product_snapshot( $product_sku, $show_price, $show_addtocart, $show_product_name );
	}

	/**
	 * Returns HTML code for a snapshot of a product based on the product sku.
	 * This was written to provide a quick way to display a product inside of modules
	 *
	 * @param string $product_sku The SKU identifying the product
	 * @param boolean $show_price Show the product price?
	 * @param boolean $show_addtocart Show the add-to-cart link?
	 * @param boolean $show_product_name Show the product name?
	 */
	function product_snapshot( $product_sku, $show_price=true, $show_addtocart=true, $show_product_name = true ) {

		global $sess, $mm_action_url;

		$db = new ps_DB;

		require_once(CLASSPATH.'ps_product_category.php');
		$ps_product_category = new ps_product_category;

		$q = "SELECT product_id, product_name, product_first_image, product_parent_id, product_thumb_image FROM #__{vm}_product WHERE product_sku='$product_sku'";
		$db->query( $q );

		if ($db->next_record()) {
			$product_id = $db->f("product_id" );
			$tpl = new $GLOBALS['VM_THEMECLASS']();
			
			$cid = $ps_product_category->get_cid( $product_id );

			$tpl->set( 'product_id', $product_id);
			$tpl->set( 'product_name', $db->f("product_name") );
			$tpl->set( 'show_product_name', $show_product_name );
			
			if ($db->f("product_parent_id")) {
				$url = "?page=shop.product_details&category_id=$cid&flypage=".$this->get_flypage($db->f("product_parent_id"));
				$url .= "&product_id=" . $db->f("product_parent_id");
			} else {
				$url = "?page=shop.product_details&category_id=$cid&flypage=".$this->get_flypage($db->f("product_id"));
				$url .= "&product_id=" . $db->f("product_id");
			}
			$product_link = $sess->url($mm_action_url. "index.php" . $url);
			$tpl->set( 'product_link', $product_link );
			$tpl->set( 'product_thumb_image', $db->f("product_thumb_image"), "alt=\"".$db->f("product_name")."\"");
			$tpl->set( 'product_first_image', $db->f("product_first_image"), "alt=\"".$db->f("product_name")."\"");

			if (_SHOW_PRICES == '1' && $show_price) {
				// Show price, but without "including X% tax"
				$price = $this->show_price( $db->f("product_id"), true );
				$tpl->set( 'price', $price );
			}
			if (USE_AS_CATALOGUE != 1 && $show_addtocart 
					&& isset( $GLOBALS['product_info'][$product_id]['price']['product_price_id'] ) // Product must have a price to add it to cart
					&& !$this->product_has_attributes($product_id, true)  // Parent Products and Products with attributes can't be added to cart this way
					) {
				$url = "?page=shop.cart&func=cartAdd&product_id=" .  $db->f("product_id");
				$addtocart_link = $sess->url($mm_action_url. "index.php" . $url);
				$tpl->set( 'addtocart_link', $addtocart_link );
			}
			return $tpl->fetch( 'common/productsnapshot.tpl.php');
		}
		
		return '';
		
	}


diria que esta parte hay que modificarla para poder mostrar la categoria
  #8 (permalink)  
Antiguo 06/02/2012, 02:33
Avatar de zulkas  
Fecha de Ingreso: julio-2011
Mensajes: 126
Antigüedad: 12 años, 8 meses
Puntos: 11
Respuesta: Modificar plantilla de productos relacionados

Te explico, por encima, el MVC, que es lo primero que debes de saber. Significa Model- View- Controller, o modelo-vista-controlador.

El modelo se encarga de interactuar con la BD (select, insert, update, etc), la vista es lo que se muestra al usuario, y por último el controlador es el que recoge las acciones del usuario.

Deberías de verlo y entenderlo wiki:[QUOTE]. No quizás pra este caso pero es importante que sepas la definición del mismo ya que muchos componentes la usan

Al lío, el código está claro que pertenece al modelo y que la línea
Código PHP:
$q "SELECT product_id, product_name, product_first_image, product_parent_id, product_thumb_image FROM #__{vm}_product WHERE product_sku='$product_sku'"
es la que te devuelve los datos del producto, aun que hay una línea más interesante:
Código PHP:
$ps_product_category = new ps_product_category;
.........        
    if (
$db->next_record()) {
                ..............
        
$cid $ps_product_category->get_cid$product_id );
                ..............
        } 
Si te fijas se crea un "objeto" (esto es de la teoría orientada a objetos, otra cosa que has de revisar, sino la sabes) ps_product_category que tiene una serie de métodos que se encuentran en el fichero ps_product_category.php, a través de esos métodos se pueden hacer muchas cosas, entre ellas vistuemart recoge el id de categoría del producto. Pero también con ese objeto, y a través del id de categoría puedes obtener el nombre de la misma con el método get_name_by_catid, que quedaría así:
Código PHP:
$name_cat $ps_product_category->get_name_by_catid($cid); 
El proximo paso es encontrar la vista y todo indica que será common/productsnapshot.tpl.php, pero compruebalo. suerte
  #9 (permalink)  
Antiguo 07/02/2012, 04:51
 
Fecha de Ingreso: febrero-2012
Mensajes: 6
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Modificar plantilla de productos relacionados

si, en el productsnapshot.tpl.php es donde hay que poner luego el echo para que lo muestre.

Lo que no se bien como...

Un par de preguntas.
Por que pones ($cid) al final y no product id tal como en el ps_product_category

y pongo echo name_cat o el echo category_name pero no consigo que muestre nada.
  #10 (permalink)  
Antiguo 08/02/2012, 02:57
Avatar de zulkas  
Fecha de Ingreso: julio-2011
Mensajes: 126
Antigüedad: 12 años, 8 meses
Puntos: 11
Respuesta: Modificar plantilla de productos relacionados

Cita:
Iniciado por Lazar Ver Mensaje
si, en el productsnapshot.tpl.php es donde hay que poner luego el echo para que lo muestre.

Lo que no se bien como...

Un par de preguntas.
Por que pones ($cid) al final y no product id tal como en el ps_product_category

y pongo echo name_cat o el echo category_name pero no consigo que muestre nada.
Pongo el $cid porque queremos el nombre de la categoría a la que pertenece el producto

Lo otro, porque aparte de asignar lo que recuperas a $name_cat, has de pasarselo a la vista, tal que así:
Código PHP:
$tpl->set'category_name'$name_cat ); 
Si te fijas lo que hace esa línea es crear la variable $category_name en la plantilla y darle valor que contenga $name_cat. Ni que decir tiene que el echo has de ponerlo en productsnapshot.tpl.php

Etiquetas: productos, programacion, relacionados
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:48.