Крупнейшая биржа рекламы в Телеграм
0 Пользователей и 1 Гость просматривают эту тему.
  • 2 Ответов
  • 2213 Просмотров
*

onopa_knopa

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Здравствуйте!
Этот модуль должен действовать следующим образом: там есть кнопка, при нажатии на которую меняется отображение подменю: или по подкатегориям, или по производителям.

Например,

Молочные продукты
- Молоко
- Кефир
- Йогурты

Или

Молочные продукты
- Веселый молочник
- Домик в деревне


Кнопка работает, но при нажатии на какой либо пункт (или подпункт) меню, все сворачивается и остается одна кнопка.

Как от этого избавиться? Помогите, хэлп!С 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>';
?>
*

onopa_knopa

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Вопрос снят
*

Romaha

  • Захожу иногда
  • 56
  • 1 / 0
Еще вопрос по этому модулю:
Он открывает подкатегории только при активной категории. Можно ли сделать так, чтобы подкатегории были открыты всегда (и в неактивных категориях)? И желательно чтоб только те, в которых есть наличие товара.
т.е. сейчас так:
Спойлер
[свернуть]
а нужно так:
Спойлер
[свернуть]
И неважно, что активно, что неактивно...
код моего mod_virtuemart_product_categories.php
Код
<?php
if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
/**
* mambo-phphop Product Categories Module
* NOTE: THIS MODULE REQUIRES AN INSTALLED VirtueMart Component!
*
* @version $Id: mod_virtuemart_product_categories.php
* @package VirtueMart
* @subpackage modules
*
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
*
* VirtueMart is Free Software.
* VirtueMart comes with absolute no warranty.
*
* www.virtuemart.net
*/
global $jscook_type, $jscookMenu_style, $jscookTree_style;

// Load the VirtueMart main parse code
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' );
}
if (!function_exists(getXhtmlList)){
  function getXhtmlList($category_id=0, $rankmin, $rankmax, $params, $only_published=true, $keyword = "" ) {
    if (empty($category_id)) {
      $category_id="0";
    }
    $db = &JFactory::getDBO();  
    $parent_id=$category_id;
    $menus_table=array();
    if ($rows = getKidos($parent_id)) {
      $menus_table[]=$rows;
    }
    if ($category_id>0) {
      do {
        $child_id=$parent_id;
        $parent_id=getDady($parent_id);
        $rows = getKidos($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
    return 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="parent item'.$numLi.'"';
          } elseif ($menu_element['active']==2) {
            $class = ' class="parent item'.$numLi.'"';
          } else {
            $class = ' class="parent 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 getKidos ($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;
    }  
  }
}
$category_id = vmGet( $_REQUEST, 'category_id');
global $VM_LANG, $sess;
$rankmin = $params->get( 'link_list_min_rank','0');
$rankmax = $params->get( 'link_list_max_rank', '10' );

echo '
<div class="moduletable'.$params->get('moduleclass_sfx','').'">'.
getXhtmlList($category_id, $rankmin, $rankmax, $params).
'
</div>';
?>

Подскажите пожалуйста, как быть.

« Последнее редактирование: 18.06.2012, 16:53:05 от Romaha »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Перенесено: Модификация VirtueMart - что бы не слетали внесенные изменения

Автор fsv

Ответов: 0
Просмотров: 375
Последний ответ 02.10.2017, 22:02:21
от fsv
Модификация VirtueMart от Redsoft

Автор alexzotov

Ответов: 4
Просмотров: 1138
Последний ответ 01.08.2010, 20:32:36
от alexzotov
Модификация mod_product_categories.php

Автор secretlive

Ответов: 1
Просмотров: 5209
Последний ответ 29.11.2008, 03:40:41
от sirtayler