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

Помогите разобраться с выводом характеристики товара в карточке

  • 26 декабря 2015 г. , редакция: 11 января 2017 г.

  • Ребята, помогите, второй день сижу, не могу понять что случилось.

    На странице товара в разных местах выводятся разные характеристики. Одна из них - поле с визуальным редактором. Выведена вот таким кодом:
    Код
    if(! empty($result["ids_param"][10]))
    {
    echo '<div class="varianty"><h3>'.$this->diafan->_('Варианты нанесения:').'</h3>'
    .$result["ids_param"][10]["value"].
    '</div>';
    }

    Все было хорошо и работало, до тех пор, пока я не обновила CMS. После обновления эта характеристика показывается, но в нее вставлены картинки и вот они и не показываются, т.к.там bath_href почему-то в пути к ним появляется.

    и здесь справа все характеристики подряд выходят по дефолтному файлу shop.view.param и там эти гадкие картинки есть.

    Подскажите, пожалуйста, что не так у меня???

    ЗЫ. еще заметила, что когда включаю режим разработки, то все скрипты отключаются, но ошибок не показывает никаких.


    • 26 декабря 2015 г. , редакция: 26 декабря 2015 г.
    • В указанном Вами примере BASE_PATH выводится как строчка, а не как константа. Возможно в скрипте не корректно используются кавычки (проверте скрипт на предмет открытия и закрытия кавычками выводимых строк).
      Обратите внимание на правила использования кавычек. Если у Вас так
      Код

      echo 'какой-то текст BASE_PATH какой-то текст';

      то выведет это: какой-то текст BASE_PATH какой-то текст
      если так
      Код

      echo "какой-то текст BASE_PATH какой-то текст";

      то выведет это: какой-то текст http://site.ru/ какой-то текст

      • 26 декабря 2015 г.
      • Виталий, спасибо за ответ.
        картинки вставляются пользователем с помощью визуального редактора из админпанели. а он сам там в кавычки заворачивает. Где это искать?
        • 26 декабря 2015 г.
        • Цитата
          картинки вставляются пользователем с помощью визуального редактора из админпанели

          Есть ли у Вас возможность воспроизвести те же действия на демо версии http://demo.cms.diafan.ru/
          Если там вывод картинок будет корректный, значит искать надо в кастомизированных файлах (ошибка вероятнее всего во вьюшке)
          • 26 декабря 2015 г.
          • Дело в том, что дефолтным файлом shop.view.param все выводится, а вот когда отдельно характеристика выводится, то ссылки такие становятся. А выводится она таким кодом, как я выше написала
      • 26 декабря 2015 г.
      • но вообще, я на втором сайте по файликам устанавливала шаблон на свежую версию cms
        и затык этот случился именно на файле shop.view.id
        Т.е. в дефолте все показывает, а у меня нет(((
        • 26 декабря 2015 г. , редакция: 26 декабря 2015 г.
        • Вы кеш сбросили?
          Скинте данный файл, скажу ответ
          • 26 декабря 2015 г. , редакция: 26 декабря 2015 г.
          • кэш отключен, но я его все равно сбрасываю .

            Файлик выслала.
            • 26 декабря 2015 г.
            • Ошибка здесь
              Код

              if(! empty($result["ids_param"][10]))
              {
              echo '<div class="varianty"><h3>'.$this->diafan->_('Варианты нанесения:').'</h3>';
              echo $result["ids_param"][10]["value"];
              echo '</div>';
              }

              нужно так
              Код

              if(! empty($result["ids_param"][10]))
              {
              echo '<div class="varianty"><h3>'.$this->diafan->_('Варианты нанесения:').'</h3>';
              echo $this->htmleditor($result["ids_param"][10]["value"]);
              echo '</div>';
            • 27 декабря 2015 г. , редакция: 27 декабря 2015 г.
            • Мой ответ был не полным, поясню

              Вариант 1. Хорошо, замените: BASE_PATHE
              на символ: /
              все должно заработать

              Или

              Вариант 2. Да, в визуальном редакторе нельзя использовать константы, потому в место BASE_PATHE, надо использовать <insert name="path">
              Пример:
              Код

              <img src="<insert name="path">img/sample.png" />

              При этом обязательно
              Код

              echo $this->htmleditor($result["ids_param"][10]["value"]);
              • 27 декабря 2015 г. , редакция: 27 декабря 2015 г.
              • Дело в том, что я вообще ничего не использую.
                Если переключиться в html, то содержимое этой характеристики выглядит так:
                Код
                <p><a href="http://2.u0136807.z8.ru/userfiles/editor/medium/196_correggio-barhat-klassicheskiy-vyushka1.jpg" rel="prettyPhotoeditor1"><img src="http://2.u0136807.z8.ru/userfiles/editor/medium/196_correggio-barhat-klassicheskiy-vyushka1.jpg" alt="" title="" height="534" width="800">Классический бархат</a><a href="http://2.u0136807.z8.ru/userfiles/editor/medium/195_correggio-mokryiy-shelk1.jpg" rel="prettyPhotoeditor1"><img src="http://2.u0136807.z8.ru/userfiles/editor/medium/195_correggio-mokryiy-shelk1.jpg" alt="" title="" height="534" width="800">Мокрый шелк</a><a href="http://2.u0136807.z8.ru/userfiles/editor/medium/194_correggio-fakturnyiy1.jpg" rel="prettyPhotoeditor1"><img src="http://2.u0136807.z8.ru/userfiles/editor/medium/194_correggio-fakturnyiy1.jpg" alt="" title="" height="534" width="800">Фактурный</a></p>
                <p><img src="http://2.u0136807.z8.ru/userfiles/editor/medium/321_mineraly-gladkiy-kamen.jpg" alt="" title="" height="712" width="800"></p>


                Я вообще не понимаю, откуда там появляется в итоге BASE_PATH.
                При этом в общей куче через стандартный файл shop.view.param эти картинки выводятся, а когда отдельно характеристику вставляешь, то нет.
                Если бы это были варианты 1 и 2, то картинки бы не показывались в любом случае, не так ли?
  • 27 декабря 2015 г. , редакция: 27 декабря 2015 г.
  • Цитата
    Дело в том, что я вообще ничего не использую.
    Если переключиться в html, то содержимое этой характеристики выглядит так:

    Цитата
    Если бы это были варианты 1 и 2, то картинки бы не показывались в любом случае, не так ли?

    Думаю именно так, смотрите на картинки ниже - то, что есть по Вами указанному адресу: http://2.u0136807.z8.ru/shop/shyolk-barkhat-metall/correggio-korredzho/
    Вы исправили в shop.view.id.php?
    Код
    echo $this->htmleditor($result["ids_param"][10]["value"]);

    Заменили в визуальном редакторе содержимое характеристики (id = 10), т.е. нужно было заменить
    Код
    BASE_PATH

    на
    Код
    <insert name="path">

    Цитата
    Я вообще не понимаю, откуда там появляется в итоге BASE_PATH

    Я понял, что содержимое характеристики идет из визульного редактора, в котором присутствует BASE_PATHE.
    Цитата
    Виталий, спасибо за ответ.
    картинки вставляются пользователем с помощью визуального редактора из админпанели.
    • 27 декабря 2015 г. , редакция: 27 декабря 2015 г.
    • Необходимо проверить, что генерит визуальный редактор (переведите его в режим HTML, т.е. отключите его) и посмотрите, что там
    • 27 декабря 2015 г. , редакция: 27 декабря 2015 г.
    • Виталий, мне кажется мы с вами друг друга не понимаем (((

      Я не вставляю BASE_PATH в ссылку, она сама формируется, когда вставляешь картинку и выглядит нормально:

      Код
      <a href="http://2.u0136807.z8.ru/userfiles/editor/medium/196_correggio-barhat-klassicheskiy-vyushka1.jpg" rel="prettyPhotoeditor1"><img src="http://2.u0136807.z8.ru/userfiles/editor/medium/196_correggio-barhat-klassicheskiy-vyushka1.jpg" alt="" title="" height="534" width="800">Классический бархат</a>



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

      И тогда главный вопрос, почему стандартный вывод работает без замены ??? : http://prntscr.com/9izo63

      Да в shop.view.id я все исправила.
      • 27 декабря 2015 г. , редакция: 27 декабря 2015 г.
      • Правильно ли я Вас понимаю: ошибка возникает после использования визуального редактора, при этом если вставлять теже картинки, но без использования визуального редактора - ошибок нет. Также, если убрать все кастомизированные файлы, то поведение cms аналогичное? Если так, то надо разбираться с алгоритном в админке, т.е. необходимо проверить: после нажатия кнопки сохранить, проходит ли данное поле доп. обработку перед тем, как оно занесется в базу данных. Т.е. посмотрите, как выглядет данное значение в базе данных. Оно одинаковое?
        • 27 декабря 2015 г.
        • Ошибка возникает, когда пытаешься вывести характеристику типа "Поле с визуальным редактором", содержащую картинки, одну, саму по себе на странице товара.
          А стандартным выводом через файл shop.view.param она выводится без проблем на этой же странице.
          Отдельно - выводится, но с битыми ссылками.
          И там и там используется одно и тоже содержимое характеристики, оно не меняется))) И картинки все вставлены с помощью визуального редактора.
        • 27 декабря 2015 г.
        • в базе данных ссылки записаны c BASE_PATH
        • 27 декабря 2015 г. , редакция: 27 декабря 2015 г.
        • Цитата
          Также, если убрать все кастомизированные файлы, то поведение cms аналогичное?

          Дело в том, что в дефолтных файлах вывод характеристик осуществлен только через shop.view.param, а он и так работает.

          Но если убрать полностью шаблон, оставив только измененный shop.view.id, то отдельный вывод характеристики тоже не работает корректно.
  • 27 декабря 2015 г.
  • в shop.view.id.php в место
    Код

    if(! empty($result["ids_param"][10]))
    {
    echo '<div class="varianty"><h3>'.$this->diafan->_('Варианты нанесения:').'</h3>';
    echo $result["ids_param"][10]["value"];
    echo '</div>';
    }

    напишите так
    Код

    foreach ($result["param"] as $param)
    {
    if (empty($param) || $param["id"] != '10') continue;
    echo '<div class="varianty"><h3>'.$this->diafan->_('Варианты нанесения:').'</h3>';
    echo $param["value"];
    echo '</div>';
    break;
    }

    Сообщите результат.
    • 27 декабря 2015 г. , редакция: 27 декабря 2015 г.
    • Заработало)))) Спасибо огромное!!!


Новости

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

Форум