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

Как вывести определённое под. поле?

  • 18 ноября 2011 г.
  • Одно из доп. полей товара выводится в нестандартном месте. Как его вывести?
    • 18 ноября 2011 г.
    • Подробностей бы побольше. Где в нестандартном? На странице товара? Или вообще где угодно? Какого именно товара?
      • 20 ноября 2011 г.
      • На странице товара.
        Фото, слева название, чуть ниже видео (вот это и есть та самая доп. характеристика).
        Далее идёт описание, фото товара и таблица с остальными доп. характеристиками.
        • 20 ноября 2011 г.
        • Значит:
          modulesshopshop.view.php
          функция id()
          там есть вывод доп.характеристик, которые сидят в массиве $row["param"]:
          Код
          //параметры товара
          if (! empty($row["param"]))
          {
          self::param($row["param"]);
          }

          И в конце файла сама функция вывода их:
          param()
          Первым делом в этой функции скрываем вывод вашего видео.
          Например, так:
          Код
          if ($param["value"] AND $param["value"]<>"Видео") {

          Затем, в функции id() где нужно выводите эту одну характеристику в виде
          echo $row["param"][0]["value"];
          где 0, или 1, или 2 или т.д. - номер по порядку, в котором характеристика видео выводилась в списке характеристик.
          • 04 июня 2012 г.
          • Виталий, подскажите пожалуйста как в актуальной версии скрыть вывод определённого поля?
            Название и вывод функции изменились?
            Код

            if (!empty($result["param"]))
            {
            $this->get('param', 'shop', $result["param"]);
            }
            • 05 июня 2012 г.
            • Да так же, по имени, например.
              Быстрее всего такие вопросы решаются в ТП с указанием сайта, конкретного места где и что надо убрать.
            • 05 июня 2012 г.
            • Теперь вывод просто нужно править в файле modules/shop/views/shop.view.param.php
              • 05 июня 2012 г.
              • Да, спасибо
                Код
                if($param['id'] == здесь_id_параметра) {continue;};
  • 25 июня 2012 г.
  • Если таким образом выводить отдельно какой либо из параметров, при этом, при добавлении позиции оставит пустым какое либо доп.поле,на сайте увидим вместо вывода нужного поля ERROR
  • 23 июля 2012 г. , редакция: 24 июля 2012 г.
  • Эх и запутался я с этими характеристиками. Методом проб и ошибок выяснил, что CMS пофиг на id характеристики, важен её порядок в выводимой категории

    Так поле "Этаж/этажн." выводится не
    Код
    echo $result['param'][12]['value'];

    а
    Код
    echo $result['param'][5]['value'];
    - где 5, порядковый номер в выводимой категории (начиная с нуля)
    Если пропустить заполнение любой характеристики товара, то вместо отдельно выводимой характеристики увидим [ERROR#]
    С выводом отдельных характеристик в таблице категории совсем плохо, сплошные ошибки, выводит только "нулевую" характеристику, и то если в shop.view.param.php убрать
    Код
    if($param['id'] == id_параметра) {continue;}

    Код
    if (!empty($row["param"]))
    {
    $this->get('param', 'shop', $row["param"]);
    }

    • 24 июля 2012 г.
    • Цитата
      Эх и запутался я с этими характеристиками. Методом проб и ошибок выяснил, что CMS пофиг на id характеристики, важен её порядок в выводимой категории
      Евгений, что за истерика?
      Вы путаете id характеристики и массив, в котором просто сидят все характеристики перед выводом их во вьюхе. Конечно, там обычный массив, который нумеруется по порядку с нуля. В этот массив характеристики загоняются в моделе согласно их сортировке (поле sort в БД, а не id)
      И выше я писал, что обращаться к характеристике можно по ее имени
      Цитата
      Например, так:
      Код
      if ($param["value"] AND $param["value"]<>"Видео") {

      А не по id!!! Откуда Вы это себе придумали?
      В моделе можно помимо имени характеристики загонять в массив еще и реальный id характеристики и затем уже его использовать как Вы предлагаете, но по умолчанию id нигде нет, т.к. он и не нужен. И зачем мучатся? Спросили в ТП, мол, как устроено то-то и все.
  • 24 июля 2012 г. , редакция: 24 июля 2012 г.
  • Виталий, сокрытие вывода отдельной характеристики не самый важный момент в моём сообщении. Основной вопрос: почему не работает
    Код
    echo $result['param'][id]['value'];

    в shop.view.list.php
    и второе: почему, если пропустить заполнение одного из параметров выводящихся поочерёдно, то вместо значения отдельно выводимого параметра в shop.view.id.php возникает [ERROR#]
    p.s. я ничего не путаю, условие размещаемое перед циклом в shop.view.param.php работает и для страницы и для категории, но проблема с выводом, только во "вьюхе" для категории.
    Буду благодарен за помощь в решении вопроса.
    • 24 июля 2012 г. , редакция: 24 июля 2012 г.
    • Читай внимательнее - если такого элемента нет в массиве то естественно возникнет ощибка - придерживаясь кода, машина не может придумывать значения для несуществующих элементов.

      Обращайся по имени, а не по id или добавь id в моделе если хочешь по id.
      • 24 июля 2012 г.
      • Цитата
        если такого элемента нет в массиве то естественно возникнет ощибка - придерживаясь кода, машина не может придумывать значения для несуществующих элементов.

        Режим разработчика включен, и там как раз присутствует сообщение Undefined index: param.
        А как вы выводите параметры в shop.view.list.php ?
        • 24 июля 2012 г.
        • Стандартно - как и задумано.
          Код
          //параметры товара
          if (!empty($result["param"]))
          {
          $this->get('param', 'shop', $result["param"]);
          }
          • 24 июля 2012 г.
            • 24 июля 2012 г.
            • Вот для этого нужно лезть в shop.model.php и смотреть что там и как формируется.
              Или дописать функцию вывода интересующего масиива
              Код
              print_r($result["param"]);
              if (!empty($result["param"]))

              но это менее информативно, потому как причина в данном случае не понятна.
              • 10 сентября 2013 г.
              • Как решить проблему, если у товаров все поля одинаково заполнены, то все работает, а если что-то не заполнено, то порядок сбиваетс и

                Код
                echo $result['param'][12]['value'];


                уже не работает

Новости

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

Форум