Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

о "Категории в виде аккордеона в блоке"

Здравствуйте. В текущей версии реализации "Категории в виде аккордеона в блоке" из http://www.shopos.ru/forum/index.php?topic=6266.15 в нормальном состоянии скрыты все категории, остаются только главные. У меня 3 уровня вложения. Как сделать так, чтобы в нормально состоянии были открыты 2 уровня, а 3-й открывался по клику?


выстави в categories.php
$MaxLevel = 2



выстави в categories.php
$MaxLevel = 2


categories.php  там не стандартный. из http://www.shopos.ru/forum/index.php?topic=6266.0 он изменен.

и $MaxLevel = 10. Так что при вставке  $MaxLevel = 2 просто перестает открываться 3-й уровень. Есть еще варианты?


Переписать js скрипт или адаптировать иной код для реализации аккордеона, коих в сети много.
Я не помню как работает который выкладывал. Возможно там просто чего-то по мелочи дописать нужно.



Переписать js скрипт или адаптировать иной код для реализации аккордеона, коих в сети много.
Я не помню как работает который выкладывал. Возможно там просто чего-то по мелочи дописать нужно.


NeBox, я совсем не владею js. Пожалуйста помогите реализовать это, а то совсем не подходит нынешний вариант. Может тут по мелочи надо поменять:

<?php
$box = new osTemplate;
$box_content = '';
$id = '';
$box->assign('tpl_path', _HTTP_THEMES_C);

global $MaxLevel, $HideEmpty, $ShowAktSub;

$MaxLevel = 10;
$HideEmpty = false;
$ShowAktSub = true;

function os_show_category($cid, $level, $foo, $cpath)
{
global $old_level, $categories_string, $MaxLevel, $HideEmpty, $ShowAktSub;

$Empty = true;
$pInCat = os_count_products_in_category($cid);
if ($pInCat > 0)
$Empty = false;

$Show = false;
if ($HideEmpty)
{
if (!$Empty)
$Show = true;
}
else
$Show = true;

$ShowSub = false;
if ($MaxLevel)
{
if ($level < $MaxLevel)
$ShowSub = true;
}
else
$ShowSub = true;

if($Show)
{
if ($cid != 0)
{
$category_path = explode('_',$GLOBALS['cPath']);
$in_path = in_array($cid, $category_path);
$this_category = array_pop($category_path);

for ($a = 0; $a < $level; $a++)                          ;

$ProductsCount = false;

if (SHOW_COUNTS == 'true')
$ProductsCount = ' <em>(' . $pInCat . ')</em>';

$Aktiv = false;
if ($this_category == $cid)
$Aktiv = ' Current active ';
elseif ($in_path)
$Aktiv = ' CurrentParent';

$SubMenue = false;

if (os_has_category_subcategories($cid))
$SubMenue = " SubMenue";

$MainStyle = 'CatLevel'.$level;

$Tabulator = str_repeat("\t",$level-1);

if($old_level)
{
if ($old_level < $level)
{
$Pre = "\n<ul>";
$Pre = str_replace("\n","\n".$Tabulator, $Pre)."\n";
}
else
{
$Pre = "</li>\n";
if ($old_level > $level)
{
for ($counter = 0; $counter < $old_level - $level; $counter++)
{
$Pre .= str_repeat("\t", $old_level - $counter -1)."</ul>\n".str_repeat("\t", $old_level - $counter- 2)."</li>\n";
}
}
}
}

$categories_string .= @$Pre.$Tabulator.
'<li class="'.$MainStyle.$SubMenue.$Aktiv.'">'.
'<a href="' . os_href_link(FILENAME_DEFAULT, os_category_link($cid, $foo['name']) ) . '">'.
$foo['name'].$ProductsCount.
'</a>';
}

$old_level = $level;

foreach ($foo as $key => $value)
{
if ($foo['parent'] == $cid)
{
if (@$ShowAktSub && @$Aktiv)
$ShowSub = true;

if ($ShowSub)
os_show_category($key, $level+1, $foo, ($level != 0 ? $cpath . $cid . '_' : ''));
}
}
}
}

$categories_string = '';

if (GROUP_CHECK == 'true')
$group_check = "AND c.group_permission_".$_SESSION['customers_status']['customers_status_id']." = 1 ";
else
$group_check = '';

$categories_query = osDBquery("
SELECT
c.categories_id, cd.categories_name, c.parent_id
FROM
".TABLE_CATEGORIES." c, ".TABLE_CATEGORIES_DESCRIPTION . " cd
WHERE
c.categories_status = '1' ".$group_check." AND c.categories_id = cd.categories_id AND cd.language_id='".(int)$_SESSION['languages_id']."'
ORDER BY
sort_order, cd.categories_name
");

if (os_db_num_rows($categories_query, true))
{
while ($categories = os_db_fetch_array($categories_query,true)) 
{
$foo] = array
(
'name' => $categories['categories_name'],
'parent' => $categories['parent_id']
);
}

os_show_category(0, 0, $foo, '');

$CatNaviStart = "\n<ul id=\"CatNavi\">\n";

for ($counter = 1; $counter < $old_level+1; $counter++)
{
@$CatNaviEnd .= "</li>\n".str_repeat("\t", $old_level - $counter)."</ul>\n";
if ($old_level - $counter > 0)
$CatNaviEnd .= str_repeat("\t", ($old_level - $counter)-1);
}
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////

$box->assign('BOX_CONTENT', $CatNaviStart.$categories_string.$CatNaviEnd);
$box->assign('language', $_SESSION['language']);

if (USE_CACHE=='false')
{
$box->caching = 0;
$box_categories= $box->fetch(CURRENT_TEMPLATE.'/boxes/box_categories.html');
}
else
{
$box->caching = 1;
$box->cache_lifetime=CACHE_LIFETIME;
$box->cache_modified_check=CACHE_CHECK;
$cache_id = $_SESSION['language'].$_SESSION['customers_status']['customers_status_id'].$current_category_id;
$box_categories= $box->fetch(CURRENT_TEMPLATE.'/boxes/box_categories.html',$cache_id);
}

$osTemplate->assign('box_CATEGORIES',$box_categories);
?>


Источник



Copyright ShopOS