Вход • Регистрация

Объясните доступно как вывести категории товаров на главной

  • 25 августа 2015 г.
  • Я в php почти ничего не понимаю, поэтому прошу доступно написать как вывести категории товаров на главной?

    В техподдержке подсказали что это можно сделать через меню.

    Вот я создал меню "Категории на главной".
    Самим категориям галочки "отображать в меню Категории на главной" проставил.
    Картинки категориям присвоил.
    Въюху "_glavkategorii" создал.
    Вывод шаблонным тегом на главной прописал.

    Что конкретно нужно писать во въюхе? Какой код выводит категории товаров (изображения и названия)?
    • 25 августа 2015 г.
    • скопируйте любую другую подходящую вьюху из modules/menu/views и исправьте там классы на свои.
      Ну я бы так сделала)
  • 25 августа 2015 г. , редакция: 25 августа 2015 г.
  • Ну если всё сделал какие вопросы - всё должно вывестись.
  • 25 августа 2015 г.
  • --> Что конкретно нужно писать во въюхе? Какой код выводит категории товаров (изображения и названия)?
    • 25 августа 2015 г.
    • Цитата
      Вывод шаблонным тегом на главной прописал.

      Шаблонный тег выводит в шаблоне блок модуля в вашем случае меню. Вопрос в том если у вас есть шаблонный тег, вы его правильно написали или не понимаете как оно должно быть. Вы не приводите примеров, каким образом вам смогут помочь или вы думаете, что тут Нострадамусы, Ванги и Гарри Поттеры сидят?
      Читайте внимательно документацию.
      • 25 августа 2015 г.
      • С шаблонным тегом то я разобрался.
        <insert name="show_block" module="menu" id="5" template="glavkategorii">

        Документацию полностью прочитал. Я не понимаю php, mysql, java. Поэтому ни знаю как вывести отображение категорий.
  • 25 августа 2015 г.
  • Сейчас во вьюхе такой код:
    if (! defined('DIAFAN'))
    {
    $path = __FILE__; $i = 0;
    while(! file_exists($path.'/includes/404.php'))
    {
    if($i == 10) exit; $i++;
    $path = dirname($path);
    }
    include $path.'/includes/404.php';
    }

    if (empty($result["rows"]))
    {
    return false;
    }
    if (!empty($result["name"]))
    {
    echo '<div class="block_header">'.$result["name"].'</div>';
    }

    echo '<ul class="left_menu_level_1">';
    echo $this->get('show_level', 'menu', $result);
    echo '</ul>';

    Выводятся только названия категорий.
  • 25 августа 2015 г.
  • Здесь выводится только то что вокруг вашего блока меню
    Код
    echo $this->get('show_level', 'menu', $result);


    Само меню выводится вот тут
    Код
    echo '<ul class="left_menu_level_1">';
    echo $this->get('show_level', 'menu', $result);
    echo '</ul>';


    Смотрите в модуле меню шаблон show_level
    • 25 августа 2015 г.
    • Подскажите на что нужно заменить этот код

      echo '<ul class="left_menu_level_1">';
      echo $this->get('show_level', 'menu', $result);
      echo '</ul>';

      что бы картинки категорий с названиями и ссылками на них выводились?
      • 25 августа 2015 г.
      • echo $this->get('show_level', 'menu', $result); - вот это говорит о том, что надо смотреть файл menu.view.show_level.php, как выше вам Денис написал.
        В этом файле как раз тот код, который выводит пункты меню.
        • 25 августа 2015 г. , редакция: 25 августа 2015 г.
        • Тогда в файле show_level что нужно прописать? (что бы картинки категорий с названиями и ссылками на них выводились)

          Сейчас там:
          Код

          if (! defined('DIAFAN'))
          {
          $path = __FILE__; $i = 0;
          while(! file_exists($path.'/includes/404.php'))
          {
          if($i == 10) exit; $i++;
          $path = dirname($path);
          }
          include $path.'/includes/404.php';
          }

          if (empty($result["rows"][$result["parent_id"]]))
          {
          return true;
          }

          // начало уровня меню
          foreach ($result["rows"][$result["parent_id"]] as $row)
          {
          if (!$result["rows"][$result["parent_id"]][0] != $row)
          {
          // разделитель пунктов меню
          }

          if ($row["active"])
          {
          // начало пункта меню для текущей страницы
          echo '<li class="active">';
          }
          elseif ($row["active_child"])
          {
          // начало пункта меню для активного дочернего пункта
          echo '<li class="active_child">';
          }
          else
          {
          // начало любого другого пункта меню
          echo '<li>';
          }

          if (
          // на текущей странице нет ссылки, если не включена настройка "Текущий пункт как ссылка"
          (!$row["active"] || $result["current_link"])

          // влючен пункт "Не отображать ссылку на элемент, если он имеет дочерние пункты"
          && (!$result["hide_parent_link"] || empty($result["rows"][$row["id"]]))
          )
          {
          if ($row["othurl"])
          {
          echo '<a href="'.$row["othurl"].'"'.$row["attributes"].'>';
          }
          else
          {
          echo '<a href="'.BASE_PATH_HREF.$row["link"].'"'.$row["attributes"].'>';
          }
          }

          //вывод изображения
          if (! empty($row["img"]))
          {
          echo '<img src="'.$row["img"]["src"].'" width="'.$row["img"]["width"].'" height="'.$row["img"]["height"]
          .'" alt="'.$row["img"]["alt"].'" title="'.$row["img"]["title"].'"> ';
          }

          // название пункта меню
          if (! empty($row["name"]))
          {
          echo $row["name"];
          }

          if (
          // на текущей странице нет ссылки, если не включена настройка "Текущий пункт как ссылка"
          (!$row["active"] || $result["current_link"])

          // влючен пункт "Не отображать ссылку на элемент, если он имеет дочерние пункты"
          && (!$result["hide_parent_link"] || empty($result["rows"][$row["id"]]))
          )
          {
          echo '</a>';
          }



          if ($row["active"])
          {
          // окончание пункта меню - текущей страницы
          echo '</li>';
          }
          elseif ($row["active_child"])
          {
          // окончание пункта меню для активного дочернего пункта
          echo '</li>';
          }
          else
          {
          // окончание любого другого пункта меню
          echo '</li>';
          }

          if ($result["show_all_level"] || $row["active_child"] || $row["active"])
          {
          // вывод вложенного уровня меню
          $menu_data = $result;
          $menu_data["parent_id"] = $row["id"];
          $menu_data["level"]++;

          if (empty($result['attributes']['count_level']) || $result['attributes']['count_level'] >= $menu_data["level"])
          echo $this->get('show_level_2', 'menu', $menu_data); //ниже функция, которая выводит в цикле пункты второго уровня вложенности.
          }
          }
          // окончание уровня меню
          • 25 августа 2015 г. , редакция: 25 августа 2015 г.
          • у вас выводятся картинки)
            поставьте галочку в админке: http://prntscr.com/88lnff

            Или у вас ВООБЩЕ НИЧЕГО не выводится?
            • 25 августа 2015 г.
            • Выводятся только названия.

              Сайт: dlya-azs.ru


              • 25 августа 2015 г. , редакция: 25 августа 2015 г.
              • Ну хоть что то выводится) это хорошо)
                Вот здесь галочку поставьте http://prntscr.com/88lzdt
                Меню - Настройки модуля Меню (справа, я вам скриншот раньше выкладывала)
  • 25 августа 2015 г.
  • Там стоит галочка. На одном из прикреплённых скринах показывал.
    • 25 августа 2015 г.
    • Все, поняла.
      Категории магазина - это категории магазина, а пункты меню - это пункты меню
      Вам надо эти изображения к соответствующим пунктам меню прикрепить: http://prntscr.com/88m2u9
      • 25 августа 2015 г.
      • Инна, спасибо огромное! Вы умничка! Всё выводится.

        Но всё же это клиентский сайт. Нужно объяснять что каждый раз добавляя новую категорию не забывайте прикрепить картинку в пункте меню соответствующей категории

        Может кто-то сумел автоматизировать процесс? Ведь категориям уже присвоены картинки в настройках категорий.
        • 25 августа 2015 г.

        • Пожалуйста

          Выводите не через меню, а через отдельную вьюшку каталога
          • 25 августа 2015 г.
          • Цитата
            Выводите не через меню, а через отдельную вьюшку каталога


            А вот это я уже не понимаю
            • 25 августа 2015 г. , редакция: 25 августа 2015 г.

            • ЗЫ. Наврала вам, не будет так работать(
              Может тогда еще кто-нибудь решение подскажет
  • 25 августа 2015 г. , редакция: 25 августа 2015 г.
  • Да я уже попробовала, не работает так
    Получается, что только через меню можно.
  • 25 августа 2015 г.
  • Знаете еще как можно. Прикрепить модуль Интернет-магазин к главной странице. Тогда категории будут на главной автоматом видны.
    • 25 августа 2015 г.
    • Тогда там будут товары выводиться, а не категории.
      Где-то на форуме читал что нельзя один и тот же модуль к разным страницам прикреплять. А у меня есть уже страница под интернет-магазин.
      • 28 августа 2015 г.
      • Это кто вам такую ересь сказал? Можно один и тот-же модуль крепить хоть ко всем страницам. Вопрос в другом. Есть Идентификатор страницы и содержимое модуля прикреплённого к одной странице, не будет отображаться на другой странице с этим же модулем. Если не сделать это нарочно какими-то не стандартными методами.
  • 25 августа 2015 г.
  • Там и категории и товары вводятся. Но вывод товаров можно легко убрать.
    и любой модуль можно прикреплять к любой странице сайта сколько угодно раз. Но на одной странице только один модуль может быть.
    • 25 августа 2015 г.
    • Не удаётся прикрепить "Интернет-магазин" к главной.
      Как и писали в той статье: для каждой страницы свой Интернет-магазин прикрепляется со своим каталогом.
      • 25 августа 2015 г.
      • Как это не удается? Все прикрепилось. Перекидайте теперь туда свои категории и все.
        • 26 августа 2015 г. , редакция: 26 августа 2015 г.
        • Цитата
          ИННА (FANTANELLA) ВЧЕРА, 21:24

          Как это не удается? Все прикрепилось. Перекидайте теперь туда свои категории и все.


          А как их перекидать (что-бы они и на главной и в каталоге остались). Заново создавать?
          • 26 августа 2015 г.
          • 1. Прикрепили модуль магазина к главной странице. У Вас теперь два магазина в системе на разных страницах
            2. Идете в категории магазина /admin/shop/category/, "Выделяете все" в групповых действиях выбираете "Переместить в раздел" и выбираете "Главная страница"

            Всё. Категории переедут во второй модуль магазина, подключенный к главной странице, а с ними и все товары.
            • 26 августа 2015 г.
            • Задача в том что-бы на странице "Каталок" тоже отображались товары.

              Я сделал как Вы написали. Категории с товарами переехали на главную, а на странице "Каталог" теперь пусто.
              • 26 августа 2015 г.
              • Если на главную прикрепили каталог. то со странице Интернет-магазин его надо удалить
              • 28 августа 2015 г.
              • Ну тут извините, DIAFAN.CMS дубли не плодит. Делать на сайте несколько страниц с разными адресами, где выходит одно и то же в логике системы не заложено.
                Один и тот же каталог товаров может быть только в одном месте. В другом месте можно вывести элементы каталога, в виде блоков, результатов поиска и т.д.
  • 26 августа 2015 г.
  • Валерий Викторович, а как вы подсказали?
    Можно мне тоже так подсказать, для общего развития
    • 26 августа 2015 г. , редакция: 26 августа 2015 г.
    • Отправил Вам в личку почти весь код.
      Можете в более "литературном" виде опубликовать на форуме, а то то что я там написал не для всех понятно.

      Можно использовать хоть на главной, хоть на какой другой странице.
      • 26 августа 2015 г.
      • Валерий Викторович, поделитесь тоже)
        • 26 августа 2015 г.
        • Все передал Инне, она надеюсь выложит на форуме в удобоваримом виде (хотя идея очень проста).
          Но могу то же самое, что Инне, выслать Вам.
      • 26 августа 2015 г.
      • Я у себя попробую это сделать и напишу) но чуть попозже, места нет сейчас)
  • 27 августа 2015 г.
  • Как я понял метод Валерия по сути тоже самое что метод Инны (в обоих случаях необходимо присваивать картинки пунктам меню).

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

    Сайт http://dlya-azs.ru/
    Примерно по середине главной страницы.
    • 27 августа 2015 г.
    • Проблема решается если поменять местами НАСОСЫ БОЧКОВЫЕ и НАСОСЫ ДЛЯ ПЕРЕКАЧКИ ДИЗ.ТОПЛИВА.

      Но вопрос почему так остается загадкой.

      Пока что оставил в исходном виде может кто-то поймёт в чём косяк.
      • 27 августа 2015 г.
      • Валерий как всегда молодец! Вот что значит профессионал.
        Очень быстро подсказал в чём моя ошибка.

        Цитата
        Сделайте вот так:
        .catmenu {
        float: left;
        height: 220px;
        margin: 10px;
        text-align: center;
        width: 200px;
        }
        и проблемы исчезнут. У Вас гуляет высота родительского блока. А когда применен float, нужно чтобы все блоки были одинаковой ширины*высоты


        Ещё раз спасибо, Валерий!!! Низкий поклон
    • 27 августа 2015 г.
    • Высота блоков меню у Вас разная, как исправить отписал в личку и только потом здесь увидел.
    • 28 августа 2015 г.
    • Вам нодо в вёрстке задать одинаковые размеры блоков при выводе (блоки с двумя строчками - выше) и недают новым с новой строки провалиться в лево!
      • 28 августа 2015 г.
      • display: inline-block
        float: none;

        В помощь, а вообще после каждого 3го раздела можно ставить <div style="clear:both"></div> и тогда будет все ровно.

        А мне больше нравится имитация таблички на дивах, тогда 100% все ровно и высота блоков в строке одинаковая становится по максимальной высоте
  • 27 августа 2015 г.
  • Тема вывода категорий товаров на форуме поднималась ни раз. Я как новичок то ли не нашел правильное решение, то ли не понял как.

    В общем попробую выложить оба метода (от Инны и от Валерия) сюда http://www.diafan.ru/solutions/

    Может кому-то пригодится, а кто-то добавит своё решение.

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке.