2

I want to edit my /catalog/product/list/related.phtml file.

I want to define all related products based on their main category. So for example that all mices are displayed in their category "Mices" and all keyboards are also display in their category "Keyboards".

Therefore I need to edit the code below into the correct one. So I need to get the main category of the related products and display all content based on these categories. I already tried something in the code below, but that does not work.

How can I achieve that? Anyone who knows how to achieve this?

Magento version 1.9.2.4

For example what I want:

<div>
<h1>Mices</h1>
<ul>
<li>product 1</li>
<li>product 2</li>
</ul>
</div>

<div>
<h1>Keyboards</h1>
<ul>
<li>product 1</li>
<li>product 2</li>
</ul>
</div>

I get the category name by using the following code. But now I need to edit the foreach, so that it display all items inside a specific category.

<?php $categoryIds = $_item->getCategoryIds(); 
                    if(count($categoryIds) ){
                        $firstCategoryId = $categoryIds[0];
                        $_category = Mage::getModel('catalog/category')->load($firstCategoryId);
                    echo $_category->getName();
            }?>

Current related.phtml:

<?php if($this->getItems()->getSize()): ?>
<div class="block block-related">
    <div class="block-title">
        <h3><?php echo $this->__('Related Products') ?></h3>
    </div>
    <div class="block-content">
        <p class="block-subtitle"><?php echo $this->__('Check items to add to the cart or') ?>&nbsp;<a href="#" onclick="selectAllRelated(this); return false;"><?php echo $this->__('select all') ?></a></p>
        <ol class="mini-products-list" id="block-related">
        <?php foreach($this->getItems() as $_item): ?>

        <?php $categoryIds = $_item->getCategoryIds(); 
                    if(count($categoryIds) ){
                        $firstCategoryId = $categoryIds[0];
                        $_category = Mage::getModel('catalog/category')->load($firstCategoryId);
                    echo $_category->getName();
            }?>
        <?php foreach($_category->getName() as $_categoryitems): ?>    
            <h1><?php echo $_category->getName();?></h1> 
            <li class="item">
                <?php if(!$_item->isComposite() && $_item->isSaleable()): ?>
                    <?php if (!$_item->getRequiredOptions()): ?>
                        <input type="checkbox" class="checkbox related-checkbox" id="related-checkbox<?php echo $_item->getId() ?>" name="related_products[]" value="<?php echo $_item->getId() ?>" />
                    <?php endif; ?>
                <?php endif; ?>
                <div class="product">
                    <a href="<?php echo $_item->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_item->getName()) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_item, 'thumbnail')->resize(100) ?>" width="100" height="100" alt="<?php echo $this->htmlEscape($_item->getName()) ?>" /></a>
                    <div class="product-details">
                        <p class="product-name"><a href="<?php echo $_item->getProductUrl() ?>"><?php echo $this->htmlEscape($_item->getName()) ?></a></p>
                        <?php echo $this->getPriceHtml($_item, true, '-related') ?>
                        <?php if ($this->helper('wishlist')->isAllow()) : ?>
                            <a title="<?php echo $this->__('Add to Wishlist') ?>" href="<?php echo $this->getAddToWishlistUrl($_item) ?>" class="link-wishlist"> </a>
                        <?php endif; ?>
                    </div>
                </div>
            </li>
        <?php endforeach ?>    

        <?php endforeach ?>
        </ol>
        <script type="text/javascript">decorateList('block-related', 'none-recursive')</script>
    </div>
    <script type="text/javascript">
    //<![CDATA[
    $$('.related-checkbox').each(function(elem){
        Event.observe(elem, 'click', addRelatedToProduct)
    });
    var relatedProductsCheckFlag = false;
    function selectAllRelated(txt){
        if (relatedProductsCheckFlag == false) {
            $$('.related-checkbox').each(function(elem){
                elem.checked = true;
            });
            relatedProductsCheckFlag = true;
            txt.innerHTML="<?php echo $this->__('unselect all') ?>";
        } else {
            $$('.related-checkbox').each(function(elem){
                elem.checked = false;
            });
            relatedProductsCheckFlag = false;
            txt.innerHTML="<?php echo $this->__('select all') ?>";
        }
        addRelatedToProduct();
    }
    function addRelatedToProduct(){
        var checkboxes = $$('.related-checkbox');
        var values = [];
        for(var i=0;i<checkboxes.length;i++){
            if(checkboxes[i].checked) values.push(checkboxes[i].value);
        }
        if($('related-products-field')){
            $('related-products-field').value = values.join(',');
        }
    }
    //]]>
    </script>
</div>
<?php endif ?>

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.