Этот модуль должен действовать следующим образом: там есть кнопка, при нажатии на которую меняется отображение подменю: или по подкатегориям, или по производителям.
Кнопка работает, но при нажатии на какой либо пункт (или подпункт) меню, все сворачивается и остается одна кнопка.
Как от этого избавиться? Помогите, хэлп!С php работаю совсем недавно, не обессудьте.
<?php
if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
global $jscook_type, $jscookMenu_style, $jscookTree_style;
if( file_exists(dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' )) {
require_once( dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' );
$mosConfig_absolute_path = realpath( dirname(__FILE__).'/../..' );
} else {
require_once( dirname(__FILE__).'/../components/com_virtuemart/virtuemart_parser.php' );
}
?>
<form method ='POST'>
<input type="submit" name="Submit" class="button" value="Бренды">
</form>
<?
if (!function_exists(getXhtmlList)){
function getXhtmlList($category_id=0, $rankmin, $rankmax, $params, $only_published=true, $keyword = "", $k=1) {
$db = &JFactory::getDBO();
$class_sfx = $params->get( 'class_sfx', "" );
$Itemidmod = JRequest::getVar('Itemid', '');
if($_POST['Submit']) {
$k=getS1();
if ($k==0) {
func1($params);
}
if ($k==1) {
func2($category_id=0, $rankmin, $rankmax, $params, $only_published=true, $keyword = "");
}
if ($k==1) {
$k=0;
} else {
$k=1;
}
$db1 = &JFactory::getDBO();
$query1="UPDATE jos_masha SET schet=".$k." WHERE id=2";
$result = mysql_query($query1) or die("Query failed");
}
}
function getS1() {
$db = &JFactory::getDBO();
$query="SELECT schet FROM #__masha WHERE id=2";
$db->setQuery($query);
return $db->loadResult();
}
function func1($params) {
global $sess ;
$class_sfx = $params->get( 'class_sfx', "" );
$Itemidmod = JRequest::getVar('Itemid', '');
if (!empty($Itemidmod)) {
$Itemidmod='&Itemid='.$Itemidmod;
}
$firstPass=true;
$parent= getMainDady();
$class_sfx = $params->get( 'class_sfx', "" );
$Itemidmod = JRequest::getVar('Itemid', '');
$html1 ='<ul'.($firstPass?' class="menu'.$class_sfx.'"':'').'>';
for ($i=0; $i<count($parent); $i++) {
$link = JFilterOutput::ampReplace(JURI::base()."index.php?option=com_virtuemart&page=shop.browse&category_id=".$parent[$i]['id'].$Itemidmod);
$category_id = vmGet( $_REQUEST, 'category_id');
if ($parent[$i]['id']==$category_id){
$parent[$i]['active']=2;
} else {
$parent[$i]['active']=0;
}
if ($parent[$i]['active']==2)
{
$class = ' class="active item'.$i.'" id="active_menu"';
} elseif ($parent[$i]['active']==1) {
$class = ' class="active item'.$i.'"';
} else {
$class = ' class="item'.$i.'"';
}
$html1.= '<li'.$class.'><a href="'.$link.'" title="'.$parent[$i]['name'].'" ><span> '.$parent[$i]['name'].'</span></a>' ;
$class_sfx = $params->get( 'class_sfx', "" );
$html1.='<ul class="menu'.$class_sfx.'">';
if ($parent[$i]['active']>0) {
$rows1 = getKidos($parent[$i]['id']);
for ($n=0; $n<count($rows1); $n++) {
$Itemidmod = JRequest::getVar('Itemid', '');
$link = JFilterOutput::ampReplace(JURI::base()."index.php?option=com_virtuemart&page=shop.browse&manufacturer_id=".$rows1[$n]['id'].$Itemidmod);
$manufacturer_id = vmGet( $_REQUEST, 'manufacturer_id');
if ($rows1[$n]['id']==$manufacturer_id){
$rows1[$n]['active']=1;
} else {$rows1[$n]['active']=0;}
if ($rows1[$n]['active']==1){
$class = ' class="active item'.$n.'"';
} else {
$class = ' class="item'.$n.'"';
}
$html1.='<li'.$class.'><a href="'.$link.'" title="'.$rows1[$n]['name'].'" ><span>'.$rows1[$n]['name'].'</a></span></li>';
}
}
$html1.='</ul></li>';
}
$html1.='</ul>';
echo $html1;
}
function func2($category_id, $rankmin, $rankmax, $params, $only_published=true, $keyword = "") {
$category_id = vmGet( $_REQUEST, 'category_id');
if (empty($category_id)) {
$category_id="0";
}
$db = &JFactory::getDBO();
$parent_id=$category_id;
$menus_table=array();
if ($rows = getKidos1($parent_id)) {
$menus_table[]=$rows;
}
if ($category_id>0) {
do {
$child_id=$parent_id;
$parent_id=getDady($parent_id);
$rows = getKidos1($parent_id);
for ($n=0; $n<count($rows); $n++) {
if ($rows[$n]['id']==$child_id){
$rows[$n]['active']=1;
}
if ($rows[$n]['id']==$category_id){
$rows[$n]['active']=2;
}
}
$menus_table[] = $rows;
} while ($parent_id>0);
}
$menus_table = array_reverse($menus_table);
// output
echo getRowMenu ($menus_table,$rankmin, $rankmax, true, $params);
}
function getRowMenu ($rows,$rankmin, $rankmax, $firstPass=false, $params) {
global $sess ;
$class_sfx = $params->get( 'class_sfx', "" );
$Itemidmod = JRequest::getVar('Itemid', '');
if (!empty($Itemidmod)) {
$Itemidmod='&Itemid='.$Itemidmod;
}
if (isset($rows[$rankmin])) {
$html='<ul'.($firstPass?' class="menu'.$class_sfx.'"':'').'>';
$numLi=0;
foreach ($rows[$rankmin] as $menu_element) {
$texte = shopMakeHtmlSafe ($menu_element['name']);
$link = JFilterOutput::ampReplace(JURI::base()."index.php?option=com_virtuemart&page=shop.browse&category_id=".$menu_element['id'].$Itemidmod);
if ($menu_element['active']==1) {
$class = ' class="active item'.$numLi.'"';
} elseif ($menu_element['active']==2) {
$class = ' class="active item'.$numLi.'" id="active_menu"';
} else {
$class = ' class="item'.$numLi.'"';
}
$html.= '<li'.$class.'><a href="'.$link.'" title="'.$texte.'" ><span>'.$texte.'</span></a>';
if ($menu_element['active']>0 && $rankmin<$rankmax && isset($rows[$rankmin+1])) {
$html.=getRowMenu ($rows,$rankmin+1, $rankmax,false, $params);
}
$html.= '</li>';
$numLi++;
}
$html.="</ul>";
return $html;
}
}
function getDady($catpid, $only_published=true, $keyword = "") {
$db = &JFactory::getDBO();
$query="SELECT category_parent_id FROM #__vm_category_xref WHERE category_child_id=".$catpid;
$db->setQuery($query);
return $db->loadResult();
}
function getKidos1 ($catpid, $only_published=true, $keyword = "") {
$db = &JFactory::getDBO();
$query = "SELECT category_id AS id, category_parent_id AS parent, category_name AS name, 0 AS active ".
"FROM #__vm_category_xref, #__vm_category ".
"WHERE category_parent_id = ".$catpid.
" AND #__vm_category.category_id=#__vm_category_xref.category_child_id ";
if( $only_published ) {
$query .= " AND #__vm_category.category_publish='Y' ";
}
if( !empty( $keyword )) {
$query .= "AND ( category_name LIKE '%$keyword%' ";
$query .= "OR category_description LIKE '%$keyword%' ";
$query .= ") ";
}
$query .= "ORDER BY #__vm_category.list_order ASC, #__vm_category.category_name ASC";
$db->setQuery($query);
$db->query();
if ($db->getNumRows()>0) {
return $db->loadAssocList();
} else {
return false;
}
}
function getMainDady() {
$db = &JFactory::getDBO();
$query="SELECT #__vm_category_xref.category_child_id AS id, #__vm_category.category_name AS name, 0 AS active ".
"FROM #__vm_category_xref, #__vm_category ".
"WHERE #__vm_category_xref.category_parent_id=0 AND #__vm_category_xref.category_child_id=#__vm_category.category_id";
$db->setQuery($query);
$db->query();
if ($db->getNumRows()>0) {
return $db->loadAssocList();
} else {
return false;
}
}
function getKidos($catpid) {
$db = &JFactory::getDBO();
$query = "SELECT DISTINCT #__vm_manufacturer.manufacturer_id AS id, #__vm_category_xref.category_parent_id AS parent, #__vm_manufacturer.mf_name AS name, 0 AS active ".
" FROM #__vm_category_xref, #__vm_manufacturer, #__vm_product_category_xref, #__vm_product_mf_xref ".
" WHERE #__vm_category_xref.category_parent_id =".$catpid.
" AND #__vm_product_category_xref.category_id=#__vm_category_xref.category_child_id ".
" AND #__vm_product_category_xref.product_id=#__vm_product_mf_xref.product_id ".
" AND #__vm_product_mf_xref.manufacturer_id=#__vm_manufacturer.manufacturer_id ";
$db->setQuery($query);
$db->query();
if ($db->getNumRows()>0) {
return $db->loadAssocList();
} else {
return false;
}
}
}
function getS() {
$db = &JFactory::getDBO();
$query="SELECT schet FROM #__masha WHERE id=2";
$db->setQuery($query);
return $db->loadResult();
}
$category_id = vmGet( $_REQUEST, 'category_id');
$manufacturer_id = vmGet( $_REQUEST, 'manufacturer_id');
global $VM_LANG, $sess;
$rankmin = $params->get( 'link_list_min_rank','0');
$rankmax = $params->get( 'link_list_max_rank', '10' );
$k=getS();
echo '
<div class="vmlinklist'.$params->get('moduleclass_sfx','').'">'.
getXhtmlList($category_id, $rankmin, $rankmax, $params,$k).
'
</div>';
?>