javascript - Javascript 如何在下拉菜单中实现条件/嵌套过滤器
问题描述
我有一个类别 dropdown1 (带有 id: #blogcat
),它过滤 wordpress 的博客文章,这是默认功能。
我有另一个自定义类型下拉列表(带有 id: #blogarticletype
)。
要求是:
考虑博客:
Blog 4
属于类别Category 1
和类型abc
Blog 5
属于类别Category 1
和类型xyz
这仅适用于 dd 类别
如果我从第一个下拉列表(即类别下拉列表)中选择类别 1,它会将我过滤掉 Blog4 和 Blog5 - http://example.com/index.php/blog/category1
这仅适用于文章类型 dd: http ://example.com/index.php/blog/?article_type=xyz
这里有问题。 http://example.com/index.php/blog/category1/?article_type=xyz
如果我再次xyz
从第二个下拉菜单中选择(即输入下拉菜单),它应该只给我 Blog5 -
如何在Javascript中的下拉菜单中实现条件过滤器
两个过滤器分别工作,即)
如果我从第一个 dd 中选择值,它会给出正确的过滤器,并且在第二个 dd 中相同
问题是当我尝试做一个孩子或二级过滤器时
下面是代码
第一个下拉菜单
jQuery('#blogcat').on('change', function() {
var baseurl ='<?php echo Mage::getBlockSingleton('wordpress/homepage')->getBlogHomepageUrl(); ?>'
var baseurl_events ='<?php echo Mage::getBaseUrl(); ?>events'
var category_slug = jQuery(this).val();
if(category_slug == 'events'){
var categories_redirect = baseurl_events;
jQuery( location ).attr("href", baseurl_events);
}else{
var categories_redirect = baseurl + category_slug;
jQuery( location ).attr("href", categories_redirect);
}
});
第二个下拉
jQuery('#blogarticletype').on('change', function() {
var baseurl ='<?php echo Mage::getBlockSingleton('wordpress/homepage')->getBlogHomepageUrl(); ?>'
var baseurl_events ='<?php echo Mage::getBaseUrl(); ?>events'
var baseurl_glossary ='<?php echo Mage::getBaseUrl(); ?>glossary'
var baseurl_catalogs ='<?php echo Mage::getBaseUrl(); ?>catalogs'
var category_slug = jQuery('#blogcat').val();
var article_slug = jQuery(this).val();
if(article_slug == 'events'){
var categories_redirect = baseurl_events;
jQuery( location ).attr("href", baseurl_events);
}
else if(article_slug == 'glossary'){
var categories_redirect = baseurl_glossary;
jQuery( location ).attr("href", baseurl_glossary);
}
else if(article_slug == 'catalogs'){
var categories_redirect = baseurl_catalogs;
jQuery( location ).attr("href", baseurl_catalogs);
}
else if(article_slug == null || article_slug == ''){
var categories_redirect = baseurl;
jQuery( location ).attr("href", baseurl);
}
else{
var redirect_url = baseurl+category_slug+'?article_type='+article_slug;
alert(redirect_url);
jQuery( location ).attr("href", redirect_url);
}
});
关于我的自定义下拉过滤器如何工作的代码 - magento 代码更新如下。
Fishpig\Wordpress\Block\Post\List.php
protected function _getPostCollection()
{
//RAMD-641: Custom query to get the Article Filter types
$artical_type = Mage::app()->getRequest()->getParam('article_type');
if (is_null($this->_postCollection) && $this->getWrapperBlock()) {
$this->_postCollection = $this->getWrapperBlock()->getPostCollection();
if ($this->_postCollection) {
if ($this->getPostType()) {
$this->_postCollection->addPostTypeFilter($this->getPostType());
if(!empty($artical_type)) {
$posttypevalue = Mage::helper('wordpress')->getPostMetaData();
if(!empty($posttypevalue)) {
$this->_postCollection = $this->_postCollection->addFieldToFilter('ID',array('in' => $posttypevalue));
}
}
}
if ($this->getPagerBlock()) {
$this->getPagerBlock()->setCollection($this->_postCollection);
}
}
}
return $this->_postCollection;
}
助手/Data.php
public function getPostMetaData()
{
$artical_type = Mage::app()->getRequest()->getParam('article_type');
try{
if(!empty($artical_type)) {
$resource = Mage::getSingleton('core/resource');
$readConnection = $resource->getConnection('new_db');
$currentUrl = Mage::helper('core/url')->getCurrentUrl();
$url = Mage::getSingleton('core/url')->parseUrl($currentUrl);
$query = 'SELECT b.post_id FROM wp_posts AS a, wp_postmeta AS b WHERE a.ID=b.post_id AND b.meta_key="type" AND a.post_status="publish"';
$query .= " AND b.meta_value LIKE '%".$artical_type."%' ORDER BY a.post_date DESC";
//var_dump($query);
$post_ids = $readConnection->fetchAll($query);
if(!empty($post_ids)) {
$_post_id_array = array();
foreach($post_ids as $post) {
$_post_id_array[] = $post['post_id'];
}
$_post_id_array = array_unique($_post_id_array);
return $_post_id_array;
}
}
return false;
} catch (Exception $e) {
return false;
}
}
解决方案
推荐阅读
- android - 为 Android 中的单个测试添加拆卸块
- pandas - 改变了 Pandas '.bar' 图中的刻度频率,但弄乱了实际的条形图
- javascript - 强制 JQuery $(document).ready 等待 promise 解决
- opencv - 数一数视频中的地砖,并确保最后有总数?
- android - Android Studio - 更新后渲染设计无法正常工作
- angular - 当有一个空字段时,Ag 网格排序不会发生
- r - Dplyr,将连续的数据帧连接到预先存在的列,将它们的值相加
- java - 延迟回收者查看每个项目的点击功能
- c++ - 如何从文件中删除记录
- jquery - 如何在 Electron 中使用 jQuery?