8

How do I remove the View All link from the menu in rwd theme?

This is the current set of categories I have and how I want it to show in the menu

Category 1
-- Subcategory 1
---- Subcategory 1
-- Subcategory 2

Category 2
-- Subcategory 1

When using rwd it shows the menu like this

Category 1
--View All Category 1
-- Subcategory 1
---- View All Subcategory 1
---- Subcategory
-- Subcategory 2

Category 2
-- Subcategory 1

I've tried searching but can't find a solution to this.

1
  • Reid Blomquist your answer just excellent .. works like charm Commented May 9, 2016 at 15:58

2 Answers 2

22

To do this you'll first want to (if you haven't already) create a custom template directory within the RWD design package. This avoids re or overwriting your default templates that live in magento/app/design/frontend/rwd/default/template.

For the sake of example we'll create magento/app/design/frontend/rwd/custom/template

The specific template we're going to be editing is the topmenu renderer.phtml - which resides at magento/app/design/frontend/rwd/default/template/page/html/topmenu/renderer.phtml. To extend this file properly, create a matching directory structure within the magento/app/design/frontend/rwd/custom/template directory we just created - you should end up with a directory that looks like this: magento/app/design/frontend/rwd/custom/template/page/html/topmenu

Once your topmenu template directory has been created, copy the renderer.phtml file from rwd/default/template/page/html/topmenu into the rwd/custom/template/page/html/topmenu directory you just created.

This file should contain the following code at ~ lines 62 - 71:

    if (!empty($_hasChildren)) {
    $html .= '<ul class="level'. $childLevel .'">';
    $html .=     '<li class="level'. $nextChildLevel .'">';
    $html .=         '<a class="level'. $nextChildLevel .'" href="'. $child->getUrl() .'">';
    $html .=             $this->__('View All ') . $this->escapeHtml($this->__($child->getName()));
    $html .=         '</a>';
    $html .=     '</li>';
    $html .=     $this->render($child, $childrenWrapClass);
    $html .= '</ul>';
}

In your copied file, you'll want to remove or comment out the mid-section so that you're left with:

    if (!empty($_hasChildren)) {
    $html .= '<ul class="level'. $childLevel .'">';
    $html .=     $this->render($child, $childrenWrapClass);
    $html .= '</ul>';
}

Once you've saved your file you can go into adminhtml -> System -> Configuration -> General -> Design -> Themes and set the field "Templates" to the value "custom" -> Save Config and then clear cache.

You should now no longer see the "View All XXX" portion of your sites navigation!

1
  • This fixed the issue. I came across a similar post but that didn't explain about creating custom directories or clearing the cache.
    – Matt
    Commented Aug 8, 2014 at 14:30
-2

You can also add this CSS somewhere (like styles.css)

.view-all {
    display: none;
}
1
  • hiding something with css doesn't actually remove it, it just hides it
    – Haim
    Commented Oct 26, 2017 at 13:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.