简体   繁体   English

Magento:在产品页面中以两列的列表元素形式显示产品选项

[英]Magento: Display Product Options in Product Page as List Elements in Two Columns

Having actual Magento 1.9.3 situation... 实际有Magento 1.9.3的情况...

In product-page there are a lot of configuration options. 在产品页面中,有很多配置选项。 Need to save space, so need to turn the one column vertical product options list into a two column list to reduce the space to 50%. 需要节省空间,因此需要将一列垂直产品选项列表转换为两列列表以将空间减少到50%。

Already tried several methods, also this one: https://magento.stackexchange.com/questions/70857/display-product-options-change-layout-of-in-block-after-info-column 已经尝试了几种方法,也是这种方法: https : //magento.stackexchange.com/questions/70857/display-product-options-change-layout-of-in-block-after-info-column

in combination with Css Styling list elements in two columns 两列中的CSS样式列表元素结合使用

and this https://csswizardry.com/2010/02/mutiple-column-lists-using-one-ul/ 和这个https://csswizardry.com/2010/02/mutiple-column-lists-using-one-ul/

But did not figure it out really. 但是并没有真正弄清楚。 Was stopping on the results, to display all in only one horizontal line. 正在停止结果,仅在一条水平线上显示所有结果。 The issue is, that if there are 10 attributes to select, the line is becoming very pressed and nothing is recognisable. 问题是,如果要选择10个属性,则该行变得非常紧迫,无法识别任何内容。

Is anyone out there, who is able to adjust the code? 有人在外面,谁可以调整代码?

Here is the code having in: 这是其中的代码:

/template/catalog/product/view/type/options/configurable.phtml /template/catalog/product/view/type/options/configurable.phtml

    <?php
$_product    = $this->getProduct();
$_attributes = Mage::helper('core')->decorateArray($this->getAllowAttributes());
$_jsonConfig = $this->getJsonConfig();
$_renderers = $this->getChild('attr_renderers')->getSortedChildren();
?>
<?php if ($_product->isSaleable() && count($_attributes)):?>
<div class="items">    
    <dl>
    <?php foreach($_attributes as $_attribute): ?>
        <?php
        $_rendered = false;
        foreach ($_renderers as $_rendererName):
            $_renderer = $this->getChild('attr_renderers')->getChild($_rendererName);
            if (method_exists($_renderer, 'shouldRender') && $_renderer->shouldRender($_attribute, $_jsonConfig)):
                $_renderer->setProduct($_product);
                $_renderer->setAttributeObj($_attribute);
                echo $_renderer->toHtml();
                $_rendered = true;
                break;
            endif;
        endforeach;

        if (!$_rendered):
        ?>
        <dt><label class="required"><em>*</em><?php echo $_attribute->getLabel() ?></label></dt>
        <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">
                    <option><?php echo $this->__('Choose an Option...') ?></option>
                  </select>
              </div>
        </dd>
        <?php endif; ?>
    <?php endforeach; ?>
    </dl>
</div>  
    <script type="text/javascript">
        var spConfig = new Product.Config(<?php echo $_jsonConfig ?>);
    </script>
    <?php echo $this->getChildHtml('after') ?>
<?php endif;?>

Without Seeing the output its hard to know what you want exactly, but if you want the options to be in 2 columns this should work. 在没有看到输出的情况下,很难知道您到底想要什么,但是如果您希望选项位于两列中,则应该可以使用。

 .items dl { display:flex; flex-wrap: wrap; } .items dl .options-wrapper{ width: 50%; } //If you want on smaller screens to make them 1 row. @media screen and (max-width: 768px) { .items dl .options-wrapper{ width: 100%; } } 
  <?php $_product = $this->getProduct(); $_attributes = Mage::helper('core')->decorateArray($this->getAllowAttributes()); $_jsonConfig = $this->getJsonConfig(); $_renderers = $this->getChild('attr_renderers')->getSortedChildren(); ?> <?php if ($_product->isSaleable() && count($_attributes)):?> <div class="items"> <dl> <?php foreach($_attributes as $_attribute): ?> <?php $_rendered = false; foreach ($_renderers as $_rendererName): $_renderer = $this->getChild('attr_renderers')->getChild($_rendererName); if (method_exists($_renderer, 'shouldRender') && $_renderer->shouldRender($_attribute, $_jsonConfig)): $_renderer->setProduct($_product); $_renderer->setAttributeObj($_attribute); echo $_renderer->toHtml(); $_rendered = true; break; endif; endforeach; if (!$_rendered): ?> <div class="options-wrapper"> <dt><label class="required"><em>*</em><?php echo $_attribute->getLabel() ?></label></dt> <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"> <option><?php echo $this->__('Choose an Option...') ?></option> </select> </div> </dd> </div> <?php endif; ?> <?php endforeach; ?> </dl> </div> <script type="text/javascript"> var spConfig = new Product.Config(<?php echo $_jsonConfig ?>); </script> <?php echo $this->getChildHtml('after') ?> <?php endif;?> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM