*

andre

  • *
  • 35

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

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

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

*

Love

  • *
  • 1943

(здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)
Конечно выкладывайте мне кажется вобще чем больше инфы на сайте тем он заметней
Может и это вам пригодится.
(здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)

*

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. Сейчас можно под *).

Пример можно посмотреть по (здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)

*

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

  • *
  • 1943

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

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

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