Diseño y Posicionamiento Web con Joomla › Foros › General › Joomla en General › virtuemart y los Atributos
- Este debate tiene 12 respuestas, 3 mensajes y ha sido actualizado por última vez el hace 12 años, 9 meses por Anónimo.
-
AutorEntradas
-
-
23/03/2011 a las 23:51 #96813AnónimoInvitado
Mi problema es el siguiente:
Quiero crear el atributo talla y color + control de Stock.
Tengo 6 tallas y 6 colores, lo que hace un total de 36 subproductos. Que a la hora de comprar hacen un menu desplegable larguísimo.
¿Hay alguna forma para que en vez de salir en un solo menú todas las combinaciones, se pueda elegir de dos menus?Ejemplo:
Menú 1 (Seleccionar uno)- Pequeña
- Mediana
- Grande
Menú 2 (Seleccionar Otro)
- Blanco
- Rojo
- Verde
Actualmente me sale un solo menú:
- Pequeña Blanco
- Pequeña Rojo
- Pequeña Verde
- Mediana Blanco
- Mediana Rojo
- Mediana Verde
- Grande Blanco
- Grande Rojo
- Grande Verde
Gracias por la ayuda de antemano.
-
24/03/2011 a las 05:04 #96823Moderador ForoParticipante
Puedes añadir cuantos atributos quieras por producto> http://solojoomla.com/foro/componentes/mas-problemas-con-virtuemart.html#13805 . Atributo mas propiedades del atributo, añades cuantos quieras. Cada atributo tiene unas propiedades, Atributo Color, propiedades, verde, rojo, azul. Siguiente Atributo, Talla, Propiedades, L, M, XXL etc…
-
24/03/2011 a las 06:33 #96829AnónimoInvitado
El problema de ese sistema es que no se hace los stock independiente.
Si yo tengo por ejempo la talla como atributo, tendré un stock independiende por cada talla.
Si a la talla le añadimos la propiedad color, ya no tendré un stock independiente por cada color. El stock de colores será el que tenga el atributo talla indiferentemente del color.Yo lo que quiero es que para Talla (mediana) tenga 6 colores (Blanco, verde, rojo …) y que cada color tenga su stock independiente.
Ejemplo:
- Talla mediana – color Verde (5 en stock)
- Talla mediana – color Blanco (10 en stock)
- Talla mediana – color Rojo (19 en stock)
-
24/03/2011 a las 07:46 #96834
-
24/03/2011 a las 08:39 #96840Moderador ForoParticipante
Para llegar a los archivos hay que pasar a la siguiente pagina (next). Asi da gusto oye, gracias de parte de todos 😉
[quote=”Loyin666″ post=18143]Tras 5 días buscado al fin he encontrado la solución. Os pongo el link por si alguien más tiene mi problema (Esta en ingles).Estoy testeandolo y por ahora me va bien si encuentro fallos ya los iré comentando.[/quote]
-
24/03/2011 a las 11:24 #96843AnónimoInvitado
[code type=php]
/* Hacked Child products to Display each attribute of the
* main product in a select box. The function gets all distinct
* attribute values. Based the selected Index of the select boxes,
* queries the database, and then displays a price and creates a hidden field
* for the product id.
*
* October 10th, 2010
* Hacked by Greg S. Tibbetts MBA, MPM greg@aagthosting.com
*//**
* Lists all child/sister products of the given product
*
* @param int $product_id
* @return string HTML code with Items, attributes & price
*/
function list_attribute_drop( $product_id, $cls_suffix ) {
global $VM_LANG, $CURRENCY_DISPLAY, $mm_action_url, $sess ;
require_once (CLASSPATH . ‘ps_product.php’) ;
$ps_product = new ps_product( ) ;
$Itemid = $sess->getShopItemid() ;
$category_id = vmGet( $_REQUEST, ‘category_id’, “” ) ;
$db = new ps_DB( ) ;
$db_item = new ps_DB( ) ;
$additionalOption = $VM_LANG->_( ‘PHPSHOP_PLEASE_SEL_ITEM’ );
$defaultValue = 0;
$count = 0;
$value = ”;
$selected = ”;
$variable = ”;
$var = ”;
error_reporting(0);
$tpl = new $GLOBALS[‘VM_THEMECLASS’]( ) ;
$tpl->set( “cls_suffix”, $cls_suffix ) ;
$tpl->set( “product_id”, $product_id ) ;
// Set Advanced Attributes
$tpl->set( “advanced_attribute”, $this->list_advanced_attribute( $product_id, $db->f( “product_id” ) ) ) ;
$tpl->set( “custom_attribute”, $this->list_custom_attribute( $product_id, $db->f( “product_id” ) ) ) ;// Get list of the Product attributes for the drop down menus. One attribute per drop down.
$q = “SELECT distinct a.attribute_name
FROM y6z4i_vm_product p, y6z4i_vm_product_attribute_sku a
WHERE a.product_id='” . $product_id . “‘ AND p.product_parent_id = a.product_id
AND p.product_publish = ‘Y’ ORDER BY a.attribute_list ASC”;$db->query($q);
if( $db->num_rows() > 0 ){
$flypage = $ps_product->get_flypage( $product_id ) ;
$html = “n” ;$rows = $db->num_rows();
while($db->next_record()) {
$count++;
$attribute_name = $db->f( “attribute_name” );// get attribute values and product id’s if $count = 1
if (($count == 1) || (isset($_GET[$att_name])) && $_GET[$att_name] != $additionalOption){
$html .= “:n” ;
// get distinct attribute values for an attribute name
$q = “SELECT DISTINCT a.attribute_value
FROM #__{vm}_product p, #__{vm}_product_attribute a
WHERE p.product_parent_id='” . $product_id . “‘ AND a.product_id = p.product_id
AND a.attribute_name = ‘” . $db->f( “attribute_name” ) . “‘ AND p.product_publish=’Y’ order by a.attribute_id, a.attribute_value ASC”;$db_sku = new ps_DB( ) ;
$db_sku->setQuery( $q ) ;
$db_sku->query();if ($db_sku->num_rows() > 0){
$resultBuffer = array();
$c = 0;
while($db_sku->next_record()){
$resultBuffer[$c++] = str_replace(“&”,”/”,$db_sku->f( “attribute_value” ));
}
$r = false;
if (is_array($resultBuffer)){
foreach($resultBuffer as $n=>$v){
if (is_array( $resultBuffer[$n] )){
$r = isNumArray( $resultBuffer[$n] );
if ($r==false)
break;
}
else
if (!is_numeric($v)){
$r=false;
break;
}
else
$r=true;
}
if ($r = true){
if ($resultBuffer[$c] clean($_GET[$attribute_name], 64)));
$rows = $db->num_rows();
$c = 0;// query db for product id’s
$q = “SELECT DISTINCT a.product_id
FROM y6z4i_vm_product p, y6z4i_vm_product_attribute a
WHERE p.product_parent_id='”.$product_id.”‘ AND a.product_id = p.product_id
AND a.attribute_value LIKE ‘”.$aname.”‘ AND p.product_publish=’Y'”;$db_item->setQuery($q);
$db_item->query();// create multidimensional array of
// product id’s for each attribute value selected
if ($db_item->num_rows() > 0){
$i = 0;
while($db_item->next_record()){
$idarray[$count-1][$i++] = $db_item->f( “product_id” );
$idarray[$count-1][$i-1];
}
}
}
if (($count == $rows) && isset($_GET[$attribute_name])){
// Get a list of product id’s for the last attribute select box
// Get attribute values for the last select box
$id = array();
for($checked_item = 0; $checked_item < count($idarray[0]); $checked_item++){
$occurrence = 1;
for($compared_array = 1; $compared_array < count($idarray); $compared_array++){
for($compared_item = 0; $compared_item f( “attribute_name” );// Create the select box
$attributes = “&” . $attribute_name . “=’+document.addtocart.” . $attribute_name . “.options[document.addtocart.” . $attribute_name . “.selectedIndex].value”;
$html .= ”;// Is there an additional option?
if (isset($additionalOption)){
// Yes, but is it the default option?
if ($defaultValue == $additionalOption)
// Show the additional option as selected
$html .= “” . $additionalOption . “n”;
else
// Just show the additional option
$html .= “” . $additionalOption . “n”;
}
// check for a selected attribute name
if (isset($_GET[$attribute_name])){
$defaultValue = $_GET[$attribute_name];
foreach ($resultBuffer as $result)
if ($result == $defaultValue)
$html .= “” . $result . “”;
else
$html .= “” . $result . “”;
} // end if attribute name
else {
// No defaultValue
foreach ($resultBuffer as $result)
$html .= “” . $result . “n”;
}
$html .= “
n”;// Get and display price and hidden field for child product id
if (isset($id)){
if (!empty($id[0])){
$html .= ”;
if( $_SESSION[‘auth’][‘show_prices’] && _SHOW_PRICES ) {
$price = $ps_product->get_adjusted_attribute_price( $id[0] ) ;
$price[“product_price”] = $GLOBALS[‘CURRENCY’]->convert( $price[“product_price”], $price[“product_currency”] ) ;
if( $_SESSION[“auth”][“show_price_including_tax”] == 1 ) {
$tax_rate = 1 + $ps_product->get_product_taxrate( $pid ) ;
$price[‘product_price’] *= $tax_rate ;
}
$html .= ‘Price: ‘ . $CURRENCY_DISPLAY->getFullValue( $price[“product_price”] ) . ‘
‘;
}
}
else
$html .= ‘Atributo sin seleccionar.‘;
}
}
} // end loop
} // end if num rows
else {
$html = “n” ;
$html .= “n” ;
}
$tpl->set( “drop_down”, $html ) ;
$html = $tpl->fetch( ‘product_details/includes/addtocart_drop.tpl.php’ ) ;
return array( $html , “drop” ) ;
}// clean $_GET variables and database values
// Hacked by Greg S. Tibbetts MBA, MPM greg@aagthosting.com
function clean($input, $maxlength){
$input = substr($input, 0, $maxlength);
$input = EscapeShellCmd($input);
return ($input);
}
[/code]Hay que sustituir este codigo en el archivo php ps_product_attribute.php que se encuentra en: administratorcomponentscom_virtuemartclasses
Y modificar en el codigo:
$url = ‘http:// AQUI PONES TU DOMINIO/index.php?option=com_virtuemart&page=shop.product_details&flypage=’ . $flypage . ‘&product_id=’ . $product_id;
aunque creo que lo mismo tb vale poniendo, pero no lo he probado:
$url = ‘/index.php?option=com_virtuemart&page=shop.product_details&flypage=’ . $flypage . ‘&product_id=’ . $product_id;He arreglado un n que se colaba en la salida.
Tambien he puesto para que saga “Atributo sin seleccionar” en color rojo y en español, en vez de en negro e ingles.Pd: si algun administrador puede poner el cuadro de código más pequeño lo agradecería la gente, es que no se como se hace.
Gracias. -
24/03/2011 a las 23:09 #96858RobertParticipante
-
04/01/2012 a las 18:04 #103487AnónimoInvitado
No logro que me funcione. No hay nada un poco más intuitivo o algún plugin que se pueda usar para este propósito?
Me resulta raro que siendo una situación tan común el hecho de tener un atributo con muchas variantes y stocks diferentes no haya una solución más práctica.
Gracias! 😀
-
05/01/2012 a las 01:44 #103496AnónimoInvitado
Voy a ver si encuentro algo porque creia tener una solución más facil, pero va a ser que no era como yo creia.
-
05/01/2012 a las 02:17 #103497AnónimoInvitado
Al final encontre algo pero cuesta 80$.
El componente se llama Easy Inventory Control. Ojo es del año 2009 no se si es compatible con los actuales virtuemart.
http://extensions.joomla.org/extensions/extension-specific/virtuemart-extensions/virtuemart-stats/9066Puedes ver una demo de como funciona:
http://www.nextphasedesigns.com/index.php?option=com_wrapper&view=wrapper&Itemid=61Espero te sirva, es lo único que encontré cuando busque hace tanto tiempo.
-
05/01/2012 a las 13:45 #103524AnónimoInvitado
Muchas gracias por el dato. Lo examinaré.
¿Sabrás por casualidad de algún programa gestor de Virtuemart con el que se puedan elaborar informes de ventas, etc? Veo que no se ofrece esa funcionalidad tampoco. Aunque teniendo en cuenta que se trata de un programa gratuito está más que bien.
-
07/01/2012 a las 18:35 #103545AnónimoInvitado
Mira a ver si en esta categoria de aplicaciones de virtuemart hay algo que te sirva.
http://extensions.joomla.org/extensions/extension-specific/virtuemart-extensions/virtuemart-statsCreo que te puede valer las siguiente aplicaciones que aparecen en el enlace:
- VM report
- Sales analytics
Ambos son de pago.
He mirado la demo de Sales analytics y la verdad que tiene buena pinta.Espero que te sirvan.
-
07/01/2012 a las 18:53 #103547AnónimoInvitado
Gracias Loyin, les echaré un ojo.
-
-
AutorEntradas
- Debes estar registrado para responder a este debate.