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

Вывод характеристики товара в shop.view.buy_form

  • 24 ноября 2015 г.
  • Почитала: http://www.diafan.ru/dokument/full-manual/examples/extra-goods-prop/ - не получилось.
    Пошерстила форум, намеки есть, но тоже не получается.

    Взяла файл shop.view.buy_form и пытаюсь вывести туда характеристику.
    Хочу, чтобы получилось так: 150 руб/шт или 150 руб/п.м.
    "штука" и "погонный метр" - это доп.характеристика, которую я при создании товара выбираю.
    20 - id характеристики.

    Пыталась вставить это
    Код
    if(! empty($result["ids_param"][20]))
    {
    echo $result["ids_param"][20]["name"].': '.$result["ids_param"][20]["value"];
    }


    Но ничего никуда не выводится. Что-то я не то вставляю или вообще не туда
    • 24 ноября 2015 г.
    • попробуйте $row вместо $result
      • 24 ноября 2015 г.
      • Не помогло(

        Попробовала свой код вставить в файл shop.view.id.php - все вывелось как надо.
        Следовательно в этом блоке (где цена) скорее всего дополнительно прописать запрос характеристики нужно.
  • 01 декабря 2015 г.
  • Общаемся с ТП уже неделю. Может быть кто-нибудь поможет ускорить процесс и разобраться?

    Файл тот же самый: shop.view.buy_form.php

    Пришла к такому коду
    Код
    if(! empty($result["row"]["ids_param"][20]))
    {
    echo $result["row"]["ids_param"][20]["name"].': '.$result["row"]["ids_param"][20]["value"];
    }


    Добилась того, что
    Код
    $result["row"]["ids_param"][20]["name"]

    выводит наименование характеристики.

    Далее идет
    Код
    $result["row"]["ids_param"][20]["value"]

    который выводит вместо значения характеристики Array.

    Вставка перед выводом характеристики
    Код
    print_r($result['row']['ids_param']);

    Позволяет увидеть это:
    Код
    [20] => Array
    (
    [id] => 20
    [name] => Цена за
    [value] => Array
    (
    [0] => шт.
    )


    Т.е. не пойму, чем дополнить код, чтобы выводилось значение, предназначенное для конкретной карточки товара.
    • 01 декабря 2015 г.
    • У меня вот такой код вывел значение характеристики:
      Код
      if(! empty($result ["row"]["ids_param"][1]))
      {

      echo $result ["row"]["ids_param"][1]["value"];
      }

      в файле buy_form.
      • 02 декабря 2015 г.
      • Прямо до запятой скопировала ваш код и... то же самое.
        Спасибо.
        Значит буду ждать ТП. Где-то у меня крупный косяк затесался, раз у вас получилось, а у меня ошибка.
        • 02 декабря 2015 г. , редакция: 02 декабря 2015 г.
        • Цитата
          Где-то у меня крупный косяк затесался

          Так правильно Вам Denis (Drachoon) [теория] и Dmitry (weissfl) [практика] говорят.
          Есть в $result["row"]["ids_param"][20] есть $result["row"]["ids_param"][20]["type"], который поясняет, что за фрукт в $result["row"]["ids_param"][20]["value"].
          В принципе Вам даже print_r($result['row']['ids_param']);
          пояснил что там
          Цитата

          [20] => Array
          (
          [id] => 20
          [name] => Цена за
          [value] => Array
          (
          [0] => шт.
          )

          Ладно, я коротко
          Код

          echo $result["row"]["ids_param"][20]["value"][0];

          выведет
          Код

          шт.

          Ну если все равно
          Цитата
          Где-то ... крупный косяк затесался ...

          пишите ...
          • 02 декабря 2015 г.
          • Спасибо. ТП предложила именно такой вариант.
            Результат выложила ниже.
  • 01 декабря 2015 г. , редакция: 01 декабря 2015 г.
  • Смотрим где выводятся эти характеристики ->
    shop.view.id.php
    Код

    //параметры товара
    if (!empty($result["param"]))
    {
    echo $this->get('param', 'shop', array("rows" => $result["param"], "id" => $result["id"]));
    }

    Уоу круто. Подключение шаблона - как это работает можно посмотреть в
    includes/template.php
    Код
    /**
    * Подключает шаблон
    *
    * @param string $name имя функции
    * @param string $module название модуля
    * @param mixed $result передаваемые в шаблон данные
    * @param string $template атрибут template в шаблонном теге
    * @return string
    */
    public function get($name, $module, $result, $template = '')
    {

    $result впрочем не очевидно используется. Значит надо узнать что попадает в $result["param"] и $result["id"] на момент вызова в shop.view.id.php
    как то так.
    После этого можно будет уже думать дальше откуда можно взять эти данные.
    • 01 декабря 2015 г.
    • Вы неверно поняли суть вопроса.

      Цитата
      Попробовала свой код вставить в файл shop.view.id.php - все вывелось как надо.


      Проблема вывести то же самое в файле shop.view.buy_form.php.
  • 01 декабря 2015 г.
  • Делал так:

    В начале файла shop.view.buy_form

    Код
    $params = array();
    foreach ($result['row']['param'] as $param)
    {
    $params[$param['name']]=$param;
    }


    А потом выводим нужную характеристику так:

    Код
    echo $params['Название характеристики']['value'];


    Если я конечно правильно понял что вам надо.
    • 01 декабря 2015 г.
    • Спасибо, Дмитрий. Пытаюсь применить на деле, пока не получается.
  • 02 декабря 2015 г.
  • Решение (если вдруг кто-то тоже будет делать подобное):

    Код
    if(! empty($result["row"]["ids_param"][20]))
    {
    echo '/'.$result['row']["ids_param"][20]["value"][0];
    }


    Выводится значение характеристики, выбранное для конкретного товара. В моем случае цена за штуку, погонный метр, квадратный метр и т.д.
    • 02 декабря 2015 г.
    • На самом деле я бы не делал это через характеристики, а завёл бы отдельное поле типа список записал бы в него всевозможные значения и вперёд.
  • 03 декабря 2015 г. , редакция: 03 декабря 2015 г.
  • Тут самое главное - воспользоваться функцией print_r();
    а лучше так
    Код
    echo '<pre>';
    print_r($result["row"]);
    echo '</pre>';

    увидите всю структуру массива.

    У меня была задача выводить погонные метры и прочие:
    echo $result["row"]["ids_param"][1]["value"];
    Замените единицу на id вашей характеристики
  • 24 октября 2018 г. , редакция: 24 октября 2018 г.
  • Код
    if(! empty($result["names_param"]["Материал"]))
    Работает
    Код
    if(! empty($result["ids_param"][3]))
    Не работает.

    Выше рассмотрены случаи, когда характеристику выводим в карточке товара. (c) Марина Дорохина (DIAFAN.CMS)

    Итогово, какая конструкция работает в shop.view.id?
  • 07 ноября 2018 г.
  • //вывод доп. характеристики
    if(!empty($result["ids_param"][12])){
    echo'<div class="block-piss">';
    echo $result["ids_param"][12]["name"].': '.$result["ids_param"][12]["value"][0];
    echo'</div>';
    }

Новости

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

Форум