2012-02-15 15 views
6

Tengo una configuración de varias tiendas y estoy configurando un atributo de producto para una tienda en particular para usar la opción "Usar valor predeterminado" (es decir, para usar el valor en Ver la tienda), de la siguiente manera:Configuración de Magento "Utilizar valor predeterminado" del atributo de producto usando updateAttributes

$_product = Mage::getModel('catalog/product'); 
$_product->load($productId); 
$_product->setStoreId($storeId)->setName(false)->save(); 

Esto establece el atributo Nombre de StoreID por $ productId utilizar "uso Valor predeterminado"

Dado que tengo una gran cantidad de atributos para establecer estoy tratando de utilizar :

Mage::getSingleton('catalog/product_action')->updateAttributes(array($productId), array('name' => false), $storeId); 

Pero esto no establece la casilla de verificación "Usar valor predeterminado" en verdadero.

¿Cómo puedo usar -> updateAttributes para establecer un valor de tienda para usar la opción "Usar valor predeterminado"?

Captura de pantalla:

enter image description here

+0

duplicado: http://stackoverflow.com/questions/9299145/magento-save-a-product-without-setting-use-default-value – OSdave

+0

@OSdave No, esto es ** no ** un duplicado de eso pregunta (aunque utilicé la misma captura de pantalla). Esta pregunta es específicamente sobre un problema con los atributos de actualización, mientras que en la otra pregunta ni siquiera mencioné los atributos de actualización. Explicación más larga: mientras trabajaba en la solución para la otra pregunta, me encontré con un nuevo problema relacionado con los atributos de actualización y, por lo tanto, hice esta pregunta (dado que es una pregunta diferente). – mas

+0

¿Qué finalmente usó para resolver su problema? – RPDeshaies

Respuesta

4

El "valor de uso por defecto" bandera no está almacenada en la base de datos en cualquier lugar.

Magento central utiliza esa bandera para hacer esto al guardar productos:

/** 
    * Check "Use Default Value" checkboxes values 
    */ 
    if ($useDefaults = $this->getRequest()->getPost('use_default')) { 
     foreach ($useDefaults as $attributeCode) { 
      $product->setData($attributeCode, false); 
     } 
    } 

Antes de hacer algunas otras cosas.

Me gustaría ver Mage_Adminhtml_Catalog_ProductController (app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php) y aprender cómo lo hace Magento core.

Específicamente saveAction() y _initProductSave()

espero que esto le apunta en la dirección correcta.

+0

Desafortunadamente, esto realmente no responde la pregunta. La respuesta correcta es, lamentablemente, que no es posible a través de 'updateAttributes()'. Ver también [esta respuesta de Magento SE] (http://magento.stackexchange.com/a/33371/142). – Simon

+0

Realmente, responde la pregunta. La pregunta es esencialmente "¿Cómo puedo establecer un valor de tienda para usar la opción 'Usar valor predeterminado'?", Y aunque no puede hacerlo con -> Atribuciones actualizadas, mi respuesta brinda detalles sobre cómo puede hacerlo. –

0

Simplemente use 0 como ID de tienda (tienda de administración) que es lo mismo que los valores predeterminados en Magento Admin.

Mage::getSingleton('catalog/product_action') 
    ->updateAttributes(
     array($productId), 
     array('name' => false), 
     0); 

Si ya ha configurado la tienda Ver alcances que tendrá que ir y volver a comprobar los valores de uso por defecto o se anulará el atributo en el ámbito correspondiente.

Puede haber una manera de establecer estos programáticamente. No estoy seguro

Cuestiones relacionadas