Автор Тема: Категории на главной странице  (Прочитано 24578 раз)

Оффлайн yuriy4508

  • Спец
  • ***
  • Сообщений: 137
    • Просмотр профиля
Категории на главной странице
« : Марта 24, 2012, 09:47:41 am »
Искал на форуме, но не нашел.
Хочу вывести на главную список категорий с картинкой (лего 5.0.2) как тут http://www.dvaproraba.ru/
Кто-нибудь делал такое? Я так понимаю надо править home.php и home.tpl.html

Оффлайн Dias

  • Пользователь
  • **
  • Сообщений: 75
    • Просмотр профиля
Re: Категории на главной странице
« Ответ #1 : Марта 24, 2012, 10:01:35 am »
По запросу "Категории на главной" есть такая тема и есть решение проблемы. Но можно написать еще раз:

В файл includes/home.php в конце перед ?> вставляем следующий код:

    //get root categories to be shown in the front-end homepage
$q = db_query("SELECT categoryID, name, products_count, picture, hurl FROM ".CATEGORIES_TABLE." WHERE categoryID<>0 and parent='0' and enabled='1' ORDER BY products_count DESC") or die (db_error());
$root = array();
while ($row = db_fetch_row($q))
{
if (!file_exists("./products_pictures/$row[3]")) $row[3] = "";
if ($row[4] != "") {$row[4] = REDIRECT_CATALOG."/".$row[4];} else {$row[4] = "index.php?categoryID=".$row[0];}
$root[] = $row;
}

//get subcategories of root categories
$query = "SELECT categoryID FROM ".CATEGORIES_TABLE." WHERE categoryID<>0 ORDER BY categoryID ASC";
$result = array();
for ($i=0; $i<count($root); $i++)
{
$q = db_query("SELECT categoryID, name, products_count, parent, hurl FROM ".CATEGORIES_TABLE." WHERE categoryID<>0 and parent=".$root[$i][0]." and products_count>0 ORDER BY products_count DESC") or die (db_error());
while ($row = db_fetch_row($q))
{
if ($row[4] != "") {$row[4] = REDIRECT_CATALOG."/".$row[4];} else {$row[4] = "index.php?categoryID=".$row[0];}
$result[] = $row;
}
}
$smarty->assign("root_categories",$root);
$smarty->assign("root_categories_subs",$result);

В файл шаблона css/css_default-full/theme/home.tpl в конце после {$index} и перед </div> :

    <h1>{$smarty.const.ADMIN_CATALOG}</h1>
        <table width=100% border=0 cellpadding=5>
{section name=i loop=$root_categories}
{if $smarty.section.i.index is div by 2}<tr>{/if}
            <td width=1% align=center>
{if $root_categories[i][3] ne ""}<a href="http://{$smarty.const.CONF_SHOP_URL}/{$root_categories[i][4]}" title="{$root_categories[i][1]}"><img border=0 src="./products_pictures/{$root_categories[i][3]}" alt="{$root_categories[i][1]}" />{/if}
            </td>
            <td>
            <a href="http://{$smarty.const.CONF_SHOP_URL}/{$root_categories[i][4]}" title="{$root_categories[i][1]}">{$root_categories[i][1]}</a>&nbsp;[{$root_categories[i][2]}]:<br /><br />
{* show sub categories *}
{assign var="tmp" value=0}
{section name=j loop=$root_categories_subs}
    {if $root_categories_subs[j][3] == $root_categories[i][0]}
    {if $tmp == 1}|
    {else}
{assign var="tmp" value=1}
    {/if}
            <a href="http://{$smarty.const.CONF_SHOP_URL}/{$root_categories_subs[j][4]}" title="{$root_categories_subs[i][1]}"><span class="sub">{$root_categories_subs[j][1]}</span></a>
    {/if}
{/section}
            </td>
            </td>
{if ($smarty.section.i.index+1) is div by 2}</tr>{/if}
{/section}
    </table>

Оффлайн Dias

  • Пользователь
  • **
  • Сообщений: 75
    • Просмотр профиля
Re: Категории на главной странице
« Ответ #2 : Марта 26, 2012, 12:09:10 pm »
разве ж это буйство? просто возмущение.а Вы предлагаете потакать всем "капризам"? боюсь, тогда, ответ будет один - в поиск.
людей нужно одергивать от этих "привычек". сложностей перефразировать словасочетания для поиска нет, и уж тем более пролистнуть пару страниц в результате поиска.

Я не предлагаю потакать подобным "капризам", всех невозможно научить, будут регистрироваться новые пользователи, которые в любом случае буду создавать такие же темы с такими же вопросами и им будет все равно есть ли ответ уже на их вопрос и есть ли подобная тема. Я знаю, что если есть пару минут времени (а если заходишь на форум то оно уже есть) то можно либо написать человеку ссылку, где обсуждалась эта тема, либо, если есть время, написать еще раз и абсолютно ничего страшного не случиться, можно же получить более новые ответы на старые вопросы. Pehser написал уже другой, более правильный, вариант решения вопроса и его будет лучше использовать чем тот, что был.
« Последнее редактирование: Марта 26, 2012, 12:20:59 pm от Dias »

Оффлайн Dias

  • Пользователь
  • **
  • Сообщений: 75
    • Просмотр профиля
Re: Категории на главной странице
« Ответ #3 : Марта 26, 2012, 12:26:52 pm »
данный метод марально устарел, это обсуждалось на сходке в Киеве в прошлом году
Не рекомендую править файлы движка а то потом возникает ситуация при обновлении движка теряются обновый из за этого не хотят обновляться сидят на старых версиях а потом долбают как мне интегрировать то что в новой версии
нужно закидывать пхп в паку инклудес темы
пример css\css_default-full\includes  - если папки includes нету ее нужно создовать (вместо css_default-full папка ваше темы)

создаем в этой папке фаил например  tree_cat.php
с
<?php
  $categ_all
=All_Categories(0,0);
  
$smarty->assign("tree_cat",$categ_all);
?>


а в фаил home.tpl.html
добовляем
<h1>{$smarty.const.ADMIN_CATALOG}</h1>
 <ul class="tree">
    {section name=i loop=$tree_cat}
      {if $tree_cat[i].level<2}
        {if $tree_cat[i].level>$tree_cat[i.index_prev].level}<ul {if $tree_cat[i].level>0}class="inline"{/if} >{/if}
         <li {if $tree_cat[i].level==0} class="root_c" {/if}><a href="./{$tree_cat[i].hurl}">{$tree_cat[i].name}</a>{if $tree_cat[i].level==0}&nbsp;<b>[{$tree_cat[i].products_count}]</b> {else} {if $tree_cat[i.index_next].level>=$tree_cat[i].level}|{/if} {/if}
        {if $tree_cat[i].level==$tree_cat[i.index_next].level}</li>{/if}
        {if $tree_cat[i].level>$tree_cat[i.index_next].level && !$smarty.section.i.last}
         {math assign=raz equation="x - y" x=$tree_cat[i].level y=$tree_cat[i.index_next].level}
           {section name=closed loop=$raz}
             </ul></li>
           {/section}
        {/if}
       {/if}
    {/section}
</ul>

в фаил стилей (stylesheet.css)
доболяем
.tree ul
{
  list-style: none;
  margin: 0px;
  padding: 5px;
}
.inline li{display:inline;}

и вуаля у нас правильное дополнение не затрагивающее ядро использующее имеющие функции движка - без велосепидеов и оптимизированый шашлон - без таблиц

Данный мод будет работать только в 5-х версиях

Еще нужно добавить изображения для категорий.

Оффлайн Dias

  • Пользователь
  • **
  • Сообщений: 75
    • Просмотр профиля
Re: Категории на главной странице
« Ответ #4 : Марта 26, 2012, 12:36:19 pm »
./products_pictures/{$tree_cat[i].picture}

Я сначала так сделал, но при таком способе отображаются и изображения подкатегорий, скажите, пожалуйста, как можно сделать чтобы было отображение изображений только для категорий?

Оффлайн Dias

  • Пользователь
  • **
  • Сообщений: 75
    • Просмотр профиля
Re: Категории на главной странице
« Ответ #5 : Марта 26, 2012, 01:25:21 pm »
Благодарю, как раз то что нужно.

nictboom

  • Гость
Re: Категории на главной странице
« Ответ #6 : Марта 26, 2012, 11:05:41 pm »
Цитата: Dias
...будут регистрироваться новые пользователи, которые в любом случае буду создавать такие же темы с такими же вопросами...

на который будут получать ответ - в поиск..
Цитата: Dias
Я знаю, что если есть пару минут времени
если у Вас будет минутка, пишите. боюсь, только без поддержки.
Цитата: Dias
Pehser написал уже другой, более правильный, вариант решения вопроса и его будет лучше использовать чем тот, что был
и этот вариант
Цитировать
будет работать только в 5-х версиях
а варианты старых сборок, увы пока никто не отменял .
« Последнее редактирование: Марта 26, 2012, 11:09:06 pm от nictboom »

Оффлайн tovshop

  • Пользователь
  • **
  • Сообщений: 31
    • Просмотр профиля
Re: Категории на главной странице
« Ответ #7 : Марта 27, 2012, 09:34:05 am »
А куда вставить этот код, который выводит картинки (Если можно то выложите полный код)?

./products_pictures/{$tree_cat[i].picture}
{if $tree_cat.level==0}

Оффлайн Dias

  • Пользователь
  • **
  • Сообщений: 75
    • Просмотр профиля
Re: Категории на главной странице
« Ответ #8 : Марта 28, 2012, 01:53:14 am »
А куда вставить этот код, который выводит картинки (Если можно то выложите полный код)?

./products_pictures/{$tree_cat[i].picture}
{if $tree_cat.level==0}

<h1>{$smarty.const.ADMIN_CATALOG}</h1>
 <ul class="tree">
    {section name=i loop=$tree_cat}
      {if $tree_cat.level<2}
        {if $tree_cat.level>$tree_cat[i.index_prev].level}<ul {if $tree_cat.level>0}class="inline"{/if} >{/if}
         <li {if $tree_cat.level==0} class="root_c" {/if}>{if $tree_cat.level==0}<img src="./products_pictures/{$tree_cat.picture}">{/if}<a href="./{$tree_cat.hurl}">{$tree_cat.name}</a>{if $tree_cat.level==0}&nbsp;<b>[{$tree_cat.products_count}]</b> {else} {if $tree_cat[i.index_next].level>=$tree_cat.level}|{/if} {/if}
        {if $tree_cat.level==$tree_cat[i.index_next].level}</li>{/if}
        {if $tree_cat.level>$tree_cat[i.index_next].level && !$smarty.section.i.last}
         {math assign=raz equation="x - y" x=$tree_cat.level y=$tree_cat[i.index_next].level}
           {section name=closed loop=$raz}
             </ul></li>
           {/section}
        {/if}
       {/if}
    {/section}
</ul>

Код, который нужно вставить, выделен красным цветом.
« Последнее редактирование: Марта 28, 2012, 02:19:38 am от Dias »

Оффлайн tovshop

  • Пользователь
  • **
  • Сообщений: 31
    • Просмотр профиля
Re: Категории на главной странице
« Ответ #9 : Марта 28, 2012, 09:34:30 am »
Теперь только [] и ничего нет, в том числе и картинок.


[вложение удалено администратором]

Оффлайн tovshop

  • Пользователь
  • **
  • Сообщений: 31
    • Просмотр профиля
Re: Категории на главной странице
« Ответ #10 : Апреля 02, 2012, 12:14:31 pm »
Shop-Script «Lego Edition SP 5.0.2»
Если не использовать fix с картинками, то отображение категорий и кол-ва товара есть. Но интересен вариант именно с картинками.
« Последнее редактирование: Апреля 02, 2012, 12:16:24 pm от tovshop »

nictboom

  • Гость
Re: Категории на главной странице
« Ответ #11 : Апреля 21, 2012, 03:38:55 pm »
а с тремя уровнями вложения кто то экспериментировал?
я попробовал применить, на сайте, если не вешать сильно стили, отображает вроде как нормально. firebug-ом, вроде тоже.
только пробуешь применить position, некоторые элементы плывут.
взял просто исходный код страницы на блокнот, и заметил несколько не закрытых строк(тэгов), не совсем верное расположение/распределение
закрывающихся </li> и </ul>.
сам код почти не менял, кроме: {if $tree_cat[i].level<3}кто то смотрел в своих исходных кодах страниц, нет ли подобного?
для примера исходный код с оф.демо -сайта:
<ul  id="verticalmenu" class="glossymenu">
</li>
<li><a href="./catalog/avtomobili/" >Автомобили</a></li>
<li><a href="./catalog/audio-video/" >Аудио / Видео</a></li>
<li><a href="./catalog/knigi/" >Книги</a></li>
<li><a href="./catalog/kompyutery/" >Компьютеры</a></li>
<li><a href="./catalog/napitki/" >Напитки</a></li>
<li><a href="./catalog/odezhda/" >Одежда</a></li>
<li><a href="./catalog/sotovaya-svyaz/"  class="selected" >Сотовая связь</a>
<ul>
<li><a href="./catalog/ericsson/" >Ericsson</a></li>
<li><a href="./catalog/nokia/" >Nokia</a></li>
<li><a href="./catalog/samsung/" >Samsung</a></li>
<li><a href="./catalog/siemens/" >Siemens</a>
        </ul>
       <li><a href="./catalog/sport/" >Спорт</a>
</ul>
хотя и отображается нормально...
« Последнее редактирование: Апреля 21, 2012, 03:41:06 pm от nictboom »

Rainstorm

  • Гость
Re: Категории на главной странице
« Ответ #12 : Ноября 17, 2012, 05:10:36 pm »
Так если делать как говорит pehser, то получается список категорий с подкатегориями в один длинный столбик слева. А надо то чтобы  в 2 или 3 столбца.

nictboom

  • Гость
Re: Категории на главной странице
« Ответ #13 : Ноября 18, 2012, 12:52:50 am »
там еще стили были.
можно пробовать применить такой стиль:
ul.tree
{
  list-style: none;
  margin: 0px;
  padding: 5px;
  display:table;
  width:100%;
}
li.root_c {
  display:table-cell;
  width:30%;/*тут нужно играться, в зависимости от нужного кол-ва колонок*/
  float:left;
  min-height:170px;
}
эта конструкция не самый лучший вариант, хоть вроде и рабочий.
« Последнее редактирование: Ноября 18, 2012, 01:01:59 am от nictboom »

Rainstorm

  • Гость
Re: Категории на главной странице
« Ответ #14 : Ноября 18, 2012, 08:48:42 am »
Еще бы сделать название категории на главной более крупным шрифтом и другого цвета.
Вообще это интересно реализовано вот здесь  http://inetstore.areainfo.ru/
« Последнее редактирование: Ноября 18, 2012, 09:14:50 am от Rainstorm »