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

Как получить из БД название файла изображения категории?

  • 16 мая 2017 г. , редакция: 16 мая 2017 г.
  • Шарил на форуме, курил мануалы, просветлялся, но не постиг...
    Как я понял, если я хочу выводить это в карточке товара, в файле shop.view.id.php должно быть прилеплено что-то типа этого

    $catimg = DB::query("SELECT name FROM {image} WHERE module_name='shop' AND element_id=$result[cat_id] AND element_type='cat' ");

    Но при таком подходе мне пишут, что таблицы image нету. Хотя она какбэ есть. Что ставит в тупик и печально.

    (10 минут спустя)

    Посмотрел таблицу image, там вообще нет значений cat в поле element_type. Таким образом, теперь я в принципе не понимаю, откуда у меня вылупляется изображение категории на первой странице каталога... Что печально полностью.
    • 16 мая 2017 г.
    • Понятно, что ничего не понятно.
      Вывод изображения категории настраивается прямо в админке.
      Цитата
      в файле shop.view.id.php

      Это файл карточки товара. При чем тут категория?
      • 16 мая 2017 г.
      • Мне в карточке товара нужно картинку категории этого товара привесить, но в оригинале оно там не выводится, выводится изображение именно товара. А мне нужна картинка категории. Которую хз как выцеплять.
  • 16 мая 2017 г.
  • К текущему моменту я понял, что в шаблоне первой страницы каталога ссылка на картинку выцепляется из переменной img, которая входит в массив cat, который генерируется из элементов массива result с ключом categories. Но. Как генерируется массив result?
  • 17 мая 2017 г.
  • А просто методом get не пробовали?
    • 18 мая 2017 г.
    • Не, не помогает. При попытке вставить во вьюху товара строку

      $catimg = $this->diafan->_images->get ($result["cat_id"]);

      выдает простыню вида

      Missing argument 2 for Images_inc::get(), called in D:\OpenServer\domains\zoo\custom\my\modules\shop\views\shop.view.id.php on line 38 and defined D:\OpenServer\domains\zoo\custom\my\modules\images\images.inc.php:58
      Missing argument 3 for Images_inc::get(), called in D:\OpenServer\domains\zoo\custom\my\modules\shop\views\shop.view.id.php on line 38 and defined D:\OpenServer\domains\zoo\custom\my\modules\images\images.inc.php:58
      Missing argument 4 for Images_inc::get(), called in D:\OpenServer\domains\zoo\custom\my\modules\shop\views\shop.view.id.php on line 38 and defined D:\OpenServer\domains\zoo\custom\my\modules\images\images.inc.php:58
      Missing argument 5 for Images_inc::get(), called in D:\OpenServer\domains\zoo\custom\my\modules\shop\views\shop.view.id.php on line 38 and defined D:\OpenServer\domains\zoo\custom\my\modules\images\images.inc.php:58
      Missing argument 6 for Images_inc::get(), called in D:\OpenServer\domains\zoo\custom\my\modules\shop\views\shop.view.id.php on line 38 and defined D:\OpenServer\domains\zoo\custom\my\modules\images\images.inc.php:58
      Undefined variable: element_type D:\OpenServer\domains\zoo\custom\my\modules\images\images.inc.php:61
      Некорректно задан тип элемента. D:\OpenServer\domains\zoo\custom\my\modules\images\images.inc.php:548
      ob_start(): output handler 'ob_gzhandler' cannot be used twice
      ob_start(): failed to create buffer

      Если тупо скопипастить

      get (string $variation, integer $element_id, string $module_name, string $element_type, integer $site_id, string $alt, [integer $param_id = 0], [integer $count = 0], [string $link_to = ''], [string $tmpcode = ''])

      То начинает ругаться, что не хватает то ли кавычек, то ли скобок; если расставить скобки вокруг указателей типа переменных (получается такое)

      $catimg = $this->diafan->_images->get ((string) $variation, (integer) $element_id, (string) $module_name, (string) $element_type, (integer) $site_id, (string) $alt, [(integer) $param_id = 0], [(integer) $count = 0], [(string) $link_to = ''], [(string) $tmpcode = '']);

      То вываливает простыню

      Undefined variable: variation D:\OpenServer\domains\zoo\custom\my\modules\shop\views\shop.view.id.php:38
      Undefined variable: element_id D:\OpenServer\domains\zoo\custom\my\modules\shop\views\shop.view.id.php:38
      Undefined variable: module_name D:\OpenServer\domains\zoo\custom\my\modules\shop\views\shop.view.id.php:38
      Undefined variable: element_type D:\OpenServer\domains\zoo\custom\my\modules\shop\views\shop.view.id.php:38
      Undefined variable: site_id D:\OpenServer\domains\zoo\custom\my\modules\shop\views\shop.view.id.php:38
      Undefined variable: alt D:\OpenServer\domains\zoo\custom\my\modules\shop\views\shop.view.id.php:38
      Некорректно задан тип элемента. D:\OpenServer\domains\zoo\custom\my\modules\images\images.inc.php:548
      ob_start(): output handler 'ob_gzhandler' cannot be used twice
      ob_start(): failed to create buffer

      Смысл которой сводится к тому, как я понял, что "кто все эти переменные?".
      В общем, не помогло пока.



      • 18 мая 2017 г.
      • Вам уже сообщил Виталий (DIAFAN.CMS) ссылку на документацию. Еще раз прочитайте.
        Цитата
        array get (string $variation, integer $element_id, string $module_name, string $element_type, integer $site_id, string $alt, [integer $param_id = 0], [integer $count = 0], [string $link_to = ''], [string $tmpcode = '']) – Получает изображения, прикрепленные к элементу модуля.

        string $variation: размер изображения, указанный в настройках модуля
        integer $element_id: номер элемента, к которому прикреплены изображения
        string $module_name: название модуля, по умолчанию модуль, прикрепленный к текущей странице
        string $element_type: тип данных (element – элемент (по умолчанию), cat – категория, brand – производитель)
        integer $site_id: страница сайта, к которой прикреплен элемент
        string $alt: альтернативный текст получаемых изображений
        integer $param_id: номер параметра, к которому прикреплено изображение
        integer $count: количество изображений
        string $link_to: размер изображения, на который ведет ссылка
        string $tmpcode: временный идентификационный код элемента, к которому прикреплены изображения


        Цитата
        Если тупо скопипастить

        get (string $variation, integer $element_id, string $module_name, string $element_type, integer $site_id, string $alt, [integer $param_id = 0], [integer $count = 0], [string $link_to = ''], [string $tmpcode = ''])
        А вот так не надо делать. Если прочитаете внимательно то, на что Вам указали ссылкой, то найдете кучу примеров. Вот один из них
        Цитата
        Пример:

        // получаем два изображения, прикрепленные к товару,
        // ссылка с изображения ведет на увеличенную копию изображения,
        // в модуле «Магазин» в файле modules/shop/shop.model.php
        $images = $this->diafan->_images->get("medium", $id, "shop", "element", $site_id, "Название товара", false, 2, "large");

        // выводим полученные файлы в шаблоне модуля
        // в файле modules/shop/views/shop.view.id.php
        foreach($images as $img)
        {
        echo '<a href="'.BASE_PATH_HREF.$img["link"].'">'
        .'<img src="'.$img["src"].'" width="'.$img["width"]
        .'" height="'.$img["height"]
        .'" alt="'.$img["alt"].'" title="'.$img["title"].'">'
        .'</a> ';
        }
  • 18 мая 2017 г. , редакция: 18 мая 2017 г.
  • В общем, в итоге
    Код
    //вывод изображений категории

    $imgid=(int)$result["cat_id"];
    $catimg = $this->diafan->_images->get('medium', $imgid, 'shop', 'cat', $this->diafan->_site->id, false, 0, 0, 'large');
    $img = $catimg["0"];
    echo '<div class="shop_cat_img">';
    switch ($img["type"])
    {
    case 'animation':
    echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$imgid.'shop]">';
    break;
    case 'large_image':
    echo '<a href="'.BASE_PATH.$img["link"].'" rel="large_image" width="'.$img["link_width"].'" height="'.$img["link_height"].'">';
    break;
    default:
    echo '<a href="'.BASE_PATH_HREF.$img["link"].'">';
    break;
    }
    echo '<img src="'.$img["src"].'" width="'.$img["width"].'" height="'.$img["height"].'" alt="'.$img["alt"].'" title="'.$img["title"].'">'
    . '</a> ';
    echo '</div>';

    Осталось понять еще, как заставить эту картинку выводиться в мобильной версии...

Новости

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

Форум