2017-04-07 9 views
0

より多くの機能を搭載したアコーディオンとしてカテゴリを表示したい。 最初に、私は3〜4のカテゴリのみを表示したい、より多くのリンクをクリックした後に残りのカテゴリを表示したいと思う。リンクをもう一度クリックすると負荷が少なくなります。loadオプションを使用してaccordion機能を実現するにはどうすればよいですか?

Ref。私はコードの下に使用していますhttps://drive.google.com/file/d/0B4PokeydRXWebHJabmdXbFVtY2M/view

:コードの下

<div class="cat-dropdown" style="margin:25px 0; width:100%; float:left; clear:both"> 
     <?php 
     $parentCatId = Mage::registry('current_category')->getId(); 
     $root = Mage::getModel('catalog/category')->load($parentCatId); 
     $subCat = explode(',',$root->getChildren()); 

     $collection = $root 
        ->getCollection() 
        ->addAttributeToSelect("*") 
        ->addFieldToFilter("entity_id", array("in", $subCat)); 
     ?> 
<div class="products-grid first odd brand_list1"> 
       <?php foreach($collection as $catname){ 
        $qty = Mage::getModel('catalog/category')->load($catname->getId())->getProductCount();?> 
          <div class="selected item<?php if (($i - 1) % $_columnCount == 0): ?> first<?php elseif ($i % $_columnCount == 0): ?> last<?php endif; ?>"> 
           <div class="cat-custom-img"> 
           <h2 class="lavel-1"><a href="<?php echo $catname->getUrl(); ?>"><?php echo $catname->getName(); ?></a></h2> 
           <?php if($catname['sliderimage']) { ?> 
           <img src="<?php echo Mage::getBaseUrl('media').'catalog/category/'.$catname['sliderimage']; ?>" alt= "" > 
           <?php } ?> 
           </div> 
      <?php $_category = Mage::getModel('catalog/category')->load($catname->getId()) ?> 
      <?php $_subcategories = $_category->getChildrenCategories() ?> 
           <?php if (count($_subcategories) > 0){ ?> 
            <div class="catlist-toggle"> 
             <div class="catlist-toggle-inner"> 
             <ul class="second_level_cat myList"> 
              <?php $limit=1; ?> 
              <?php foreach($_subcategories as $_subcategory){ ?> 
                <li class="hide"> 
                 <h2><a href="<?php echo $_subcategory->getUrl(); ?>"> 
                  <?php echo $_subcategory->getName(); ?> 
                  </a> 
                 </h2> 
                 <?php $_subcategory1 = Mage::getModel('catalog/category')->load($_subcategory->getId()) ?> 
                 <?php $_subsubcategories1 = $_subcategory1->getChildrenCategories() ?> 
                 <?php if (count($_subsubcategories1) > 0){ ?> 
                  <ul class="third_level_cat myList"> 
                   <?php foreach($_subsubcategories1 as $_subsubcategory){ ?> 
                   <li class="hide"> 
                    <h2><a href="<?php echo $_subsubcategory->getUrl(); ?>" > 
                     <?php echo $_subsubcategory->getName(); ?> 
                    </a></h2> 
                    <?php $_subcategory2 = Mage::getModel('catalog/category')->load($_subsubcategory->getId()) ?> 
                    <?php $_subsubcategories2 = $_subcategory2->getChildrenCategories() ?> 
                    <?php if (count($_subsubcategories2) > 0){ ?> 
                     <ul class="fourth_level_cat myList"> 
                      <?php foreach($_subsubcategories2 as $_subsubcategory2){ ?> 
                      <li class="hide"> 
                       <h2><a href="<?php echo $_subsubcategory2->getUrl(); ?>" > 
                        <?php echo $_subsubcategory2->getName(); ?> 
                       </a></h2> 
                      </li> 
                      <?php } ?> 
                     </ul> 
                    <?php } ?> 
                   </li> 
                   <?php } ?> 
                  </ul> 
                 <?php } ?> 
                </li> 
                <?php $limit++; ?> 
                <?php // if($limit == 3){break;} ?> 

              <?php } ?> 
             <li class=""><div class="load-more">Load more</div></li> 

             </ul> 
             </div> 
            </div> 
           <?php } ?> 
          </div> 
       <?php } ?> 
      </div> 
    </div> 




<script> 
    jQuery('.cat-dropdown').navAccordion({ 
    expandButtonText : "+", 
     collapseButtonText: "-", 
     selectedExpand: "true", 
     selectedClass: "selected", 
     buttonPosition: "right", 
     headersOnly: false, 
     headersOnlyCheck: false, 
     delayLink: false, 
     delayAmount: null 
    }); 
    </script> 

<script> 
jQuery(document).ready(function(){ 
    jQuery(".load-more").click(function(){ 
    jQuery(this).closest('.selected').find('.catlist-toggle').toggleClass('expand');  
    }); 
    jQuery(".accordion-btn").click(function(){ 
    jQuery(this).closest('.selected').find('.catlist-toggle').addClass('expand'); 
    }); 
}); 

</script> 



<style> 
.selected.item{width: 23%;float: left;margin: 0 10px 55px 10px;} 
.catlist-toggle{position: relative; } 
.catlist-toggle.expand{height:auto;overflow:initial;} 
.catlist-toggle.expand .catlist-toggle-inner ul{height:auto;overflow:initial;} 
.catlist-toggle .catlist-toggle-inner{position: relative; width: 100%; top:0; left: 0; background:#fff; z-index:9999;} 
.catlist-toggle .catlist-toggle-inner ul{ z-index:9999; height: 220px;overflow:hidden; width:100%;} 
.catlist-toggle .load-more{position: absolute; width: 100%; bottom:0; left: 0; background:#ddd; color:#000;} 
.cat-custom-img .level-1{ width: 70%;} 
.cat-custom-img img{ width: 20%;float: right; margin-top: -71px;} 

</style> 

答えて

0

用途:

<div class="" style="margin:25px 0; width:100%; float:left; clear:both"> 
    <?php 
    $parentCatId = Mage::registry('current_category')->getId(); 
    $root = Mage::getModel('catalog/category')->load($parentCatId); 
    $subCat = explode(',',$root->getChildren()); 

    $collection = $root 
       ->getCollection() 
       ->addAttributeToSelect("*") 
       ->addFieldToFilter("entity_id", array("in", $subCat)); 
    ?> 
    <div class="accord-outer"> 
     <?php foreach($collection as $catname){ ?> 
     <div class="accord-section"> 
      <div class="accord"> 
       <ul> 
        <?php $qty = Mage::getModel('catalog/category')->load($catname->getId())->getProductCount();?> 
        <li class="selected parent">       
         <a href="<?php echo $catname->getUrl(); ?>"><?php echo $catname->getName(); ?></a> 
         <?php if($catname['sliderimage']) { ?> 
         <img src="<?php echo Mage::getBaseUrl('media').'catalog/category/'.$catname['sliderimage']; ?>" alt= "" > 
         <?php } ?> 

        </li> 

        <?php $_category = Mage::getModel('catalog/category')->load($catname->getId()) ?> 
        <?php $_subcategories = $_category->getChildrenCategories() ?> 
        <?php if (count($_subcategories) > 0){ ?>        
         <?php $limit=1; ?> 
         <?php foreach($_subcategories as $_subcategory){ ?> 
           <li class="parent"> 
            <a href="<?php echo $_subcategory->getUrl(); ?>"> 
             <?php echo $_subcategory->getName(); ?> 
            </a> 

            <?php $_subcategory1 = Mage::getModel('catalog/category')->load($_subcategory->getId()) ?> 
            <?php $_subsubcategories1 = $_subcategory1->getChildrenCategories() ?> 
            <?php if (count($_subsubcategories1) > 0){ ?> 
             <ul class=""> 
              <?php foreach($_subsubcategories1 as $_subsubcategory){ ?> 
              <li class=""> 
               <a href="<?php echo $_subsubcategory->getUrl(); ?>" > 
                <?php echo $_subsubcategory->getName(); ?> 
               </a> 
               <?php $_subcategory2 = Mage::getModel('catalog/category')->load($_subsubcategory->getId()) ?> 
               <?php $_subsubcategories2 = $_subcategory2->getChildrenCategories() ?> 
               <?php if (count($_subsubcategories2) > 0){ ?> 
                <ul class=""> 
                 <?php foreach($_subsubcategories2 as $_subsubcategory2){ ?> 
                 <li class=""> 
                  <a href="<?php echo $_subsubcategory2->getUrl(); ?>" > 
                   <?php echo $_subsubcategory2->getName(); ?> 
                  </a> 
                 </li> 
                 <?php } ?> 
                </ul> 
               <?php } ?> 
              </li> 
              <?php } ?> 
             </ul> 
            <?php } ?> 
           </li> 
           <?php $limit++; ?> 

         <?php } ?>       
        <?php } ?> 
        <li class="parent load"><span class="loadmore">Load More</span><span class="loadless">Load Less</span></li> 
       </ul> 
      </div> 
     </div> 
     <?php } ?> 
    </div> 
</div> 


<script> 
jQuery('document').ready(function(){ 
    jQuery('.accord').navAccordion({ 

    // Text inside of expand button 
    expandButtonText : "+", 

    // Text inside of collapse button 
    collapseButtonText: "-", 

    // Expand the selected channel 
    selectedExpand: "true", 

    // Class that will be used to detect the currently selected channel 
    // This will check the "parentElement" for this class (the parent <li> by default) 
    selectedClass: "selected", 

    // Apply accordion to all levels 
    // Setting this to false will apply the accordion only to the first level 
    multipleLevels: "true", 

    // Width of accordion expand/collapse button as a percentage or pixels 
    buttonWidth: "20%", 

    // Position of button 
    buttonPosition: "right", 

    // Speed of slide animation 
    // "fast", "slow", or number in milliseconds such as 500 
    slideSpeed: "fast", 

    // Parent element type, class or ID 
    // You don't need to change this if you're using a ul > li > ul pattern 
    parentElement: "li", 

    // Child element type, class or ID 
    // You don't need to change this if you're using a ul > li > ul pattern 
    childElement: "ul", 

    // Setting to true will make any link with sub-nav behave as if it were set to header only, making the link inaccessible 
    // This option is useful if you are using the plugin for a non-navigation area 
    headersOnly: false, 

    // Setting to true to apply the accordion only to links that are set as "header only" (have no href) 
    headersOnlyCheck: false, 

    // Delay following the href of links until after the accordion the has expanded 
    delayLink: false, 

    // Time in milliseconds to delay before following href - will use "slideSpeed" by default if nothing else is set 
    delayAmount: null 
    }); 

    function accord(ac){ 
     //console.log(ac); 
     var total = jQuery(ac).find('ul li.parent').length; 
     //console.log(total); 
     if(total > 5){   
      jQuery(ac).find('ul li.parent').each(function(i) { 
       if(i==1){ 
        jQuery(this).toggleClass("visible"); 
       } 
       else if(i<=3){ 
        jQuery(this).toggleClass("visible"); 
       } 
       else if(i == (total-1)){ 
        jQuery(this).addClass("button"); 
       } 
       else{ 
        jQuery(this).toggleClass("hidden"); 
       }      
      }); 
     } 
     else{ 
      jQuery(ac).find('ul li.parent.load').hide(); 
      //alert('afsdfdf'); 
     } 
    } 

    jQuery('.accord-outer .accord-section').each(function(){      
     accord(jQuery(this).children('.accord'));     
    }) 
    jQuery('.load').click(function(event){ 
     accord(jQuery(this).closest('.accord'));  
     jQuery(this).find('.loadless').removeClass("accordion-active"); 
     jQuery(this).find('.loadless').toggleClass("active"); 
     jQuery(this).find('.loadmore').toggleClass("active"); 
    }); 
    jQuery(".loadless").click(function(){ 
     jQuery(this).closest('.accord').find('li.parent.active ul').css('display', 'none'); 
     jQuery(this).closest('.accord').find('li.parent.active .accordion-collapsed').css('display', 'inline-block'); 
     jQuery(this).closest('.accord').find('li.parent.active .accordion-expanded').css('display', 'none'); 

    }); 
}); 
</script> 

<style> 
    .accord-outer{width:100%; float:left;} 
    .accord{width:25%; float:left; margin:0 0 20px;} 
    .visible{display:block;} 
    .hidden{display:none;} 
    .loadmore{display:inline-block;} 
    .loadless{display:none;} 
    .loadmore.active{display:none;} 
    .loadless.active{display:inline-block;} 
    .accord { background: #46CFB0; width: 25%;} 

    /* First Level */ 

    .accord ul {margin: 0; padding: 0; list-style: none; border-bottom: 1px solid #1ABC9C; } 
    .accord ul li { border-top: 1px solid #1ABC9C; } 
    .accord ul li a { color: #FFFFFF; display: block; font-size: 1.1em; line-height: normal; padding: 12px 20px; text-decoration: none; } 
    .accord ul li a:hover { background: #E95546; text-decoration: none; 

    /* Second Level */ 

    .accord ul ul { border-bottom: none } 
    .accord ul ul li { border-top: 1px solid #46CFB0; background: #34BC9D; } 
    .accord ul ul li a { color: #FFFFFF; display: block; font-size: 1em; line-height: normal; padding: 0.5em 1em 0.5em 2.5em; } 
    .accord ul ul li a:hover { background: #E95546; } 

    /* Third Level */ 

    .accord ul ul ul { border-top: 1px solid #46CFB0; } 
    .accord ul ul ul li { border: none; } 
    .accord ul ul ul li a { padding-left: 3.5em; padding-top: 0.25em; padding-bottom: 0.25em; } 

    /* Accordion Button */ 

    ul li.has-subnav .accordion-btn { color: #fff; background: rgba(255,255,255, 0.15); font-size: 16px; } 
</style> 
をスクリーンショットを参照してください。