Cart Appears Empty After Adding An Item & Visiting A New Page

Symptoms

  • Cart icon shows up as empty after adding an item and navigating to another page.

Cause

Header toplinks are not being properly hole punched. This can be verified by following our How to check if ESI block holes are being properly punched page.

Solution

Checking the config - design from Magento Admin, it uses default theme_revamp.

In header.phtml we see the following:

<div class="row">
  <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
    <div class="top-sticky-text">
      <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('header_sticky_block')->toHtml(); ?>
    </div>
  </div>
  <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
    <div class="top-links">
      <ul class="top-links-list">
        <?php if ($this->helper('customer')->isLoggedIn()): ?>
        <li><a href="<?php echo $this->getUrl('customer/account/logout'); ?>"><i class="account-icon"></i>Logout</a></li>
        <li><a href="<?php echo $this->getUrl('customer/account'); ?>"><i class="signup-icon"></i>My Account</a></li>
        <?php else: ?>
        <li><a href="<?php echo $this->getUrl('customer/account/login'); ?>"><i class="account-icon"></i>Login</a></li>
        <li><a href="<?php echo $this->getUrl('customer/account/create'); ?>"><i class="signup-icon"></i>Sign up</a></li>
        <?php endif ?>
        <li><a href="<?php echo Mage::helper('checkout/url')->getCheckoutUrl(); ?>"><i class="checkout-icon"></i>Checkout</a></li>
        <li class="bulk-link">
          <a href="<?php echo $this->getUrl('quickshopping'); ?>"><i class="bulkpro-icon"></i>Quick Shop</a>
        </li>
        <li class="search-cart-cart-btn">
          <?php $_cartQty = Mage::getSingleton('checkout/cart')->getSummaryQty()?Mage::getSingleton('checkout/cart')->getSummaryQty():'0'; ?>
          <div id="cart-main" class="search-cart cart-btn <?php if($_cartQty != 0) echo 'color-red'; ?>">
            <div class="div_link-cart">
              <div class="div_link-cart_inner"><?php echo $this->__('<a href="%s" id="topcartlink" class="top-cart"><i class="cart-icon"></i><span class="item-cart"> %s </span>items </a>', $this->getUrl('checkout/cart'),$_cartQty) ?>
                <div id="top_cart_sidebar" style="display: none"><?php echo $this->getChildHtml('em0050_cart_sidebar_top');?>
                </div>
              </div>
            </div>
          </div>
        </li>
      </ul>
    </div>
  </div>
</div>

Create a new template toprow.phtml in /home/user1/public_html/app/design/frontend/default/theme_revamp/template/page/html with the following content:

<div class="row">
  <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
    <div class="top-sticky-text">
      <?php 
      if (!$this->helper('customer')->isLoggedIn()) {
      echo $this->getLayout()->createBlock('cms/block')->setBlockId('header_sticky_block')->toHtml(); 
      } ?>
    </div>
  </div>
  <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
    <div class="top-links">
      <ul class="top-links-list">
        <?php if ($this->helper('customer')->isLoggedIn()): ?>
        <li><a href="<?php echo $this->getUrl('customer/account/logout'); ?>"><i class="account-icon"></i>Logout</a></li>
        <li><a href="<?php echo $this->getUrl('customer/account'); ?>"><i class="signup-icon"></i>My Account</a></li>
        <?php else: ?>
        <li><a href="<?php echo $this->getUrl('customer/account/login'); ?>"><i class="account-icon"></i>Login</a></li>
        <li><a href="<?php echo $this->getUrl('customer/account/create'); ?>"><i class="signup-icon"></i>Sign up</a></li>
        <?php endif ?>
        <li><a href="<?php echo Mage::helper('checkout/url')->getCheckoutUrl(); ?>"><i class="checkout-icon"></i>Checkout</a></li>
        <li class="bulk-link">
          <a href="<?php echo $this->getUrl('quickshopping'); ?>"><i class="bulkpro-icon"></i>Quick Shop</a>
        </li>
        <li class="search-cart-cart-btn">
          <?php $_cartQty = Mage::getSingleton('checkout/cart')->getSummaryQty()?Mage::getSingleton('checkout/cart')->getSummaryQty():'0'; ?>
          <div id="cart-main" class="search-cart cart-btn <?php if($_cartQty != 0) echo 'color-red'; ?>">
            <div class="div_link-cart">
              <div class="div_link-cart_inner"><?php echo $this->__('<a href="%s" id="topcartlink" class="top-cart"><i class="cart-icon"></i><span class="item-cart"> %s </span>items </a>', $this->getUrl('checkout/cart'),$_cartQty) ?>
                <div id="top_cart_sidebar" style="display: none"><?php echo $this->getChildHtml('em0050_cart_sidebar_top');?>
                </div>
              </div>
            </div>
          </div>
        </li>
      </ul>
    </div>
  </div>
</div>

Now update the releated part of header.phtml:

32 <div class="top-bar">
33   <div class="container">
34     <?php echo $this->getChildHtml('toprow'); ?>
35   </div>
36 </div>

In the layout file, add the new block inside the header section:

[/home/user1/public_html/app/design/frontend/default/theme_revamp/layout]# vi page.xml

<block type="core/template" name="toprow" as="toprow" template="page/html/toprow.phtml" />

Finally, in the LiteMage configuration, change the following:

  • In the configuration, add “toprow” in Customized Block Names for “toplinks” Tag
  • Flush Product and Categories When Product Qty Changes ⇒ “Flush product and categories only when stock status change”
  • Separate cache copy per customer group ⇒ Yes
  • Track recently Viewed ⇒ No

Flush both LiteMage and Magento caches.

  • Admin
  • Last modified: 2017/05/03 20:01
  • by Michael Alegre