[Помогите] Клонирование модулей

Тема в разделе "OpenCart", создана пользователем dofus, 10 ноя 2014.

  1. dofus

    dofus

    Регистрация:
    21 апр 2013
    Сообщения:
    140
    Симпатии:
    13
    Ребята, спасайте, уже всю голову сломал, но не знаю что делать
    1) Нужно клонировать модуль рекомендуемые (при добавлении товара, на вкладки связи)
    Сам модуль рекомендуемое я оформил как дополнительная комплектация к товару, а теперь нужна такая же вкладка, точно такая же, только фурнитура, и товар естественно другой.
    Желательно по подробнее что и где копировать, переименовывать, удалять и вставлять)))

    2) Еще поставил модуль быстрого заказа
    но не для заказа товара, а для вызова замерщика, кнопка на карточке товара рядом с ценой.
    Вот нужно этот модуль клонировать, что бы поставить еще одну такую кнопку рядом, что бы всплывало окно, но уже для других целей. Т.е. два одинаковых модуля, но один это вызов замерщика, а второй узнать свою скидку.
    Тоже незнаю как клонировать, спасайте)))
     
  2. chukcha

    chukcha

    Регистрация:
    9 окт 2014
    Сообщения:
    281
    Симпатии:
    85
    Для ваших хотелок есть
    https://opencartforum.com/files/file/1882-мульти-рекомендуемые/
    Не надо ничего клонировать

    Клонировать модуль достаточно посто
    1. Переименовать файл (контроллер, языковый, возможно трогать не надо)
    2. Переименовать class
    3. При сохранении проверить в какую схему config пишет

    Повторить для магазина
    1. Переименовать файл
    2. Переименовать class
     
    dofus нравится это.
  3. dofus

    dofus

    Регистрация:
    21 апр 2013
    Сообщения:
    140
    Симпатии:
    13
    А все таки по поводу клонирования быстрого заказа, скопировал файл с др названием, переименовал классы, но ничего не получилось(
     
  4. dofus

    dofus

    Регистрация:
    21 апр 2013
    Сообщения:
    140
    Симпатии:
    13
    По первому случаю,
    скопировал и переименовал с related на related2
    добавил поле в базу
    Но вот при попытке редактировать товар, или просто при заходе на сайт
    ошибка
     
  5. chukcha

    chukcha

    Регистрация:
    9 окт 2014
    Сообщения:
    281
    Симпатии:
    85
    1. ModelCatalogProduct::getProductRelated2()
    Так все верно, такого метода нет, и метод не модуля, а модели, поэтому - уберите 2

    2. Deprecated: mysql_connect():
    Очень странная ошибка (notice) - Непонятно откуда. Вернее, понятно откуда, но эта ошибка должна относиться ко всему сайту
    Поменяйте в config.php драйвер с mysql на mysqli.
     
    dofus нравится это.
  6. dofus

    dofus

    Регистрация:
    21 апр 2013
    Сообщения:
    140
    Симпатии:
    13
    chukcha,


    1. Сделал, как ты сказал, ошибок нет, и поле появилось, но в нем тот же товар что и в рекомендуемом, а при попытке добавления, он добавляется в рекомендуемое, а не в дубль.
    При удалении товаров из дубля, и сохранении товара, ничего не пропадает, т.е. захожу, а в дубле опять тот же товар, что и в рекомендуемом.

    2. Сделал, но выдало ошибку
    Error: Could not load database file mysqli!
     
  7. chukcha

    chukcha

    Регистрация:
    9 окт 2014
    Сообщения:
    281
    Симпатии:
    85
    1. Я обращал внимание на хранение данных... Показывает потому, что другая схема хранения
    Секундочку...

    Related - это не модуль, а функционал product

    Поэтому будьте внимательны..
    Найдите все что касается realated и аккуратно склонируйте...

    Тайный смысл клонирования рекомендуемых в товаре?

    2. Поищите mysqliz - возможно поможет
     
  8. dofus

    dofus

    Регистрация:
    21 апр 2013
    Сообщения:
    140
    Симпатии:
    13

    1) Просто делаю магазин дверей, и должно быть две вкладки
    Дополнительная комплектация
    Фурнитура
    Функционал должен быть один, а товары там разные))

    Клонировал related в файлах:
    .../admin/controller/catalog/product.php
    .../admin/view/template/catalog/product_form.tpl
    .../catalog/controller/product/product.php
    .../catalog/view/theme/theme083/template/product/product.tpl
    Ну и естественно в папках langague
     
  9. chukcha

    chukcha

    Регистрация:
    9 окт 2014
    Сообщения:
    281
    Симпатии:
    85
    Вам нужно создать отдельное поле в базе для хранения этих продуктов
    И... теперь действительно нужно склонировать метод getProductRelated
     
  10. dofus

    dofus

    Регистрация:
    21 апр 2013
    Сообщения:
    140
    Симпатии:
    13
    Поле, там в базе было productrelated, я его скопировал, неправильно?
    И как и где клонировать метод getProductRelated?
     
  11. chukcha

    chukcha

    Регистрация:
    9 окт 2014
    Сообщения:
    281
    Симпатии:
    85
    Куда скопировал?
    Как назвал?
     
  12. dofus

    dofus

    Регистрация:
    21 апр 2013
    Сообщения:
    140
    Симпатии:
    13
    [​IMG]
    Вот, просто скопировал related и назвал related2 и все.
    А как правильно надо было, и как getProductRelated2 добавить?
     
  13. chukcha

    chukcha

    Регистрация:
    9 окт 2014
    Сообщения:
    281
    Симпатии:
    85
    Скажу сразу, мне не нравится система в OC хранения рекомендуемых в товаре в виде отдельной таблицы
    проще хранить их в сериализованном виде в отделном столбце
    Это отступление.

    Конечно, тебе нужен отдельный метод getRelated2, где задействуется другая таблица product_related2
     
    dofus нравится это.
  14. dofus

    dofus

    Регистрация:
    21 апр 2013
    Сообщения:
    140
    Симпатии:
    13
    Ок, а подробнее можно, что куда копировать, и куда вставлять, что переименовывать?
     
  15. chukcha

    chukcha

    Регистрация:
    9 окт 2014
    Сообщения:
    281
    Симпатии:
    85
    в модель product.php

    Как-то так

    PHP:
        public function getProductRelated2($product_id) {
            
    $product_related_data = array();
           
            
    $query $this->db->query("SELECT * FROM " DB_PREFIX "product_related2 WHERE product_id = '" . (int)$product_id "'");
           
            foreach (
    $query->rows as $result) {
                
    $product_related_data[] = $result['related_id'];
            }
           
            return 
    $product_related_data;
        }
    Это получили....


    Теперь сохранить

    в методе add и edit
    PHP:
        if (isset($data['product_related2'])) {
           foreach (
    $data['product_related2'] as $related_id) {
             
    $this->db->query("DELETE FROM " DB_PREFIX "product_related2 WHERE product_id = '" . (int)$product_id "' AND related_id = '" . (int)$related_id "'");
             
    $this->db->query("INSERT INTO " DB_PREFIX "product_related2 SET product_id = '" . (int)$product_id "', related_id = '" . (int)$related_id "'");
             
    $this->db->query("DELETE FROM " DB_PREFIX "product_related2 WHERE product_id = '" . (int)$related_id "' AND related_id = '" . (int)$product_id "'");
             
    $this->db->query("INSERT INTO " DB_PREFIX "product_related2 SET product_id = '" . (int)$related_id "', related_id = '" . (int)$product_id "'");
           }
         }
    И... в шаблоне... сделать доп поле...

    И... в модели product магазина


    Т.е. по сути работы по копипасту не мало
     
    dofus нравится это.
  16. dofus

    dofus

    Регистрация:
    21 апр 2013
    Сообщения:
    140
    Симпатии:
    13
    Если не сложно, то помоги, кроме тебя не кому, спасай))