Magento 제품 페이지에서 "옵션 선택 ..."텍스트 변경


Answers

나는 이것을하는 더 간단한 방법을 찾고 있었다. 자바 스크립트 확장으로 핵심 파일이나 병역을 확장하고 싶지 않았습니다. 대신 JSON 설정을 구문 분석하고 chooseText 설정을 업데이트 한 다음 JSON으로 다시 변환했습니다.

/~theme/default/template/catalog/product/view/type/options/configurable.phtml

<?php
$jsonConfig = json_decode($this->getJsonConfig());
$jsonConfig->chooseText = 'Select..';
?>

<script type="text/javascript">
    var spConfig = new Product.Config(<?php echo json_encode($jsonConfig); ?>);
</script>

여기에 더 많은 정보와 추가 예제가 있습니다 .

Question

구성 가능한 제품을 만들었는데, 색상 , 크기스타일의 세 가지 옵션이 있습니다 .

이제 제품 페이지에서 각 옵션의 드롭 다운에서 기본 텍스트 " 옵션 선택 ... "이 표시되지만 텍스트는 " 색상 선택 ", " 크기 선택 "및 " 스타일 선택 "이되어야합니다.

app \ code \ core \ Mage \ Catalog \ Block \ View \ Type \ Configurable.php에서 함수 getJsonConfig ()를 편집했습니다.

에서:

    'chooseText'        => Mage::helper('catalog')->__('Choose an Option...'),

에:

    'chooseText'        => ('Select ').$attribute->getLabel(),

그리고 파일 frontend/base/default/template/catalog/product/view/type/options/configurable.phtml 39 행을 다음과 같이 편집하십시오.

<option><?php echo $this->__('Select ') ?><?php echo $_attribute->getLabel() ?></option>

그러나 결과는 좋지 않습니다. 3 가지 옵션 중에서 "스타일 선택"텍스트를 항상 보여줍니다. 이 문제에 대한 힌트를주세요, 정말 고마워요!




configurable.js 파일 만 변경하는 경우
페이지로드시 첫 번째 선택 만 변경됩니다.
템플릿 파일을 변경해야합니다.
테스트를 위해 첨부 파일 가져 오기 (작은 확장자로 작성)

<?php
$_product = $this->getProduct();
$_attributes = Mage::helper('core')->decorateArray($this->getAllowAttributes());
?>
<?php if ($_product->isSaleable() && count($_attributes)):?>
    <dl>
    <?php foreach($_attributes as $_attribute): ?>
        <?php
        $_attributeId = $_attribute->getAttributeId();
        $_attributeInfo = Mage::getModel('eav/entity_attribute')->load($_attributeId);
        $_attributeLabel = str_replace(' ','-',strtolower($_attributeInfo->getFrontendLabel()));
        ?>
            <dd<?php if ($_attribute->decoratedIsLast){?> class="last"<?php }?>>
                <div class="input-box">
                    <select name="super_attribute[<?php echo $_attribute->getAttributeId() ?>]" id="attribute<?php echo $_attribute->getAttributeId() ?>" class="required-entry super-attribute-select kevin-black-<?php echo $_attributeLabel;?>">
                    <option><?php echo $_attributeInfo->getFrontendLabel() ?></option>
                    </select>
                </div>
            </dd>
        <?php endforeach; ?>
    </dl>
<script type="text/javascript">
    var spConfig = new Product.Config(<?php echo $this->getJsonConfig() ?>);
    //kevin.qazware@gmail.com Change Text follow attribute Label
    function changeFristText(){
        <?php foreach($_attributes as $_attribute): ?>
            <?php
            $_attributeId = $_attribute->getAttributeId();
            $_attributeInfo = Mage::getModel('eav/entity_attribute')->load($_attributeId);
            ?>
            var label = '<?php echo $_attributeInfo->getFrontendLabel();?>';
            $$('select.kevin-black-'+label).each(function(elem){
                var options = elem.childElements();
                options[0].update(label);
            });
        <?php endforeach;?>
    }
</script>
<?php endif;?>


in file : js/varien/configurable.js replace line 171 = element.options[0] = new Option(element.config.label, ‘’);

모든 속성 세트에 적용됩니다.




다음 코드에 따라 Product.Config 클래스 (fillselect 메서드)를 확장했습니다.

fillSelect: function(element){
                    var attributeId = element.id.replace(/[a-z]*/, '');
                    var options = this.getAttributeOptions(attributeId);
                    this.clearSelect(element);
                      element.options[0] = new Option('Select '+element.config.label,'');
                    ........

괜찮아!




파일 카탈로그 / 제품 /보기 / 유형 / 옵션 / configurable.phml

<?php
$_product    = $this->getProduct();
$_attributes = Mage::helper('core')->decorateArray($this->getAllowAttributes());
?>
<?php if ($_product->isSaleable() && count($_attributes)):?>
    <dl>
    <?php foreach($_attributes as $_attribute): ?>
        <?php 
            $_attributeId = $_attribute->getAttributeId();
            $_attributeInfo = Mage::getModel('eav/entity_attribute')->load($_attributeId);
            $_attributeLabel = str_replace(' ','-',strtolower($_attributeInfo->getFrontendLabel()));
        ?>
        <dd<?php if ($_attribute->decoratedIsLast){?> class="last"<?php }?>>
            <div class="input-box">
                <select  name="super_attribute[<?php echo $_attribute->getAttributeId() ?>]" id="attribute<?php echo $_attribute->getAttributeId() ?>" class="required-entry super-attribute-select kevin-black-<?php echo $_attributeLabel;?>">
                    <option><?php echo $this->__('Select '.$_attributeLabel) ?></option>
                  </select>
              </div>
        </dd>
    <?php endforeach; ?>
    </dl>
    <script type="text/javascript">
        var spConfig = new Product.Config(<?php echo $this->getJsonConfig() ?>);
        //Change Text follow attribute Label
        function changeFristText(){
            <?php foreach($_attributes as $_attribute): ?>
                <?php 
                    $_attributeId = $_attribute->getAttributeId();
                    $_attributeInfo = Mage::getModel('eav/entity_attribute')->load($_attributeId);
                    $_attributeLabel = str_replace(' ','-',strtolower($_attributeInfo->getFrontendLabel()));
                ?>
                var label = '<?php echo $_attributeLabel;?>';
                $$('select.kevin-black-'+label).each(function(elem){
                    var options = elem.childElements();
                    options[0].update('Select ' + label);
                });
            <?php endforeach;?>
        }
    </script>
<?php endif;?>

한 줄 추가 changeFristText(); js / varien / configurable.js 파일의 171 행 뒤 ( element.options[0] = new Option(this.config.chooseText, ''); )

모든 속성 세트에 적용됩니다.