*

andre

  • *
  • 35

Расширение информации о производителе

Добавлено текстовое поле: "Описание" в таблицу osc_manufacturers_info и соответствующий вывод в боксе "Информация о производителе" + редактирование в админке. Если это будет интересно народу, то подготовлю и выложу.

*

liraonline.by

Конечно выкладывайте мне кажется вобще чем больше инфы на сайте тем он заметней

*

Love

Конечно выкладывайте мне кажется вобще чем больше инфы на сайте тем он заметней
Может и это вам пригодится.
https://forum.oscommerce.ru/index.php?topic=563.msg2823#msg2823

*

andre

  • *
  • 35

Конечно выкладывайте мне кажется вобще чем больше инфы на сайте тем он заметней

1) Добавить поле в таблицу osc_manufacturers_info:
   название: manufacturers_description
   тип:         text
   null:         Да
2) Распаковать архив

Сделано:
1) В Админке: добавлена колонка в "Контент/Производители" в которую выводится галочкой (изображение) если есть описание; редактирование описания в textarea или в tiny editor'e;
2) В боксе: вывод за логотипом производителя описания, если есть оно. В классе includes\modules\boxes\manufacturer_info.php есть метод getData() (возвращает массив с ключами, соответствующие полям таблицы для выбранного языка), который позволяет получить данные в шаблон и там их использовать по своему усмотрению.

Особенность: Ранее бокс выдавал информацию о производителе только при выборе конкретного товара. Сейчас его можно использовать при выборе производителя в боксе "Производители". Но для этого надо в компоновке бокса "Информация о производителе" переместить под другую базовую страницу (ранее было products/info. Сейчас можно под *).

« Последнее редактирование: 12 Мар 2018 00:08:29 am от Spido »
*

andre

  • *
  • 35

Работает, но можно немножко оптимизировать:
Поскольку интерфейс подразумевает либо удаленную загрузку, либо локальный файл,
то:

 

       if (isset($data['localimages'])) {
          foreach ($data['localimages'] as $image) {
            $image = basename($image);
            $tmp_image = time().'_'.$image;

            if (file_exists('../images/products/_upload/' . $image)) {
              copy('../images/products/_upload/' . $image, '../images/products/originals/' . $tmp_image);
              @unlink('../images/products/_upload/' . $image);

              $images[] = $tmp_image;
            }
          }
        } else {
        $products_image = new img_upload('products_image');
        $products_image->set_extensions(array('gif', 'jpg', 'jpeg', 'png'));

        if ( $products_image->exists() ) {
          $products_image->set_destination(realpath('../images/products/originals'));

          if ( $products_image->parse() && $products_image->save() ) {
            $images[] = time().'_'.$products_image->filename;
          }
        }
        }


time для двух пользователей не гарантирует уникальности. Вероятность очень мала, но она есть. Можно усилить гарантию уникальности имени, заменив time() на md5(uniqid(rand().time(), true)).
Для одного файла это будет приемлемо по времени.

*

Love

Может быть, если длина файла позволит.
Хотя хеш MD5 при разных символах может повторятся.
А вот тяжело верится что даже 2 или 3 юзвера одновременно попадут в одну и туже секунду.
Да и файлы у юзвера могут не совпадать. т.к. время прибавляется к старому файлу.
Если вы в этом не уверены. поставьте для себя миллесекунды, правда длинна файла увеличится.

« Последнее редактирование: 12 Ноя 2010 22:40:49 pm от Love »

Добавил по вышеуказанной инструкции. Пропали уже заведенные производители, при создании новых выскакивает с ошибкой, модуль О производителе не показывается на сайте.