EasyWeb.org.ua
  • Главная
    • shop-script
    • акции
    • php
    • javascript
    • joomla
    • wordpress
    • docs
    • internet
    • объявления
    • other
  • Вопрос ответ
  • Портфолио
  • Модули
  • Обратная связь
  • О блоге
    • Каталог сайтов
    • Карта сайта
Главная » shop-script » дерево категорий по-своему (shop-script)
Июл27 135

дерево категорий по-своему (shop-script)

Опубликовано в shop-script

Помагал кому-то на форуме и решил увековечить здесь.

Несколько вариантов вывода дерева категорий в вашем магазине или редактирование файла category_tree.html

1. Дерево категорий всегда раскрыто.

Удаляем все из файла category_tree.html и пишем там

{newtree}

Затем в папке /kernel/includes/smarty/plugins создаем файл function.newtree.php, в котором пишем:

<?php
  function smarty_function_newtree($params, &$smarty){
 $disp='';
  $disp.='<ul id="navmenu-v">';
  $sql='SELECT categoryID, slug, parent, '.LanguagesManager::sql_prepareField('name').' AS name from '.CATEGORIES_TABLE. ' where parent=1 order by sort_order,name';
  if($r=mysql_query($sql))
  while($res=mysql_fetch_assoc($r)){
  $disp.='<li class="parent';
  if($_REQUEST['categoryID'] == $res['categoryID']) $disp.='_current';
  if($res['slug']!='')
  $disp.='"><a href="/category/'.$res['slug'].'/">'.$res['name'].'</a>';
  else
  $disp.='"><a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a>';
  $disp.=subcat($res['categoryID']).'</li>';
  }
 $disp.='</ul>';
  return $disp;
  }
 
function subcat($parid){
  $disp='';
  $sql='SELECT categoryID, slug, parent, '.LanguagesManager::sql_prepareField('name').' AS name from '.CATEGORIES_TABLE. ' where parent='.$parid.' order by sort_order, name';
  if($r=mysql_query($sql)){
	  if(mysql_num_rows($r)>0){
		$disp.='<ul>';
	  while($res=mysql_fetch_assoc($r)){
	  $disp.='<li class="child';
	  if($_REQUEST['categoryID'] == $res['categoryID']) $disp.='_current';
	  if($res['slug']!='')
		$disp.='"><a href="/category/'.$res['slug'].'/">'.$res['name'].'</a>';
	  else
		$disp.='"><a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a>';
	  $disp.=subcat($res['categoryID']).'</li>';;
	  }
	  $disp.='</ul>';
	  }
  }
  return $disp;
  }
?>

2. Видны только подкатегории.

На главной странице видны родительские категории, внутри категории видны только подкатегории Для этого заменяем все содержимое файла category_tree.html следующим кодом:

{* category navigation tree *}
 
<ul>
{if $categoryID eq 0}
{section name=i loop=$categories_tree}  {if $categories_tree[i].categoryID != 1}
 
	<li class="{if $categories_tree[i].level&gt;1}child{else}parent{/if}{if $categoryID == $categories_tree[i].categoryID}_current{/if}">
{section name=j loop=$categories_tree max=$categories_tree[i].level-1}<span class="tab"> </span>{/section}
{if $categories_tree[i].slug}
{assign var=_category_url value="?categoryID=`$categories_tree[i].categoryID`&amp;category_slug=`$categories_tree[i].slug`"|set_query_html}
{else}
{assign var=_category_url value="?categoryID=`$categories_tree[i].categoryID`"|set_query_html}
{/if}
<span class="bullet"> </span><a href="{$_category_url}">{$categories_tree[i].name|escape:'html'}</a></li>
 
 
{/if}  {/section}
{else}
{section name=i loop=$categories_tree}  {if $categories_tree[i].categoryID != 1 &amp;&amp;  $categories_tree[i].parent eq $categoryID}
 
	<li class="{if $categories_tree[i].level&gt;1}child{else}parent{/if}{if $categoryID == $categories_tree[i].categoryID}_current{/if}">
{section name=j loop=$categories_tree max=$categories_tree[i].level-1}<span class="tab"> </span>{/section}
{if $categories_tree[i].slug}
{assign var=_category_url value="?categoryID=`$categories_tree[i].categoryID`&amp;category_slug=`$categories_tree[i].slug`"|set_query_html}
{else}
{assign var=_category_url value="?categoryID=`$categories_tree[i].categoryID`"|set_query_html}
{/if}
<span class="bullet"> </span><a href="{$_category_url}">{$categories_tree[i].name|escape:'html'}</a></li>
 
 
{/if}  {/section}
{/if}
</ul>

UPD: ответ на комментарий:
http://easyweb.org.ua/?p=252#comment-220

Замените

 $disp.='"><span class="bullet">&nbsp;</span><span class="tab">&nbsp;</span><a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a></li>';

на

if($res['slug']!='')

$disp.='"><span class="bullet">&nbsp;</span><span class="tab">&nbsp;</span><a href="/category/'.$res['slug'].'/">'.$res['name'].'</a></li>';

else

$disp.='"><span class="bullet">&nbsp;</span><span class="tab">&nbsp;</span><a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a></li>';

по идее должно работать.

Метки: shop-script, дерево категорий

« Предыдущая запись

Liqpay и ss premium

Следующая запись»

Руководство программиста Webasyst Shop-Script 2.0



Просмотров: 12 217

Похожие записи:

  • Вкладки на странице продукта
  • Обновление Shop-Script
  • Фильтр по ценам
  • Webasyst Shop-Script новгодняя распродажа
  • WebAsyst Shop-Script за 110 $

135 Коммент.

  1. Станислав | 28 июля 2009 at 17:50

    Спасибо! работает но не так как нужно, в результате получается два одинаковых списка всех категорий, причем раскрывает не по приоритету, а по алфавиту!

    Ответить
  2. Станислав | 28 июля 2009 at 18:01

    адрес сайта http://intopt.ru

    Мне необходимо чтобы по умолчанию была раскрыта тольо одна категория (электроинструменты), оставльные бы раскрывались только если я на них нажму, например на измерительные инструменты, чтобы автоматические электроинструменты сворачивались а измерительные инструменты раскрывались, причем чтобы все корневые катерогии столи по порядку по умолчанию!

    Ответить
  3. Артем | 28 июля 2009 at 18:25

    так это вы описываете стандартный вариант работы шоп-скрипт

    если хотите, чтобы раскрывалась любая категория без перезагрузки страницы, нужно использовать первый вариант и немного знаний JavaScript

    Ответить
  4. Станислав | 28 июля 2009 at 18:40

    Не могли бы Вы если не сложно написать код для того, чтобы на главной странице у меня раскрывался список только электроинструменты по умолчанию..буду очень признателен!=)

    Ответить
  5. Артем | 28 июля 2009 at 19:34

    обещать не буду. если будет время, посмотрю

    обратится к фрилансерам не пробовали?

    Ответить
  6. Станислав | 28 июля 2009 at 20:04

    пробовал заявка 3 дня висела потом я ее снял!

    Ответить
  7. Станислав | 29 июля 2009 at 10:45

    Никто не хочет помочь…эх

    Ответить
  8. Артем | 29 июля 2009 at 10:48

    могу продать за 15 wmz

    Ответить
    • Михаил | 19 июля 2011 at 1:23

      А такой тип меню (пример tools-msk.ru) у тебя сколько будет стоить ?

      Ответить
      • Артем | 20 июля 2011 at 8:05

        30 $

        Ответить
  9. Станислав | 29 июля 2009 at 10:52

    угу! хозяину магазина все равно на этот модуль, а мне нет… я хотел полазить по форумам потратить время….. а где его купить я и так знаю! спасибо за помощь!

    Ответить
  10. Денис | 23 августа 2009 at 14:45

    Все работает, автору спасибо! Сайт Игрокоп.ру

    Ответить
  11. Stan | 27 августа 2009 at 14:59

    Требуется доработка магазина, интересует цена!

    Ответить
  12. Витал | 29 августа 2009 at 21:48

    Подскажите, где искать category_tree.html

    Ответить
  13. Артем | 29 августа 2009 at 22:33

    /published/SC/html/scripts/templates/frontend/

    Ответить
  14. Hunter | 9 сентября 2009 at 8:49

    подскажите, а как сделать чтобы выводилась на ВСЕХ страницах без раскрытия подкатегорий ТОЛЬКО категории 1-го уровня?
    если можно, код подкиньте плиз.
    И еще вопрос: Вам удалось сделать динамическое меню категорий и подкатегорий? т.е. чтобы при подведении мышки к категориям 1-го уровня выезжали подкатегории и подподкатегории ну и т.д., или Вы видели где-нибудь такое решение?
    Спасибо

    Ответить
  15. Артем | 9 сентября 2009 at 9:19

    такого решения не видел, но его можно сделать.
    если нужно — свяжитесь со мной.
    по поводу первой просьбы — тоже самое

    Ответить
  16. vels | 13 сентября 2009 at 20:43

    а как подружить первый вариант (всегда раскрыто) меню с ЧПУ7 а то как то странно получается… в меню динамичные url а во всех остальных местах ЧПУ?

    Ответить
  17. Артем | 13 сентября 2009 at 20:50

    смотрите обновление в записи

    Ответить
  18. vels | 13 сентября 2009 at 21:01

    у меня эта конструкция
    $disp.=’»>‘.$res['name'].’
    ну никак не хочет воспринимать ЧПУ ((

    Ответить
  19. vels | 13 сентября 2009 at 21:04

    не сразу увидел обновление… СПАСИБО

    Ответить
  20. Артем | 13 сентября 2009 at 21:07

    :)

    Ответить
  21. cainrus | 23 сентября 2009 at 3:34

    в первом скрипте ещё
    ?categoryID=’.$res['categoryID']
    надо заменить на
    /category/’.$res['slug']
    чтобы корневые директории каталога имели ЧПУ :-)

    Ответить
  22. Артем | 23 сентября 2009 at 9:26

    ну да.но неплохо бы и там сделать проверку
    так как при импорте товара поле slug может быть пустым

    если оно не пустое, то /category/’.$res['slug'], если пустое/, то ?categoryID=’.$res['categoryID']

    этот модуль позволяет сделать меню категорий какое угодно.
    в том числе с использованием javascript

    Ответить
  23. Михаил | 8 октября 2009 at 0:31

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

    Ответить
  24. Олег | 29 октября 2009 at 19:50

    Подскажите как вывести дерево не по алфавиту, а по сортировке в админке, по приоритету в общем.

    Ответить
  25. Артем | 29 октября 2009 at 22:40

    order by name
    замените на
    order by sort_order

    Ответить
  26. Витал | 2 декабря 2009 at 21:17

    Артем, где имненно и что нужно сделать (первый вариан) чтобы корневые директории каталога были с ЧПУ

    Ответить
  27. Артем | 3 декабря 2009 at 19:04

    я обновил запись.
    скопируйте первый код в свой файл и должно работать!

    Ответить
  28. Витал | 3 декабря 2009 at 20:10

    Теперь все отлично работает. Спасибо!!!

    Ответить
  29. Николай | 23 декабря 2009 at 5:41

    Спасибо, но при включенных ЧПУ у меня не определяется переменная $_REQUEST['categoryID'] и соответственно не добавляется к классу ‘_current’. При выключенных все работает нормально.

    Ответить
  30. Николай | 23 декабря 2009 at 6:10

    И еще вопрос: мне для модификации списка категорий надо знать уровень вложенности. Как его можно узнать, используя ваш пример?

    Ответить
  31. Артем | 23 декабря 2009 at 11:08

    При включенных ЧПУ следует использовать $_GET['catgoryID']

    Нужно добавить еще одну функцию, которая будет возвращать уровень. Она должна быть рекурсивной.
    Берем категорию, если поле parent у нее не 1, то переменную $level (например) увеличиваем на 1 и снова запускам эту функцию. Если parent равно 1, то выходим и в переменной level у нас уровень пункта меню

    Ответить
  32. Николай | 25 декабря 2009 at 21:02

    Что-то не получается у меня правильно добавить эту функцию, не могли бы вы написать, как это должно выглядеть.

    Еще, если у какой-то категории нет подкатегорий, то в коде выводятся лишние и пустые «». Может добавить проверку есть ли подкатегории, а потом уже начинать их выводить?

    И возвращаясь к функции определения вложенности. Как можно сделать, чтобы меню третей вложенности разворачивалось только при переходе на пункт второй вложенности. Т.е. что-то среднее между стандартным category_tree и вашим вариантом.

    Ответить
  33. Артем | 26 декабря 2009 at 10:23

    можно и проверку добавить, если элемент лишний появляется

    по поводу функции — сейчас точно нет. может попозже напишу. но я так рассказал все, что необходимо.:)

    Ответить
  34. Сергей | 14 января 2010 at 0:06

    Не могли бы подсказать как в WebAsyst-е убрать корзину, но при этом что бы она активировалася после регистрации аккаунта…. Заранее благодарен..

    Ответить
  35. Артем | 14 января 2010 at 0:19

    в файле shoping_cart.html и shoping_cart_info.html
    в начале файла добавьте
    {if $smarty.session.log}
    в конец файла
    {/if}

    так корзина и блок корзины будут показываться только для авторизованных

    Ответить
  36. Anton | 26 января 2010 at 20:40

    Огромное спасибо!

    Ответить
  37. Николай | 11 февраля 2010 at 16:00

    Артем, не найдешь время для написания функции для подсветки текущего уровня меню на сайте с ЧПУ? С меня пиво (в виде WMR) ;) , а?

    Ответить
  38. Артем | 11 февраля 2010 at 17:30

    не совсем понял, что означает подсветка текущего уровня)

    Ответить
  39. Николай | 11 февраля 2010 at 18:16

    Сообщение №29 «Спасибо, но при включенных ЧПУ у меня не определяется переменная $_REQUEST['categoryID'] и соответственно не добавляется к классу ‘_current’. При выключенных все работает нормально.»
    Т.е. если мы находимся в категории в меню для этого пункта добавлялся класс _current

    Ответить
  40. Артем | 11 февраля 2010 at 21:38

    http://easyweb.org.ua/?p=252#comment-310
    Вместо $_REQUEST['categoryID'] используйте $_GET['categoryID']

    Ответить
  41. Николай | 12 февраля 2010 at 10:54

    Точно, я ступил — спасибо. Очень нужная вещь! Куда и сколько подвозить пива :) ?

    Ответить
  42. Иван | 17 февраля 2010 at 23:42

    Не могли бы подсказать, как в спецпредложение вывести подкатегорию, в которой товар находится?
    Только подкатегорию первого уровня.
    К примеру у нас есть категория — Крупная бытовая техника, подкатегория 1-го — Холодильник, подкатегория 2-го — LG.
    Так вот в спепредложении нам нужно вывести подкатегорию — Холодильник.

    Ответить
  43. Артем | 18 февраля 2010 at 11:10

    дописать небольшой плагин, который будет по id товара определять нужную категорию
    как стандартными средствами реализовать — я не знаю

    Ответить
  44. Иван | 18 февраля 2010 at 12:02

    то, что стандартными средствами не реализуемый, это понятно.
    Принцип понятен, но как его для webAsyst прописать — не получается…

    Ответить
  45. zmeika | 23 марта 2010 at 14:22

    А подскажите, как сделать, чтобы в меню на всех страницах отображались категории и подкатегории первого уровня:
    Категория 1
    Подкатегория 1.1
    Подкатегория 1.2
    Категория 2
    Подкатегория 2.1
    Подкатегория 2.2

    А подкатегории второго уровня — только если выбрана соответствующая подкатегория первого уровня.
    Категория 1
    Подкатегория 1.1
    Подкатегория 1.1.1
    Подкатегория 1.1.2
    Подкатегория 1.2
    Категория 2
    Подкатегория 2.1
    Подкатегория 2.2

    Ответить
    • Артем | 23 марта 2010 at 14:37

      в первом варианте внутри функции subcat
      заменить
      $disp.=subcat($res['categoryID']);
      на
      if($_GET['categoryID'] ==$res['categoryID'])
      $disp.=subcat($res['categoryID']);

      Ответить
      • zmeika | 24 марта 2010 at 7:23

        Огромное Вам спасибо!

        Ответить
      • Юрий | 23 августа 2010 at 19:38

        И от меня ПАСИБА!))

        Ответить
      • santeh | 20 апреля 2011 at 15:43

        если выбрать категорию «Подкатегория 1.1.2″, то в меню пропадает всё что внутри «Подкатегория 1.1″. Подскажите как сделать что бы если я нахожусь внутри «Подкатегория 1.1″ в любой категории выводились соседние?

        Ответить
        • Артем | 20 апреля 2011 at 16:13

          Выбирать все категории у которых parent является текущая и категорию
          Потом выбрать категорию, которая является parent для текущей (пусть это будет категория2)
          И выбрать все категории, для которых «категория2″ является parent

          Ответить
        • santeh | 20 апреля 2011 at 16:40

          Не подскажите как это оформить в коде? Буду очень благодарен Вам

          Ответить
        • Артем | 20 апреля 2011 at 16:51

          в двух словах не опишешь. а переписывать модуль пока возможности нет

          Ответить
  46. Мишаня | 2 апреля 2010 at 9:34

    Прикольно, спасибо.. .НАРОД!!! если скрипт не в корне, то перед /category/ добавьте /shop_path/, где /shop_path/ — это путь от корня к магазу

    Ответить
  47. Евгений | 7 апреля 2010 at 14:14

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

    Ответить
  48. Мишаня | 12 апреля 2010 at 14:59

    Привет.!
    Есть проблема, необходимо делать раскрывающееся меню категорий, как что делать разобрался, использовал ваш метод, однако не получается написать такой if, чтобы у категорий не обладающих подкатегориями не было «плюсика» для раскрытия списка…. не могу придумать что сделать …

    Ответить
  49. Артем | 12 апреля 2010 at 15:14

    в функции subcat($parid)
    перед while($res=mysql_fetch_assoc($r)){
    напишите
    if(mysq_num_rows($r)<1) return false;

    а внутри функции smarty_function_newtree($params, &$smarty){
    используйте
    if(subcat($res['categoryID']))
    выаодите плюсик
    else
    не выводите плюсик

    Ответить
    • Мишаня | 13 апреля 2010 at 7:20

      Артее, спасибо. Все работает, единственное что — не определена переменная «mysq_num_rows($r)», заменил ее «mysq_num_rows($r)» и все ОК ))..

      Ответить
  50. Мишаня | 13 апреля 2010 at 8:44

    Возникла еще проблема… не могу написать if, чтобы список был раскрыт в категории, в которой мы находимся (if (($res['categoryID']=$categoryID) не работает … надо идти учить PHP …

    Ответить
  51. Мишаня | 15 апреля 2010 at 15:49

    решил проблему ))

    Ответить
    • Андрей | 17 апреля 2010 at 10:48

      Михаил, как вы решили этот вопрос?

      Ответить
  52. Сергей | 20 апреля 2010 at 12:47

    А как скрыть определенную категорию? (categoryID=582)?

    Ответить
  53. Артем | 21 апреля 2010 at 17:20

    внутри цикла
    while($res=mysql_fetch_assoc($r)){
    добавьте
    if($res['categoryID']==348)
    continue;

    348 — id вашей категории

    Ответить
  54. Валерий | 20 мая 2010 at 14:02

    По 1. Дерево категорий всегда раскрыто.

    не работают ссылки если ЧПУ не включено (включается — ваш сайт/installer/)
    А так все образцово-показательно.

    Ответить
    • Артем | 20 мая 2010 at 17:32

      специально не делал для отключенных ЧПУ
      ЧПУ очень важно. и включать его необходимо!

      Ответить
      • Валерий | 20 мая 2010 at 18:39

        А как быть с $_REQUEST['categoryID']? В котором ничего нету. Как выделить текущую категорию?

        Ответить
        • Артем | 20 мая 2010 at 18:42

          используйте
          $_GET['categoryID']

          Ответить
      • Валерий | 20 мая 2010 at 18:43

        А этот участок кода говорит о том, что попытка все-таки была. Зачем городить огород если не работает без ЧПУ?

        //————————————————-
        if($res['slug']!=»)
        $disp.=’»> ‘.$res['name'].’‘;
        else
        $disp.=’»> ‘.$res['name'].’‘;
        $disp.=subcat($res['categoryID']).»;
        }
        //————————————————

        Ответить
        • Артем | 20 мая 2010 at 18:49

          1. Этот вариант не будет работать при отклюенных ЧПУ. Если вы импортируете категории, а не добавляете их вручную то поле slug заполнено не будет и ваша категория не откроется
          В этом слуае ссылка будет вида /category/678/
          А это тоже ЧПУ!

          2. По поводу «огорода» — требую больше уважения и выбирайте выражения. Использовать данный скрипт никого не заставляю. Не нравится — пишите сами!

          Ответить
          • Валерий | 20 мая 2010 at 19:07

            Спасибо Артем.

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

            $disp.=’»> ‘.$res['name'].’‘;

            По идее все должно работать.

            Объясните для ТУПОГО — что значит импортировать категории и, что такое — добавлять их вручную?

            Все что вы пишите в своем блоге, это круто, много подчерпнул!

            Ответить
  55. Артем | 20 мая 2010 at 20:03

    значит я не так вас понял :)

    если загружаете через csv файл продукты(импорт товаров через админ панель), так же создаются и категории

    а вручную — это добавление категорий и товаров через админ-панель вручную

    подробнее про импорт — http://www.webasyst.ru/support/shop/manual.html#import-kataloga-tovarov-iz-csv

    Ответить
  56. WEBZ | 24 мая 2010 at 13:34

    Товарищи.!!! Как реализовать дерево категорий с разбивкой
    http://www.chip-dip.ru/ каталог слева

    Ответить
  57. Артем | 24 мая 2010 at 15:03

    отсеивать по ID категории

    Ответить
  58. Роман | 28 мая 2010 at 12:36

    Добрый день. Помогите пожалусто разобраться со следующей задачей.
    По умолчанию при выборе категории открываетса страница с перечнем товаров а сверху находиться поиск и перечень подкатегорий.
    Как сделать чтобы подкатегории (на странице с перечнем товаров) отображались с картинками.

    Ответить
  59. Роман | 28 мая 2010 at 14:51

    АЁУ!!! Проблема решина!!!

    Описал бы здесь, так для этого лучше целую тему завести

    Ответить
  60. Алексей | 9 июня 2010 at 20:36

    Подскажите пожалуйста, как добавить к подкатегориям 2 уровня еще один пробел ( ), т.е. как это сделано в оригинальном файле. Заранее благодарен.

    Ответить
    • Артем | 11 июня 2010 at 13:34

      с уровнями сложнее.
      я бы во второй функции заменил
      $disp.=subcat($res['categoryID']);
      на
      $disp.=’<div style="padding-left:20px;">’.subcat($res['categoryID']).’</div>’;

      Ответить
  61. Артем | 30 июня 2010 at 15:45

    Обновил первый вариант кода. теперь в нем меньше ошибок :)

    Ответить
  62. ZIP | 12 августа 2010 at 16:37

    Люди, а все таки возможно как то реализовать «всегда раскрыто» без ЧПУ. Просто я хочу обновить PREMIUM до webasyst, магазину 2 года и он на хороших позициях, боюсь если включу ЧПУ ЯША на меня обидеться.

    Ответить
    • Артем | 12 августа 2010 at 16:52

      вместо

      if($res['slug']!='')
       $disp.='"><a href="/category/'.$res['slug'].'/">'.$res['name'].'</a>';
       else
       $disp.='"><a href="?categoryID='.$res['categoryID'].'">'.$res['name'].'</a>';

      вставьте

      $disp.='"><a href="/index.php?ukey=category&categoryID='.$res['categoryID'].'">'.$res['name'].'</a>';

      Ответить
  63. ZIP | 12 августа 2010 at 17:19

    Спосибо огромное за быстрый ответ. Теперь работают категории, а под категории нет.

    Ответить
  64. ZIP | 12 августа 2010 at 17:53

    Спасибо огромное разобрался — надо было тоже самое сделать с subcat.
    Готов отблагодарить скажи куда.

    Ответить
  65. Артем | 12 августа 2010 at 18:50

    кошельки есть в правой колонке ;)
    USD: Z162512271280
    UAH: U400898999615
    RUB: R128798640813

    не забудьте прислать ссылку на свой магазин для каталога
    http://easyweb.org.ua/ads/catalog/

    Ответить
  66. Юрий | 18 августа 2010 at 20:07

    А как можно скрыть категории подкатегорий, т.е. есть категория «А» в ней подкатегория «B», все что находится в подкатегории «В» скрыть, до нажатия на этой категории.

    P.S. добавьте в блог http://www.elektrotochka.com крупная и мелкая бытовая техника, мобильные телефоны, кондиционеры, компьютерные комплектующие в Красном Луче, в Украине

    Ответить
  67. Roman | 31 августа 2010 at 19:09

    Здравствуйте Артем, воспользовался Вашим скриптом, как раз то что я искал. Но вот не нашел решения для того мне требуется. Может Вы сможете мне помочь.

    1.РОДИДЕЛЬСКАЯ ССЫЛКА
    ссылка
    ссылка
    2.РОДИТЕЛЬСКАЯ ССЫЛКА
    ссылка <— подскажите пожалуйста как скрыть подкатегории во второй родительской ссылке, но так, что при нажатии на нее и последующем переходе в эту категорию ссылки были видны.
    3.РОДИТЕЛЬСКАЯ ССЫЛКА

    Заранее спасибо, надеюсь на Вашу помощь.

    Ответить
    • Артем | 31 августа 2010 at 19:32

      сходу я не подскажу вам решение.
      2-3 строчками там не обойтись

      вы можете заказать разработку такого решения.
      если заинтересует — пишите

      Ответить
      • Юрий | 31 августа 2010 at 19:44

        в первом варианте внутри функции subcat
        заменить
        $disp.=subcat($res['categoryID']);
        на
        if($_GET['categoryID'] ==$res['categoryID'])
        $disp.=subcat($res['categoryID']);

        P.S. Артем писал выше, видимо забыл)))

        Ответить
        • Roman | 31 августа 2010 at 20:16

          попытался заменить, но что то не выходит… меняю вот здесь:
          else
          $disp.=’»>‘.$res['name'].’‘;
          $disp.=subcat($res['categoryID']).»;;
          }
          $disp.=»;
          }

          на:

          else
          $disp.=’»>‘.$res['name'].’‘;
          if($_GET['categoryID'] ==$res['categoryID'])
          $disp.=subcat($res['categoryID']).»;;
          }
          $disp.=»;
          }
          только вот не могу понять куда вписывать нужный ID…

          Ответить
  68. Артем | 31 августа 2010 at 19:50

    значит неправильно понял описание.
    прошу прощения

    Ответить
  69. Daddy | 31 августа 2010 at 21:14

    А как добавить вывод иконок категорий всех уровней подскажите? Очень нужно

    Ответить
  70. Елена | 4 сентября 2010 at 23:05

    Уважаемый Артем!
    Объясните еще раз тупорылым, пожалуйста, по 1 варианту.
    Вобщем, у меня в файле function.newtree.php сейчас вот это:

    <?php
    function smarty_function_newtree($params, &$smarty){
    $disp='';
    $disp.='’;
    $sql=’SELECT categoryID, slug, parent, ‘.LanguagesManager::sql_prepareField(‘name’).’ AS name from ‘.CATEGORIES_TABLE. ‘ where parent=1 order by sort_order,name’;
    if($r=mysql_query($sql))
    while($res=mysql_fetch_assoc($r)){
    $disp.=’‘.$res['name'].’‘;
    else
    $disp.=’»>‘.$res['name'].’‘;
    $disp.=subcat($res['categoryID']).»;
    }
    $disp.=»;
    return $disp;
    }

    function subcat($parid){
    $disp=»;
    $sql=’SELECT categoryID, slug, parent, ‘.LanguagesManager::sql_prepareField(‘name’).’ AS name from ‘.CATEGORIES_TABLE. ‘ where parent=’.$parid.’ order by sort_order, name’;
    if($r=mysql_query($sql)){
    if(mysql_num_rows($r)>0){
    $disp.=»;
    while($res=mysql_fetch_assoc($r)){
    $disp.=’‘.$res['name'].’‘;
    else
    $disp.=’»>‘.$res['name'].’‘;
    $disp.=subcat($res['categoryID']).»;;
    }
    $disp.=»;
    }
    }
    return $disp;
    }
    ?>

    Категории раскрылись, все прекрасно. Но, при переходе по любой категории или подкатегории я получаю следующую ошибку:

    Not Found
    The requested URL /category/podveski/ was not found on this server.

    Подсказка Денвера

    Вы ошиблись при наборе URL в браузере. Вероятнее всего, сервер пытается найти файл Z:/home/localhost/www/category/podveski/, которого не существует.

    Как Вы поняли, я на локальном сервере работаю.

    Подскажите, пожалуйста, что и где я не так делаю.

    Ответить
    • Артем | 5 сентября 2010 at 13:15

      вы включили ЧПУ?

      дайте адрес, посмотрим в чем проблема

      Ответить
      • Елена | 5 сентября 2010 at 23:21

        Простите, пожалуйста за беспокойство!
        Еще раз очень внимательно перечитала все комментарии и поняла, что ступила))) скрипт находится не в корневом каталоге)))
        СПАСИБО!!!

        Ответить
        • Артем | 6 сентября 2010 at 8:55

          пожалуйста :)

          Ответить
  71. E-SPAR | 18 сентября 2010 at 21:23

    подскажи, как скрыть категорию?
    т.е. убрать ее с главной страницы, категорий, меню
    (идентификатор категории известен)

    Ответить
  72. Павел | 3 октября 2010 at 21:13

    Здравствуйте.
    сделал как во втором варианте(2. Видны только подкатегории.)
    на что получил такую вот ругань
    Parse error: syntax error, unexpected ‘>’ in /kernel/includes/smarty/compiled/SC/templates_c/SCDBTHEWEARRU/%%A4^A42^A428899D%%category_tree.html.php on line 33

    подскажите что не так? правка вышеупомянутого файла ничего не дала кроме новой ругани на другую строку

    Ответить
  73. Павел | 3 октября 2010 at 21:40

    поудалял классы для тегов теперь ругань на 95-ю строку этого же файла что и выше. я так понимаю компиляция не проходит нормально.
    Ув. Андрей. гляньте плиз второй вариант менюхи, там помоему какаято опечатка в код закралась и я ее не могу найти

    Ответить
    • Артем | 6 октября 2010 at 7:47

      описанные вами ошибки говорят о синтаксических ошибках
      а если вы самостоятельно что-то удаляли, то ничем помочь не можем

      Андрею передадим, чтобы он глянул

      Ответить
      • Павел | 10 октября 2010 at 2:19

        Здравствуйте, спасибо за отклик. я разобрался сам спустя несколько часов. Вот суть траблы:
        В приведенном листинге вместо привычного && закрался некий && в двух местах оно есть. и естественно при компиляции того что я скопировал у вас тут пошла ругань на этого зверя. исправте плиз листинг для второго примера чтоб люди не нервничали)))) спасибо!

        Ответить
  74. Павел | 10 октября 2010 at 2:21

    Здравствуйте, спасибо за отклик. я разобрался сам спустя несколько часов. Вот суть траблы:
    В приведенном листинге вместо привычного && закрался некий && в трех местах оно есть. и естественно при компиляции того что я скопировал у вас тут пошла ругань на этого зверя. исправте плиз листинг для второго примера чтоб люди не нервничали)))) спасибо!

    Ответить
    • Павел | 10 октября 2010 at 2:22

      в общем не получается у меня этот amp изобразить. форма его исправляет))

      Ответить
    • ьпки | 14 декабря 2010 at 12:56

      Заменил амперсанды на нормальные, но все равно ругается :(

      Ответить
      • Павел | 17 февраля 2011 at 14:50

        могу выслать свой вариант с исправлениям. пишите на мыло yseff@rambler.ru если еще актуально

        Ответить
  75. Stanley | 23 мая 2011 at 16:30

    Кто-нибудь пробовал сделать категории выпадающим списком (через form)?

    Ответить
    • Артем | 23 мая 2011 at 16:35

      а в чем сложность?
      http://test.webcomplit.ru/auxpage_filtr/
      здесь сейчас категории в выпадающем списке

      Ответить
  76. Андрей | 21 июня 2011 at 15:25

    Здравствйте, Артем.

    Подскажите, пожалуйста, как вывести подкатегории в качестве отдельных меню. Условно: мы имеем категорию «FIRST» с подкатегориями «A-1″ и «A-2″, и категорию «SECOND» с подкатегориями «B-1″ и «B-2″. Нам нужно отобразить два блока исключительно вложенных категорий:

    В одном блоке:

    A-1
    A-2

    Во втором блоке:

    B-1
    B-2

    Спасибо!

    Ответить
    • Андрей | 21 июня 2011 at 17:42

      В частности, такой вывод реализован в файле category.tpl.html, но у меня не хватает знаний, чтобы изъять оттуда нужное и грамотно модифицировать.

      Ответить
  77. Владимир, Тула | 8 августа 2011 at 14:40

    Уважаемый Артем, пришла задача раскрыть полностью меню, попробовал Ваш способ, работает, спасибо!, но есть еще вариант!

    раскрыть меню можно добавив всего лишь одну! строку в стандартные функции:

    в файле
    \published\SC\html\scripts\core_functions\category_functions.php

    в функции
    function catGetCategoryCompactCList( $selectedCategoryID )

    после $res[] = $row;
    и перед if ( count($path) > 1 )

    получится:
    .
    .
    .
    $res[] = $row;
    $path = catCalculatePathToCategory( $row["categoryID"] ); //для раскрытия меню целиком
    if ( count($path) > 1 )
    .
    .
    .
    и все, у меня работает)

    Ответить
    • Артем | 8 августа 2011 at 15:00

      да. спасибо большое

      я теперь тоже использую подобные методы
      описанному методу 2 года и он не идеален :)

      со временем опубликую более простое решение

      Ответить
    • Никита | 16 января 2012 at 3:54

      Попробовал Ваш код,работает идеально. Но вот проблема, у главной родительской категории выводятся только субкатегории, а если у субкатегории есть также суб категории, то они вообще не отображаются. Подскажите пожалуйста,как раскрыть все категории с использованием вашего подхода так, чтобы если субкатегория является родителем для других категорий,ее дочерки также бы выводились?

      Ответить
      • Владимир, Тула | 16 января 2012 at 14:07

        To: Никита
        для раскрытия на более глубокий уровень необходимо проделать те-же манипуляции для рекурсивной функции

        recursiveGetCategoryCompactCList

        т.е. так-же в ней заменить

        $res[] = $row;
        if ( $level <= count($path)-1 )

        на

        $res[] = $row;
        $path = catCalculatePathToCategory( $row["categoryID"] ); //для постоянного расрытия подкатегорий
        if ( $level <= count($path)-1 )

        Ответить
  78. Сергей | 30 августа 2011 at 4:47

    Делаю все как в первом варианте (1. Дерево категорий всегда раскрыто.)
    Выдает такую ошибку Fatal error: Class ‘LanguagesManager’ not found in /home/u106124/aromashevoru/www/smarty/plugins/function.newtree.php on line 4

    Ответить
    • Артем | 30 августа 2011 at 7:56

      с новыми версиями проблем не возникало
      у вас свежая версия?

      Ответить
      • Сергей | 30 августа 2011 at 8:01

        Версия 1.24

        Ответить
        • Артем | 30 августа 2011 at 8:17

          о такой версии мне ничего неизвестно

          http://www.webasyst.ru/changelog.html

          начина я с 268 все должно работать

          Ответить
  79. Дмитрий | 16 октября 2011 at 23:46

    Заметил что когда заходим в товар, то категория в которой находиться этот товар не отмечается активным т.е. не присваивается _current, а когда находимся просто в категории то все нормально. Как можно решить эту проблему?

    Ответить
    • Артем | 18 октября 2011 at 20:12

      добавьте функцию

      function getcat(){
      if((int)$_GET['categoryID']>0){
      return $_GET['categoryID'];
      }else if ((int)$_GET['productID']>0){
      $sql=’SELECT categoryID FROM SC_products WHERE productID="’.(int)$_GET['productID'].’"’;
      if($res=mysql_query($sql))
      $row=mysql_fetch_assoc($res);
      return $row[0];
      } else
      return false;
      }

      обновленный файл можно скачать — здесь

      Ответить
      • Дмитрий | 10 января 2012 at 21:22

        все криво отображает, когда нахдишься в категории под категория пропадает, классы вообще не где не присываиваются активные

        Ответить
        • Артем | 10 января 2012 at 21:29

          если криво, то не пользуйтесь этим

          пользуйтесь стандартным функционалом, там все «прямо»

          Ответить
  80. Глеб | 24 ноября 2011 at 3:24

    не работаеть :(
    почему-не пойму.
    гляньте. пните куда надо, пожалуйста.
    http://www.adastra-sport.ru/

    спасибо!

    Ответить
  81. Яс | 4 января 2012 at 22:50

    Артем, спасибо за код. Все работает.
    Никак не могу его доработать, чтобы актвный пункт меню высвечивался. (в какой сейчас категории находимся)

    a class=»какой тут php код вставить что если Текущая категория = $res['categoryID'], то current» ….

    Ответить
    • Артем | 5 января 2012 at 10:40

      а там есть такой кусочек

      if($_REQUEST['categoryID'] == $res['categoryID']) $disp.='_current';

      если активная категория, то к классу parent добавляется _current
      или не работает?

      Ответить
  82. Павел | 6 января 2012 at 22:24

    Как заменить эти &

    Ответить
    • Артем | 6 января 2012 at 22:27

      http://g.ua/a4tf

      Ответить
  83. Дмитрий | 10 января 2012 at 20:57

    Не подскажите как сделать так чтобы у категории всегда был _current пока мы находимся в подкатегориях, т.е.

    Пункт 1
    Пункт 2

    Под пункт 1
    Под пункт 2
    Под пункт 3

    Пункт 3

    мы находимся в под пункте 1 но верний пункт все равно активен

    Ответить
    • Артем | 10 января 2012 at 21:28

      достаточно одного комментария.

      ответ на ваш вопрос: «не подскажу»

      Ответить
  84. Андриан | 15 марта 2012 at 6:34

    Второй вариант вывода толика подкатегории не работает(

    Выдает ошибку

    Parse error: syntax error, unexpected ‘>’ in /usr/home/38850/teasect.ru/html/kernel/includes/smarty/compiled/SC/DB67962M/ru/%%A4^A42^A428899D%%category_tree.html.php on line 32

    помогите пожалуйста!

    Ответить
  85. Виктор | 10 апреля 2012 at 11:31

    Сделали по вашей инструкции.

    sc-error.log из папки \kernel последнее время очень быстро растёт
    в нём содержаться вот такие записи:

    2012-02-03 23:37. Missing argument 2 for subcat(), called in /home/hosting/domain.ru/docs/kernel/includes/smarty/plugins/function.newtree.php on line 34 and defined File: /home/svyazist/format72.ru/docs/kernel/includes/smarty/plugins/function.newtree.php Line: 21 Error #: 2

    Как это можно исправить?

    Ответить
  86. Максим | 22 апреля 2012 at 15:31

    Сделал все по методу 2, поменял & amp;(без пробела) на &, все равно не заработало. Порывшись в коде, обнаружил — что из html ещё и знак > перенесся как & gt;(без пробела). Все заменил, ошибки пропали, но теперь другая проблема появилась, все ссылки в меню получаются вида — «root/category/’Array.slug’/» не подскажите что с этим делать?

    Ответить
  87. Максим | 22 апреля 2012 at 15:45

    Извиняюсь, сам ступил, заменил все ‘ на обычный прямой одинарный опостроф

    Ответить
  88. Максим | 22 апреля 2012 at 17:08

    А не подскажите, а как сделать «второй вариант», то есть только отображение вложенных категорий, но ещё и что бы путь отображался, я имею в виду что бы например:
    >Обувь
    > Детская
    >Летняя
    >Ботинки
    >Кроссовки
    >Сланцы
    возможно ли так сделать?

    Ответить
  89. Максим | 22 апреля 2012 at 20:09

    Редактор съел форматирование.
    >Обувь
    >> Детская
    >>>Летняя
    >>>>Ботинки
    >>>>Кроссовки
    >>>>Сланцы

    Или же можно сделать второй вариант, но что бы например, если зайти в подкатегорию, в которой нету вложенных подкатегорий, то отображаться будут в дереве категорий, категории стоящей выше данной категории по иерархии? если бы реализовать это, то цены не будет вашей доработке
    Извиняюсь за получившийся флуд.

    Ответить
  90. Максим | 27 апреля 2012 at 15:52

    Пардоньте за флуд, сам решил эту задачу, кому интересно вот здесь код

    Ответить
    • Артем | 30 апреля 2012 at 8:10

      Error (404)

      исправьте ссылку

      Ответить

Оставить комментарий Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

  • Twitter
  • Facebook
  • VK
  • RSS


| |

Последние комментарии

  • Артем к записи Фильтр по ценам
  • Виктор к записи Фильтры в Webasyst Shop-Script
  • Виктор к записи Фильтр по ценам
  • Артем к записи дерево категорий по-своему (shop-script)
  • Максим к записи дерево категорий по-своему (shop-script)

Самые комментируемые

  • Автоматическое заполнение рекомендуемых товаров (145)
  • дерево категорий по-своему (shop-script) (135)
  • Фильтры в Webasyst Shop-Script (62)
  • WP Cumulus для Shop-Script исправленный (58)
  • Оплата через LiqPay для Shop-Script (51)
  • WP Cumulus для Joomla и Shop-Script (50)
  • Две цены в WA Shop-Script (49)

Самые читаемые

  • Фильтры в Webasyst Shop-Script - 13 101 просмотров
  • дерево категорий по-своему (shop-script) - 12 217 просмотров
  • ввод даты, календарь javascript - 9 738 просмотров
  • Автоматическое заполнение рекомендуемых товаров - 8 224 просмотров
  • Бренды в Webasyst Shop-Script - 8 064 просмотров
  • Модули - 8 019 просмотров
  • Слайдер в списках продуктов - 6 223 просмотров

Архивы







Поддерживать ежемесячно с помощью Donutor

Свежие записи

  • Руководство пользователя Joomla 2.5
  • Вкладки на странице продукта
  • Весенние скидки от WebAsyst
  • Обновление Shop-Script
  • Фильтр по ценам

друзья

  • at-home
  • Fisher — сотовые телефоны
  • WebAsyst
  • Zdorovy.in.ua

Счетчики

www.megastock.ruЯндекс.Метрика

Мета

  • Войти
  • RSS записей
  • RSS комментариев
  • WordPress.org

© 2008-2012 EasyWeb.org.ua | Дизайн elegantthemes.com | Разработано на CMS WordPress