snipt

Ctrl+h for KB shortcuts

PHP

Category dropdown list for magento

<?php /* 

Add in your template
$store_cats = Mage::getModel('catalog/category')->getCategories(32); <- change category id to "2" if you want to list all categories. Otherwise you can use it to list child of certain category, in this example category with the id of 32.
*/
?>

<ul class="category-list">                                               
<?php
        $obj = new Mage_Catalog_Block_Navigation();
        $store_cats = Mage::getModel('catalog/category')->getCategories(32);
        $current_cat    = $obj->getCurrentCategory();
        $parent_id      = $current_cat->getParentId();
        $current_cat    = (is_object($current_cat) ? $current_cat->getName() : '');
        foreach ($store_cats as $cat) {
                $cat_id      = $cat->getId();

?>
        <li>
                <a <?php if ($cat->getName() == $current_cat) { ?>class="current"<?php } ?> href="<?php echo $obj->getCategoryUrl($cat) ?>"><?php echo $cat->getName() ?></a>

        <?php //Subcategories

                $count_children = $cat->getChildrenCount();
                if($count_children > 0) { //check if category has children ?>
                        <span class="open <?php if ($cat->getName() == $current_cat) { ?> minus <?php } ?>">Otvori</span>
                        <ul <?php if ($cat->getName() == $current_cat or $parent_id == $cat_id) { ?> class="open" <?php } ?>>

                        <?php //get children
                                
                                $children = Mage::getModel('catalog/category')->getCategories($cat_id);

                                foreach ($children as $subcat) {
                                        $subcat = Mage::getModel('catalog/category')->load($subcat->getId());
                                        $product_count = $subcat->getProductCount();

                                        if($product_count > 0){ //List only categories that have products in them ?>
                                        
                                                <li> 
                                                        <a <?php if ($subcat->getName() == $current_cat) { ?>class="current"<?php } ?> href="<?php echo $obj->getCategoryUrl($subcat) ?>">
                                                                <?php echo $subcat->getName() ?> (<?php echo $product_count ?>)
                                                        </a>
                                                </li> 
                                        <?php } ?>      
                                <?php } ?>
                        </ul>
        <?php } ?>

        </li>
<?php  } ?>
</ul>
https://snipt.net/embed/1a19f192e5f52f1b44500be942600ff8/
/raw/1a19f192e5f52f1b44500be942600ff8/
1a19f192e5f52f1b44500be942600ff8
php
PHP
51
2019-07-21T16:58:38
True
False
False
Nov 14, 2013 at 09:34 AM
/api/public/snipt/94114/
category-dropdown-list-for-magento
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><a href="#L-1"> 1</a> <a href="#L-2"> 2</a> <a href="#L-3"> 3</a> <a href="#L-4"> 4</a> <a href="#L-5"> 5</a> <a href="#L-6"> 6</a> <a href="#L-7"> 7</a> <a href="#L-8"> 8</a> <a href="#L-9"> 9</a> <a href="#L-10">10</a> <a href="#L-11">11</a> <a href="#L-12">12</a> <a href="#L-13">13</a> <a href="#L-14">14</a> <a href="#L-15">15</a> <a href="#L-16">16</a> <a href="#L-17">17</a> <a href="#L-18">18</a> <a href="#L-19">19</a> <a href="#L-20">20</a> <a href="#L-21">21</a> <a href="#L-22">22</a> <a href="#L-23">23</a> <a href="#L-24">24</a> <a href="#L-25">25</a> <a href="#L-26">26</a> <a href="#L-27">27</a> <a href="#L-28">28</a> <a href="#L-29">29</a> <a href="#L-30">30</a> <a href="#L-31">31</a> <a href="#L-32">32</a> <a href="#L-33">33</a> <a href="#L-34">34</a> <a href="#L-35">35</a> <a href="#L-36">36</a> <a href="#L-37">37</a> <a href="#L-38">38</a> <a href="#L-39">39</a> <a href="#L-40">40</a> <a href="#L-41">41</a> <a href="#L-42">42</a> <a href="#L-43">43</a> <a href="#L-44">44</a> <a href="#L-45">45</a> <a href="#L-46">46</a> <a href="#L-47">47</a> <a href="#L-48">48</a> <a href="#L-49">49</a> <a href="#L-50">50</a> <a href="#L-51">51</a></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span id="L-1"><a name="L-1"></a><span class="cp">&lt;?php</span> <span class="cm">/* </span> </span><span id="L-2"><a name="L-2"></a> </span><span id="L-3"><a name="L-3"></a><span class="cm">Add in your template</span> </span><span id="L-4"><a name="L-4"></a><span class="cm">$store_cats = Mage::getModel(&#39;catalog/category&#39;)-&gt;getCategories(32); &lt;- change category id to &quot;2&quot; if you want to list all categories. Otherwise you can use it to list child of certain category, in this example category with the id of 32.</span> </span><span id="L-5"><a name="L-5"></a><span class="cm">*/</span> </span><span id="L-6"><a name="L-6"></a><span class="cp">?&gt;</span><span class="x"></span> </span><span id="L-7"><a name="L-7"></a> </span><span id="L-8"><a name="L-8"></a><span class="x">&lt;ul class=&quot;category-list&quot;&gt; </span> </span><span id="L-9"><a name="L-9"></a><span class="cp">&lt;?php</span> </span><span id="L-10"><a name="L-10"></a> <span class="nv">$obj</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Mage_Catalog_Block_Navigation</span><span class="p">();</span> </span><span id="L-11"><a name="L-11"></a> <span class="nv">$store_cats</span> <span class="o">=</span> <span class="nx">Mage</span><span class="o">::</span><span class="na">getModel</span><span class="p">(</span><span class="s1">&#39;catalog/category&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">getCategories</span><span class="p">(</span><span class="mi">32</span><span class="p">);</span> </span><span id="L-12"><a name="L-12"></a> <span class="nv">$current_cat</span> <span class="o">=</span> <span class="nv">$obj</span><span class="o">-&gt;</span><span class="na">getCurrentCategory</span><span class="p">();</span> </span><span id="L-13"><a name="L-13"></a> <span class="nv">$parent_id</span> <span class="o">=</span> <span class="nv">$current_cat</span><span class="o">-&gt;</span><span class="na">getParentId</span><span class="p">();</span> </span><span id="L-14"><a name="L-14"></a> <span class="nv">$current_cat</span> <span class="o">=</span> <span class="p">(</span><span class="nb">is_object</span><span class="p">(</span><span class="nv">$current_cat</span><span class="p">)</span> <span class="o">?</span> <span class="nv">$current_cat</span><span class="o">-&gt;</span><span class="na">getName</span><span class="p">()</span> <span class="o">:</span> <span class="s1">&#39;&#39;</span><span class="p">);</span> </span><span id="L-15"><a name="L-15"></a> <span class="k">foreach</span> <span class="p">(</span><span class="nv">$store_cats</span> <span class="k">as</span> <span class="nv">$cat</span><span class="p">)</span> <span class="p">{</span> </span><span id="L-16"><a name="L-16"></a> <span class="nv">$cat_id</span> <span class="o">=</span> <span class="nv">$cat</span><span class="o">-&gt;</span><span class="na">getId</span><span class="p">();</span> </span><span id="L-17"><a name="L-17"></a> </span><span id="L-18"><a name="L-18"></a><span class="cp">?&gt;</span><span class="x"></span> </span><span id="L-19"><a name="L-19"></a><span class="x"> &lt;li&gt;</span> </span><span id="L-20"><a name="L-20"></a><span class="x"> &lt;a </span><span class="cp">&lt;?php</span> <span class="k">if</span> <span class="p">(</span><span class="nv">$cat</span><span class="o">-&gt;</span><span class="na">getName</span><span class="p">()</span> <span class="o">==</span> <span class="nv">$current_cat</span><span class="p">)</span> <span class="p">{</span> <span class="cp">?&gt;</span><span class="x">class=&quot;current&quot;</span><span class="cp">&lt;?php</span> <span class="p">}</span> <span class="cp">?&gt;</span><span class="x"> href=&quot;</span><span class="cp">&lt;?php</span> <span class="k">echo</span> <span class="nv">$obj</span><span class="o">-&gt;</span><span class="na">getCategoryUrl</span><span class="p">(</span><span class="nv">$cat</span><span class="p">)</span> <span class="cp">?&gt;</span><span class="x">&quot;&gt;</span><span class="cp">&lt;?php</span> <span class="k">echo</span> <span class="nv">$cat</span><span class="o">-&gt;</span><span class="na">getName</span><span class="p">()</span> <span class="cp">?&gt;</span><span class="x">&lt;/a&gt;</span> </span><span id="L-21"><a name="L-21"></a> </span><span id="L-22"><a name="L-22"></a><span class="x"> </span><span class="cp">&lt;?php</span> <span class="c1">//Subcategories</span> </span><span id="L-23"><a name="L-23"></a> </span><span id="L-24"><a name="L-24"></a> <span class="nv">$count_children</span> <span class="o">=</span> <span class="nv">$cat</span><span class="o">-&gt;</span><span class="na">getChildrenCount</span><span class="p">();</span> </span><span id="L-25"><a name="L-25"></a> <span class="k">if</span><span class="p">(</span><span class="nv">$count_children</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> <span class="c1">//check if category has children ?&gt;</span> </span><span id="L-26"><a name="L-26"></a> <span class="o">&lt;</span><span class="nx">span</span> <span class="nx">class</span><span class="o">=</span><span class="s2">&quot;open &lt;?php if (</span><span class="si">$cat-&gt;getName</span><span class="s2">() == </span><span class="si">$current_cat</span><span class="s2">) { ?&gt; minus &lt;?php } ?&gt;&quot;</span><span class="o">&gt;</span><span class="nx">Otvori</span><span class="o">&lt;/</span><span class="nx">span</span><span class="o">&gt;</span> </span><span id="L-27"><a name="L-27"></a> <span class="o">&lt;</span><span class="nx">ul</span> <span class="o">&lt;?</span><span class="nx">php</span> <span class="k">if</span> <span class="p">(</span><span class="nv">$cat</span><span class="o">-&gt;</span><span class="na">getName</span><span class="p">()</span> <span class="o">==</span> <span class="nv">$current_cat</span> <span class="k">or</span> <span class="nv">$parent_id</span> <span class="o">==</span> <span class="nv">$cat_id</span><span class="p">)</span> <span class="p">{</span> <span class="cp">?&gt;</span><span class="x"> class=&quot;open&quot; </span><span class="cp">&lt;?php</span> <span class="p">}</span> <span class="cp">?&gt;</span><span class="x">&gt;</span> </span><span id="L-28"><a name="L-28"></a> </span><span id="L-29"><a name="L-29"></a><span class="x"> </span><span class="cp">&lt;?php</span> <span class="c1">//get children</span> </span><span id="L-30"><a name="L-30"></a> </span><span id="L-31"><a name="L-31"></a> <span class="nv">$children</span> <span class="o">=</span> <span class="nx">Mage</span><span class="o">::</span><span class="na">getModel</span><span class="p">(</span><span class="s1">&#39;catalog/category&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">getCategories</span><span class="p">(</span><span class="nv">$cat_id</span><span class="p">);</span> </span><span id="L-32"><a name="L-32"></a> </span><span id="L-33"><a name="L-33"></a> <span class="k">foreach</span> <span class="p">(</span><span class="nv">$children</span> <span class="k">as</span> <span class="nv">$subcat</span><span class="p">)</span> <span class="p">{</span> </span><span id="L-34"><a name="L-34"></a> <span class="nv">$subcat</span> <span class="o">=</span> <span class="nx">Mage</span><span class="o">::</span><span class="na">getModel</span><span class="p">(</span><span class="s1">&#39;catalog/category&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">load</span><span class="p">(</span><span class="nv">$subcat</span><span class="o">-&gt;</span><span class="na">getId</span><span class="p">());</span> </span><span id="L-35"><a name="L-35"></a> <span class="nv">$product_count</span> <span class="o">=</span> <span class="nv">$subcat</span><span class="o">-&gt;</span><span class="na">getProductCount</span><span class="p">();</span> </span><span id="L-36"><a name="L-36"></a> </span><span id="L-37"><a name="L-37"></a> <span class="k">if</span><span class="p">(</span><span class="nv">$product_count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">){</span> <span class="c1">//List only categories that have products in them ?&gt;</span> </span><span id="L-38"><a name="L-38"></a> </span><span id="L-39"><a name="L-39"></a> <span class="o">&lt;</span><span class="nx">li</span><span class="o">&gt;</span> </span><span id="L-40"><a name="L-40"></a> <span class="o">&lt;</span><span class="nx">a</span> <span class="o">&lt;?</span><span class="nx">php</span> <span class="k">if</span> <span class="p">(</span><span class="nv">$subcat</span><span class="o">-&gt;</span><span class="na">getName</span><span class="p">()</span> <span class="o">==</span> <span class="nv">$current_cat</span><span class="p">)</span> <span class="p">{</span> <span class="cp">?&gt;</span><span class="x">class=&quot;current&quot;</span><span class="cp">&lt;?php</span> <span class="p">}</span> <span class="cp">?&gt;</span><span class="x"> href=&quot;</span><span class="cp">&lt;?php</span> <span class="k">echo</span> <span class="nv">$obj</span><span class="o">-&gt;</span><span class="na">getCategoryUrl</span><span class="p">(</span><span class="nv">$subcat</span><span class="p">)</span> <span class="cp">?&gt;</span><span class="x">&quot;&gt;</span> </span><span id="L-41"><a name="L-41"></a><span class="x"> </span><span class="cp">&lt;?php</span> <span class="k">echo</span> <span class="nv">$subcat</span><span class="o">-&gt;</span><span class="na">getName</span><span class="p">()</span> <span class="cp">?&gt;</span><span class="x"> (</span><span class="cp">&lt;?php</span> <span class="k">echo</span> <span class="nv">$product_count</span> <span class="cp">?&gt;</span><span class="x">)</span> </span><span id="L-42"><a name="L-42"></a><span class="x"> &lt;/a&gt;</span> </span><span id="L-43"><a name="L-43"></a><span class="x"> &lt;/li&gt; </span> </span><span id="L-44"><a name="L-44"></a><span class="x"> </span><span class="cp">&lt;?php</span> <span class="p">}</span> <span class="cp">?&gt;</span><span class="x"> </span> </span><span id="L-45"><a name="L-45"></a><span class="x"> </span><span class="cp">&lt;?php</span> <span class="p">}</span> <span class="cp">?&gt;</span><span class="x"></span> </span><span id="L-46"><a name="L-46"></a><span class="x"> &lt;/ul&gt;</span> </span><span id="L-47"><a name="L-47"></a><span class="x"> </span><span class="cp">&lt;?php</span> <span class="p">}</span> <span class="cp">?&gt;</span><span class="x"></span> </span><span id="L-48"><a name="L-48"></a> </span><span id="L-49"><a name="L-49"></a><span class="x"> &lt;/li&gt;</span> </span><span id="L-50"><a name="L-50"></a><span class="cp">&lt;?php</span> <span class="p">}</span> <span class="cp">?&gt;</span><span class="x"></span> </span><span id="L-51"><a name="L-51"></a><span class="x">&lt;/ul&gt;</span> </span></pre></div> </td></tr></table>
category, magento