如何在Magento的高级搜索中包括链式选择的类别

尚提

我想在“高级搜索”中使用链接选择包括“类别”及其所有子类别。链式选择仅是一个建议。

如果有任何其他方法可以用另一种下拉方式将类别和子类别一起加载,则也欢迎使用这些方法。

尚提

我已经在magento中使用Ajax实现了上述目标。app / design / frontend / base / default / template / catalogsearch / advanced / form.phtml

<li>
       <label for="section_search_field">Select Vehicle</label><br>
       <select name="category" id="vehicle">
       <option selected="selected">--Select Vehicle--</option>
           <?php
      $sql=mysql_query("select name,entity_id from catalog_category_flat_store_1 where parent_id=8");
      while($row=mysql_fetch_array($sql))
      {
      $id=$row['entity_id'];
      $data=$row['name'];
      echo '<option value="'.$id.'">'.$data.'</option>';
      } ?>
       </select>
    </li>
    <li>
        <label for="category_search_field">Select Manufacturere</label><br>

        <select name="category" id="manufacturere" class="manufacturere" >
            <option value="">--Choose Manufacturere--</option>

                       </select>
    </li>

    <li>
    <label for="subcategory_search_field">Select Type</label><br>
    <select name="sub" id="vehicle_type" class="vehicle_type">
      <option value="">--Choose type--</option>
    </select>
    </li>
    <li>
        <label for="category_search_field">Select Model</label><br> 
        <select name="category" id="vehicle_model" class="vehicle_model">
            <option value="">--Choose Model--</option>
        </select></li>
        <?php foreach ($this->getSearchableAttributes() as $_attribute): ?>
        <?php $_code = $_attribute->getAttributeCode() ?>
          <li>
            <label for="<?php echo $_code ?>"><?php echo $this->getAttributeLabel($_attribute) ?></label>
            <?php switch($this->getAttributeInputType($_attribute)):
                case 'number': ?>
                <div class="input-range">
                    <input type="text" name="<?php echo $_code ?>[from]" value="<?php echo $this->escapeHtml($this->getAttributeValue($_attribute, 'from')) ?>" id="<?php echo $_code ?>" title="<?php echo $this->escapeHtml($this->getAttributeLabel($_attribute)) ?>" class="input-text validate-number" maxlength="<?php echo $maxQueryLength;?>" />
                    <span class="separator">-</span>
                    <input type="text" name="<?php echo $_code ?>[to]" value="<?php echo $this->escapeHtml($this->getAttributeValue($_attribute, 'to')) ?>" id="<?php echo $_code ?>_to" title="<?php echo $this->escapeHtml($this->getAttributeLabel($_attribute)) ?>" class="input-text validate-number" maxlength="<?php echo $maxQueryLength;?>" />
                </div>
                <?php break;
                case 'price': ?>
                <div class="input-range">
                    <input name="<?php echo $_code ?>[from]" value="<?php echo $this->escapeHtml($this->getAttributeValue($_attribute, 'from')) ?>" id="<?php echo $_code ?>" title="<?php echo $this->escapeHtml($this->getAttributeLabel($_attribute)) ?>"  class="input-text validate-number" type="text" maxlength="<?php echo $maxQueryLength;?>" />
                    <span class="separator">-</span>
                    <input name="<?php echo $_code ?>[to]" value="<?php echo $this->escapeHtml($this->getAttributeValue($_attribute, 'to')) ?>" id="<?php echo $_code ?>_to" title="<?php echo $this->escapeHtml($this->getAttributeLabel($_attribute)) ?>"  class="input-text validate-number" type="text" maxlength="<?php echo $maxQueryLength;?>" />
                    <small>(<?php echo $this->getCurrency($_attribute); ?>)</small>
                </div>
                <?php break;
                case 'select': ?>
                    <div class="input-box">
                       <?php echo $this->getAttributeSelectElement($_attribute) ?>
                    </div>
                <?php break;
                case 'yesno': ?>
                    <?php echo $this->getAttributeYesNoElement($_attribute) ?>
                <?php break;
                case 'date': ?>
                <div class="input-range">
                    <?php echo $this->getDateInput($_attribute, 'from') ?>
                    <span class="separator">-</span>
                    <?php echo $this->getDateInput($_attribute, 'to') ?>
                </div>
                <?php break;
                default: ?>
                <div class="input-box">
                    <input type="text" name="<?php echo $_code ?>" id="<?php echo $_code ?>" value="<?php echo $this->escapeHtml($this->getAttributeValue($_attribute)) ?>" title="<?php echo $this->escapeHtml($this->getAttributeLabel($_attribute)) ?>"  class="input-text <?php echo $this->getAttributeValidationClass($_attribute) ?>" maxlength="<?php echo $maxQueryLength;?>" />
                </div>
            <?php endswitch; ?>

        </li>

        <?php endforeach; ?>

    </ul>

在脚本标记中的同一文件中,我使用了ajax调用,如下所示:

<script type="text/javascript">
    var $j = jQuery.noConflict();
    $j(document).ready(function($) {      

    $j('#vehicle').change(function()
    {

         var optionCheckVechile = $j('select#vehicle option:selected').text(); 
         var optionCheckManufacturer = $j('select#manufacturere option:selected').text(); 
         var optionCheckType = $j('select#vehicle_type option:selected').text(); 
         var optionCheckModel = $j('select#vehicle_model option:selected').text(); 


          if(optionCheckType != '--Select type--'){
                  $('select#vehicle_type option:eq(0)').attr("selected", true);
                  }
                   if(optionCheckModel != '--Select Model--'){
                  $('select#vehicle_model option:eq(0)').attr("selected", true);
                  }


          if((optionCheckVechile == 'Car')|| (optionCheckVechile == 'Bus')){
          $j("#vehicle_type").prop('disabled',false);
          $j('#vehicle_type').css('background-color','#fff');
          $j("#vehicle_model").prop('disabled',false);
          $j('#vehicle_model').css('background-color','#fff');
          }
          else if((optionCheckVechile == 'Bike') || (optionCheckVechile == 'Truck')|| (optionCheckVechile == 'Auto')){
          $j("#vehicle_model").prop('disabled',true);
          $j('#vehicle_model').css('background-color','#ccc');
          }
          else{
          $j("#vehicle_type").prop('disabled',true);
          $j('#vehicle_type').css('background-color','#ccc');
          $j("#vehicle_model").prop('disabled',true);
          $j('#vehicle_model').css('background-color','#ccc');
          }


    var id=$j(this).val();
          var dataString = 'id='+ id;
          $j.ajax
          ({
          type: "POST",
          url: "<?php echo $this->getUrl('catalogsearch/ajax/vehicle') ?>",
          data: dataString,
          cache: false,
          success: function(html)
          { 

          $j("#manufacturere").html(html);
          } 
          });
          $j("#manufacturer").load();
          $j("#vehicle_model").load();
          $j("#vehicle_type").load();
    });
    $j('#manufacturere').change(function()
    {
    var optionCheckModel = $j('select#vehicle_model option:selected').text();
    if(optionCheckModel != '--Select Model--'){
                  $('select#vehicle_model option:eq(0)').attr("selected", true);
                  }
    var id=$j(this).val();
          var dataString = 'id='+ id;

          $j.ajax
          ({
          type: "POST",
          url: "<?php echo $this->getUrl('catalogsearch/ajax/manufacturer') ?>",
          data: dataString,
          cache: false,
          success: function(html)
          { 
          $j("#vehicle_type").html(html);
          } 
          });
    });
    $j('#vehicle_type').change(function()
    {
    var id=$j(this).val();
          var dataString = 'id='+ id;

          $j.ajax
          ({
          type: "POST",
          url: "<?php echo $this->getUrl('catalogsearch/ajax/type') ?>",
          data: dataString,
          cache: false,
          success: function(html)
          { 
          $j("#vehicle_model").html(html);
          } 
          });
    });
}); 

接下来在app / code / core / Mage / CatalogSearch / controllers / AjaxController.php中添加以下代码。

class Mage_CatalogSearch_AjaxController extends Mage_Core_Controller_Front_Action
{

 public function vehicleAction()
{  
   $id=$_POST['id'];
   $sql=mysql_query("select name,entity_id from catalog_category_flat_store_1 where parent_id='$id'");
   echo '<option value=0>--Select Manufacturere--</option>';
while($row=mysql_fetch_array($sql))
  {
  $id=$row['entity_id'];
  $data=$row['name']; 
  echo '<option value="'.$id.'">'.$data.'</option>';
  }   
}
 public function manufacturerAction()
{
 $id=$_POST['id'];
   $sql=mysql_query("select name,entity_id from catalog_category_flat_store_1 where parent_id='$id'");
   echo '<option value=0>--Select type--</option>';
while($row=mysql_fetch_array($sql))
  {
  $id=$row['entity_id'];
  $data=$row['name'];
  echo $id;
  echo '<option value="'.$id.'">'.$data.'</option>';    
  }   

}
 public function typeAction()
{
 $id=$_POST['id'];
   $sql=mysql_query("select name,entity_id from catalog_category_flat_store_1 where parent_id='$id'");
   echo '<option value=0>--Select Model--</option>';
while($row=mysql_fetch_array($sql))
  {
  $id=$row['entity_id'];
  $data=$row['name'];
  echo $id;
  echo '<option value="'.$id.'">'.$data.'</option>';
  }   

}

}

然后刷新页面并运行高级搜索。链式选择将适用于根据父ID加载的类别。

注意:这仅用于加载特定类别及其子类别。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在magento中显示类别和子类别

来自分类Dev

如何在magento中获取当前类别及其子类别?

来自分类Dev

Magento 2 高级搜索按类别排序

来自分类Dev

如何在XPath选择中包括属性

来自分类Dev

如何在高级Serach中搜索范围日期

来自分类Dev

如何在Magento的多店中为网站设置类别

来自分类Dev

Magento-如何在phtml中过滤类别

来自分类Dev

如何在magento中从右向左更改类别块?

来自分类Dev

如何在magento中编辑类别导航设计

来自分类Dev

如何在Facebook API / FQL中按类别搜索

来自分类Dev

如何在Wordpress中按子类别搜索帖子

来自分类Dev

如何在选择列表中显示类别,子类别,子子类别-php / mysql?

来自分类Dev

如何在magento的自定义脚本中获取产品的多个类别和子类别

来自分类Dev

如何在R中创建链式均值?

来自分类Dev

链式方法如何在Java中执行?

来自分类Dev

Magento:如何在magento菜单中两行显示类别名称?

来自分类Dev

如何通过在codeigniter中选择搜索类别来从db中搜索记录?

来自分类Dev

Magento日期格式的高级搜索

来自分类Dev

熊猫:如何在groupby中包括DataFrame中不存在的类别

来自分类Dev

Django如何在Forms.py中进行链式选择?

来自分类Dev

如何在高级搜索对话框中为只读字段指定值

来自分类Dev

您将如何在控制器中处理多字段高级搜索?

来自分类Dev

如何在高级搜索中强制字段具有合理的宽度

来自分类Dev

搜索该字词时未显示类别中的产品(Magento)

来自分类Dev

搜索该字词时未显示类别中的产品(Magento)

来自分类Dev

如何在magento网格中显示选择名称而不是值

来自分类Dev

如何在magento网格中显示选择名称而不是值

来自分类Dev

如何在magento图层导航中更改类别过滤器的位置

来自分类Dev

Magento:如何在内容的类别页面中调用静态块

Related 相关文章

  1. 1

    如何在magento中显示类别和子类别

  2. 2

    如何在magento中获取当前类别及其子类别?

  3. 3

    Magento 2 高级搜索按类别排序

  4. 4

    如何在XPath选择中包括属性

  5. 5

    如何在高级Serach中搜索范围日期

  6. 6

    如何在Magento的多店中为网站设置类别

  7. 7

    Magento-如何在phtml中过滤类别

  8. 8

    如何在magento中从右向左更改类别块?

  9. 9

    如何在magento中编辑类别导航设计

  10. 10

    如何在Facebook API / FQL中按类别搜索

  11. 11

    如何在Wordpress中按子类别搜索帖子

  12. 12

    如何在选择列表中显示类别,子类别,子子类别-php / mysql?

  13. 13

    如何在magento的自定义脚本中获取产品的多个类别和子类别

  14. 14

    如何在R中创建链式均值?

  15. 15

    链式方法如何在Java中执行?

  16. 16

    Magento:如何在magento菜单中两行显示类别名称?

  17. 17

    如何通过在codeigniter中选择搜索类别来从db中搜索记录?

  18. 18

    Magento日期格式的高级搜索

  19. 19

    熊猫:如何在groupby中包括DataFrame中不存在的类别

  20. 20

    Django如何在Forms.py中进行链式选择?

  21. 21

    如何在高级搜索对话框中为只读字段指定值

  22. 22

    您将如何在控制器中处理多字段高级搜索?

  23. 23

    如何在高级搜索中强制字段具有合理的宽度

  24. 24

    搜索该字词时未显示类别中的产品(Magento)

  25. 25

    搜索该字词时未显示类别中的产品(Magento)

  26. 26

    如何在magento网格中显示选择名称而不是值

  27. 27

    如何在magento网格中显示选择名称而不是值

  28. 28

    如何在magento图层导航中更改类别过滤器的位置

  29. 29

    Magento:如何在内容的类别页面中调用静态块

热门标签

归档