Goc*_*ili 17 javascript php mysql ajax joomla
您好我已经为joomla安装了jbusinessdirectory组件,并且我在tmpl/default.php文件中有名为mod_jbusinessdirectory的模块(这是商业列表的搜索模块)我有选择代码:(见下文)
<?php if($params->get('showCategories')){ ?>
<div class="select">
<div class="categoryic"></div>
<select name="categorySearch" class="select-styled" id="categories">
<option value="0">category</option>
<?php foreach($categories as $category){?>
<option value="<?php echo $category->id?>" <?php echo $session->get('categorySearch')==$category->id && $preserve?" selected ":"" ?> ><?php echo $category->name?></option>
<?php if(!empty($category->subcategories)){?>
<?php foreach($category->subcategories as $subCat){?>
<option value="<?php echo $subCat->id?>" <?php echo $session->get('categorySearch')==$subCat->id && $preserve?" selected ":"" ?> >-- <?php echo $subCat->name?></option>
<?php }?>
<?php }?>
<?php }?>
</select>
</div>
<?php }?>
Run Code Online (Sandbox Code Playgroud)
从这段代码我得到类别和子类别,如下所示:
子类别1子类别2子类别3
主要类别2
截图在这里:类别和子类别截图
在helper.php中,我有从数据库中获取类别和子类别的函数
static function getMainCategories(){
$db = JFactory::getDBO();
$query = ' SELECT * FROM #__jbusinessdirectory_categories where parent_id=1 and published=1 order by name';
$db->setQuery($query);
return $db->loadObjectList();
}
static function getSubCategories(){
$db = JFactory::getDBO();
$query = ' SELECT c.* FROM #__jbusinessdirectory_categories c
inner join #__jbusinessdirectory_categories cc on c.parent_id = cc.id where c.parent_id!=1 and cc.parent_id = 1 and c.published=1
order by c.name';
$db->setQuery($query,0,1000);
$result = $db->loadObjectList();
return $result;
}
Run Code Online (Sandbox Code Playgroud)
最后在modjbusinesdirectory.php文件中我有这样的PHP:
if($params->get('showCategories')){
$categories = modJBusinessDirectoryHelper::getMainCategories();
if($params->get('showSubCategories')){
$subCategories = modJBusinessDirectoryHelper::getSubCategories();
foreach($categories as $category){
foreach($subCategories as $subCat){
if($category->id == $subCat->parent_id){
if(!isset($category->subcategories)){
$category->subcategories = array();
}
$category->subcategories[] = $subCat;
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
类别和子类别表结构截图 在这里
我的问题是:如何制作两个选择查询而不是一个.在第一个查询中我得到主要类别,在第二个查询中我得到子类别(例如:如果我从第一个查询中选择主要类别书籍,在第二个查询中我选择子类别,它必须仅显示具有子类别的书籍儿童书籍).
看起来代码已经完成了您想要的操作。您想要 2 个查询,但有 2 个。但是,我认为这 2 个查询的结果合并为 1 个结果,而您希望将其分成 2 个结果。
您必须添加接受类别 ID 参数的新类别函数。
<?php
static function getCategoryById($id){
$id = intval( $id );
$db = JFactory::getDBO();
$query = '
SELECT *
FROM #__jbusinessdirectory_categories
WHERE
published=1
AND id= '.$id;
$db->setQuery($query);
return $db->loadObject();
}
static function getChildCategoryList($id){
$id = intval($id);
$db = JFactory::getDBO();
$query = '
SELECT c.*
FROM #__jbusinessdirectory_categories c
INNER JOIN #__jbusinessdirectory_categories cc
ON c.parent_id = cc.id
WHERE c.parent_id!=1
AND cc.id = '.$id.'
AND c.published=1
ORDER BY c.name';
$db->setQuery($query,0,1000);
$result = $db->loadObjectList();
return $result;
}
Run Code Online (Sandbox Code Playgroud)
我不熟悉检索参数的 Joomla 代码,但如果在有人选择主类别时发布它,您可以找到 ID。
<?php
if($params->get('showCategories')){
$categoryId = (int) $params->get('mainCategory');
$category = modJBusinessDirectoryHelper::getCategoriesById($categoryId);
$subCategories = modJBusinessDirectoryHelper::getChildCategoryList($categoryId);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1034 次 |
| 最近记录: |