Nhận giá trị thuộc tính / id từ văn bản / nhãn thuộc tính


7

Tôi có yêu cầu hiển thị nhãn thuộc tính trong URL để lọc sản phẩm. Tôi có thể tạo Url với nhãn thuộc tính. Bây giờ tất cả những gì tôi phải làm là chuyển đổi nhãn thuộc tính thành id / value thuộc tính (ví dụ: 1,2), để mã phía sau cảnh hoạt động như hiện tại (dựa trên giá trị / id thuộc tính).

Trong apply()chức năng của app/code/core/Mage/Catalog/Model/Layer/Filter/Attribute.phptôi đang nhận nhãn thuộc tính trong $filter = $request->getParam($this->_requestVar);(ví dụ: Blue).

Làm cách nào tôi có thể chuyển đổi nhãn thuộc tính này thành id thuộc tính (giả sử là màu xanh lá cây là 2), để tôi có thể chuyển nó sang $this->_getResource()->applyFilterToCollection($this, $filter);và chức năng phụ trợ sẽ hoạt động như hiện tại? Tôi đã thử $filter->getId(), $filter->getValue()nhưng nó không hoạt động.

Có thể lấy giá trị thuộc tính / id từ nhãn thuộc tính?

Câu trả lời:


19

Nhận giá trị thuộc tính / id từ văn bản / nhãn thuộc tính:

$attr = 'your_attribute';
$_product = Mage::getModel('catalog/product');
$attr = $_product->getResource()->getAttribute($attr);
if ($attr->usesSource()) {
    echo $color_id = $attr->getSource()->getOptionId("Purple");
}

Điều này sẽ nhận được ID của thuộc tính bằng mã của nó, không phải ID của tùy chọn thuộc tính theo nhãn của nó :)
Sander Mangel

1
Kiểm tra mã cập nhật của tôi
Manashvi Birla

1
Đẹp, rất ít dòng mã
Sander Mangel

@Manashvibirla: Làm thế nào tôi có thể làm cho $attr = $_product->getResource()->getAttribute("color");năng động? Đôi khi tôi sẽ gửi nhãn thuộc tính từ phần Màu, đôi khi từ Nhà sản xuất, v.v.
amitshree

kiểm tra cập nhật ans
Manashvi Birla

5

Thực sự không có một phương pháp đơn giản nào để thực hiện điều đó nhưng điều này sẽ tạo nên mánh khóe

$attribute = Mage::getModel('eav/entity_attribute')->loadByCode(Mage_Catalog_Model_Product::ENTITY, 'color');

$values = Mage::getResourceModel('eav/entity_attribute_option_collection')
    ->setAttributeFilter($attribute->getId())
    ->addFieldToFilter('tsv.value', 'Bleu')
    ->setStoreFilter(Mage::app()->getStore()->getId(), false)
    ->addFieldToSelect('option_id');
$values->getSelect()->limit(1);

var_dump($values->getFirstItem()->getId());

Lưu ý rằng giá trị phải giống hệt như nhãn, bao gồm cả chữ in hoa, v.v.


3

Nhận giá trị tùy chọn thuộc tính

 getOptionvalue('your attribute code like color','your attribute label like blue');

    function getOptionvalue($arg_attribute, $arg_value) 
        {
            $attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', $arg_attribute);

            foreach ( $attribute->getSource()->getAllOptions(true, true) as $option )
            {

                if($arg_value == $option['label'])
                {

                    unset($attribute);
                    return $option['value'] ; 
                }
            }

Có thể lấy $ arg_attribution một cách linh hoạt ở đó không vì $ arg_value sẽ thay đổi (ví dụ: đôi khi nó sẽ xuất hiện phần màu, đôi khi từ Nhà sản xuất).
amitshree

Có, gọi hàm getOptionvalue ('màu', màu xanh); hoặc getOptionvalue ('sản xuất', 'một số giá trị');
Mufaddal

1
Vòng qua tất cả các tùy chọn không phải là một ý tưởng tốt - đặc biệt là nếu bạn có rất nhiều trong số chúng.
Simon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.