virtuemart y los Atributos

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.
Mostrando 12 respuestas a los debates
  • Autor
    Entradas
    • #96813
      Anónimo
      Invitado

      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ú:

      1. Pequeña Blanco
      2. Pequeña Rojo
      3. Pequeña Verde
      4. Mediana Blanco
      5. Mediana Rojo
      6. Mediana Verde
      7. Grande Blanco
      8. Grande Rojo
      9. Grande Verde

      Gracias por la ayuda de antemano.

    • #96823
      redloModerador Foro
      Participante

      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…

    • #96829
      Anónimo
      Invitado

      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:

      1. Talla mediana – color Verde (5 en stock)
      2. Talla mediana – color Blanco (10 en stock)
      3. Talla mediana – color Rojo (19 en stock)

      Aqui explican los atributos con stock

    • #96834
      Anónimo
      Invitado

      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).

      Link de la solución

      Estoy testeandolo y por ahora me va bien si encuentro fallos ya los iré comentando.

    • #96840
      redloModerador Foro
      Participante

      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).

      Link de la solución

      Estoy testeandolo y por ahora me va bien si encuentro fallos ya los iré comentando.[/quote]

    • #96843
      Anónimo
      Invitado

      [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.

    • #96858
      robertRobert
      Participante

      Se agradece el Ajuste. Es un hack que vendra muy bien. Añadi un enlace a este post desde otro post sobre atributos que conteste > Atributos Virtuemart

    • #103487
      Anónimo
      Invitado

      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! 😀

    • #103496
      Anónimo
      Invitado

      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.

    • #103497
      Anónimo
      Invitado

      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/9066

      Puedes ver una demo de como funciona:
      http://www.nextphasedesigns.com/index.php?option=com_wrapper&view=wrapper&Itemid=61

      Espero te sirva, es lo único que encontré cuando busque hace tanto tiempo.

    • #103524
      Anónimo
      Invitado

      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.

    • #103545
      Anónimo
      Invitado

      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-stats

      Creo 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.

    • #103547
      Anónimo
      Invitado

      Gracias Loyin, les echaré un ojo.

Mostrando 12 respuestas a los debates
  • Debes estar registrado para responder a este debate.
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver
Privacidad