2012-04-25 12 views
6

Điều này đã được hỏi nhiều lần trước nhưng không có câu trả lời.Magento - Đặt thuộc tính sản phẩm để sử dụng giá trị mặc định

Tôi có nhiều cửa hàng và một số thuộc tính đã bị ghi đè. Tôi muốn thay đổi các thuộc tính này thành 'sử dụng giá trị mặc định' bằng tập lệnh.

Dưới đây là một hình ảnh thể hiện quan điểm cửa hàng và 'sử dụng giá trị mặc định' hộp kiểm http://dl.dropbox.com/u/3209649/storeviews-and-defaultvalues.png(không được phép đăng hình ảnh nào)

Trong app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php setData() được sử dụng với false cho đối số thứ hai khi 'Sử dụng Giá trị Mặc định' đã được chọn cho bất kỳ thuộc tính nào.

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

Mã sau đây cố gắng đặt thuộc tính 'tên' thành 'sử dụng giá trị mặc định' cho sản phẩm 1 trong cửa hàng 3 bằng cùng phương pháp.

require_once '../app/Mage.php'; 
Mage::app(3); 

$product = Mage::getModel('catalog/product')->load(1); 

$product->setData('name', false); # as used in ProductController.php 
$product->save(); 

Sử dụng

$product->setData('name', 'anything'); 

một cách chính xác đặt 'tên' thuộc tính để 'bất cứ điều gì' nhưng sai không đặt nó vào 'sử dụng giá trị mặc định'

'Sử dụng giá trị mặc định' là không được lưu trữ bất cứ nơi nào trong cơ sở dữ liệu như vậy trong bộ điều khiển cho giao diện quản trị phải có một thủ tục xóa hàng thuộc tính?

Liên kết liên quan ở đây ->http://pastebin.com/raw.php?i=j7fwu9H6 (không được phép đăng các liên kết chưa một trong hai)

+0

Tôi xin lỗi, nhưng nó không rõ ràng những gì đang được hỏi ở đây. –

+0

Tôi đã cập nhật và thêm liên kết vào hình ảnh. Bây giờ nó có ý nghĩa không? –

+1

bạn cũng có thể thử cách tiếp cận SQL như được mô tả tại đây: http://magento.stackexchange.com/questions/1199/how-to-set-product-attribute-to-use-default-by-sql – WonderLand

Trả lời

12

này không hoạt động bởi vì bạn cần các cửa hàng hiện nay là các cửa hàng quản trị cho các loại hình hoạt động.

Để làm cho một cái nhìn cụ thể cửa hàng sử dụng giá trị mặc định cho một thuộc tính nhất định:

Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 

$product = Mage::getModel('catalog/product') 
    ->load($product_id)   // in your case: 1 
    ->setStoreId($store_id)  // in your case: 3 
    ->setData($attr, false)  // in your case: 'name' 
    ->save(); 
+0

Tôi ' Tôi không chắc tôi hiểu tại sao nó hoạt động theo cách đó nhưng tôi có thể xác nhận nó. Tôi đã tìm kiếm một giải pháp cho điều này trong một thời gian dài. Cảm ơn bạn. –

+0

Xin chào, tôi đã gặp phải sự cố khi tôi chạy một tập lệnh mà không đưa ra CurrentStore, nó đã phá vỡ văn phòng của tôi, thay đổi các giá trị mặc định bằng các giá trị tùy chỉnh trên sản phẩm. Trong kịch bản của tôi, tôi chỉ cập nhật trọng lượng sản phẩm nhưng nó tạo ra các giá trị tùy chỉnh như giá tùy chỉnh hoặc hiển thị tùy chỉnh ngẫu nhiên cho các sản phẩm. Tôi đã xóa nó trong db sau đó, nhưng tôi không hiểu tại sao điều quan trọng là gọi hàm setCurrentStore ... Bạn có thể giải thích thêm một chút không? – beluga

+0

'Mage :: app() -> setCurrentStore (Mage_Core_Model_App :: ADMIN_STORE_ID);' Sau nhiều giờ tìm kiếm mã hoàn hảo, vấn đề duy nhất của tôi là tôi cần điều này. – FactoryAidan