Создать модуль с нуля.

Тема в разделе "OpenCart", создана пользователем passtools, 27 июл 2013.

  1. passtools

    passtools

    Регистрация:
    4 фев 2013
    Сообщения:
    231
    Симпатии:
    51
    Многим начинающим в познании opencart интересует наверное как бы самому написать модули с нуля. Такой темы я не нашел, есть только косвенные инфо. Если есть опыт с чего начать - поделитесь. Все с нуля...
    Первое это наверное какие файлы нужны и где находятся. Для админки и для публичного вывода (Визуальный вывод)
     
  2. Spartak

    Spartak

    Регистрация:
    23 дек 2012
    Сообщения:
    151
    Симпатии:
    57
    Добрый вечер
    Все зависит от того, что за модуль вы собираетесь создать

    Для отображения вашего модуля во "фронтэнде (каталоге)" нужно создать файл catalog/view/theme/имя вашей темы/template/module/имя вашего модуля.tpl
    Для его (вашего модуля) обработки, нужно создать файл catalog/controller/module/имя вашего файла.php
    Для обмена вашего модуля данными с базой, нужно:
    - либо создать файл catalog/model/module/имя вашего файла.php
    - либо подключать файлы в вашем контроллере, и вынимать из них (подключенных файлов) необходимую информацию

    Для отображения настроек вашего модуля в "бэкэнде (админке)" нужно создать файл admin/view/template/module/имя вашего файла.tpl
    Для его (вашего модуля) обработки, нужно создать файл admin/controller/module/имя вашего файла.php
    Для обмена вашего модуля данными с базой, нужно:
    - либо создать файл admin/model/module/имя вашего файла.php
    - либо подключать файлы в вашем контроллере, и вынимать из них (подключенных файлов) необходимую информацию

    P.S. А вообще, если ничего не понимаешь в коде, лучше в него (код) не лезть
     
    passtools нравится это.
  3. passtools

    passtools

    Регистрация:
    4 фев 2013
    Сообщения:
    231
    Симпатии:
    51
    $this->document->title = $this->language->get('heading_title');

    В чем разница то что выше и то что пониже. Просто выводилась ошибка - если указать верхнее. Поставил то что по ниже все работать начал.

    $this->document->setTitle($this->language->get('heading_title'));
     
  4. Spartak

    Spartak

    Регистрация:
    23 дек 2012
    Сообщения:
    151
    Симпатии:
    57
    Могу предположить, что:
    первый вариант используется в версиях 1.4.х
    второй вариант используется в версиях 1.5.х
     
    passtools нравится это.
  5. passtools

    passtools

    Регистрация:
    4 фев 2013
    Сообщения:
    231
    Симпатии:
    51
    либо создать файл admin/model/module/
    Этой папки нет, тогда вручную создать? просто есть папки: catalog design localisation report sale setting tool user. может я не правильно понял.

    $this->load->model('tool/имя вашего файла.php'); или просто подключить так.
     
  6. Spartak

    Spartak

    Регистрация:
    23 дек 2012
    Сообщения:
    151
    Симпатии:
    57
    Все правильно, такой папки "по-умолчанию" нет
    Ну так и задача у вас стоит - создать свой собственный модуль, а что он (модуль) должен делать, и нужно ли создавать файл "модели", или ограничиться подключением уже существующих файлов - это уже вам решать
     
    passtools нравится это.
  7. passtools

    passtools

    Регистрация:
    4 фев 2013
    Сообщения:
    231
    Симпатии:
    51
    есть база данных "НАЗВАНИЕ БАЗЫ"
    в этой базе есть таблица "ТАБЛИЦА". и "СТРОКА"
    Что важно писать в файле который отвечает за связь с базой.
    Например будем добавлять в "ТАБЛИЦУ" с "СТРОКА"
    В файле admin/view/template/module/имя вашего файла.tpl обычные данные с кодом
    " <td class="left">Ввод данных<input type="text" name="myname" value="" class="mynameclass" /></td> "
     
  8. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
  9. passtools

    passtools

    Регистрация:
    4 фев 2013
    Сообщения:
    231
    Симпатии:
    51
    Нет тут ничего...
    Вот простая форма
    PHP:
        <div class="content">
       
        <form action="<?php echo $action?>" method="post" enctype="multipart/form-data" id="form_s">


    <input name="www" type="text" value="">
       
       
        <a class="button" onclick="$('#form_s').submit();">Выполнить</a>
       
         
            </form>
        </div>
    Что надо дописать в файле admin/view/template/module/имя вашего файла.tpl Чтобы добавлялись данные в указанную таблицу и столбец?
    Как правильнее писать?

    Код:
    <?php
    class ModelCatalogName extends Model {
        public function addName($) {
            $this->db->query("INSERT INTO " . DB_PREFIX .  "tbl_name");
    }
    }
    ?>
     
  10. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    Для слепого и сонце ето ничего, не в обиду слепым сказанно!
    во первых без контролера в вашем случае не обойтись.
    Во 2, addName($) либо передавайте параметр ф-ции через переменную либо уберите ненужное $
    в 3, INSERT INTO " . DB_PREFIX . "tbl_name ето что такое вопше, выдернули из чего то и то неправильно )
    Хоть бы форму(шаблон) нормально оформили что и куда Вам там передать, потом бы просили о помочи.
     
  11. passtools

    passtools

    Регистрация:
    4 фев 2013
    Сообщения:
    231
    Симпатии:
    51
    А что там не нормально то? просто я начинающий (студент) Вот и не разбираюсь, прошу помочь разобраться.
    Да я вытащил с другого файла, просто сравнивал с другими файлами. А что за переменная <?php echo $action; ?> откуда она берется?

    <?php class ModelCatalogName extends Model { public function addName($www) { $this->db->query("INSERT INTO " . DB_PREFIX . "tbl_name"); } } ?>
    Подключение к MySql в контроллере тоже надо прописать? Если да то как?
     
  12. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    Про ООП прочитайте, поймете что такое $this->db->query
    То есть не надо, конект делается в системе* сам
    Ето в контролере был прописан адрес етой переменной, а он нужен чтоб дать понять куда отправлять данные формы
     
    Lasted edited by : 24 сен 2013
  13. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    648
    Симпатии:
    327
    В данном шаблоне, код: <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form_s">
    будет иметь следующий разбор:
    <form action="<?php echo $action; ?>" <!-- Редирект на страницу\скрипт, после отправки данных методом--> method="post" <!--который будет выполнен для кнопки--> с id="form_s">
    Тоесть, при клике на <a class="button" onclick="$('#form_s').submit();">Выполнить</a> у нас срабатывает отправка из данной формы значения, которое мы ввели тут: <input name="www" type="text" value="">

    Для того, что б это форма передавала через контроллер значения, сперва нужно создать индекс, для нашей страницы:

    <?php class ControllerCatalogName extends Model {
    public function index() {
    $this->data['action'] = $this->url->link('catalog/controller/addName');
    }
    public function addName($data) {
    $this->db->query("INSERT INTO " . DB_PREFIX . "tbl_name");
    }
    } ?>
     
    Последнее редактирование: 24 сен 2013
    passtools нравится это.
  14. Bogdan

    Bogdan

    Регистрация:
    25 фев 2013
    Сообщения:
    228
    Симпатии:
    104
    Вполне вероятно, что свойство "title" в объекте "document" имеет статус "private", соответственно поменять его можно только методомй этого же объекта
     
    passtools и NikeSuperman нравится это.
  15. passtools

    passtools

    Регистрация:
    4 фев 2013
    Сообщения:
    231
    Симпатии:
    51
    Что то у меня каша в голове. Я правильно понимаю последовательность обращений файлов:
    1. В первую очередь отправляем данные из файла admin/view/template/module/имя вашего файла.tpl
    2. К файлу контроллеру admin/controller/module/имя вашего файла.php
    3. А далее к файлу admin/model/tool/имя вашего файла.php (я туда закинул)
    и только потом добавляет в базу данных?

    Если так то зачем после 3 пункта еще раз отправлять данные через контроллер? (Может кого то глупый вопрос, просто у меня столько инфо в голове и все смешалось. )
     
  16. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    648
    Симпатии:
    327
    Во первых, грамотней всего, по структуре MVC запросы в\из базы делать в файлк модели, используя функции в контроллере.
    Во вторых, предлагаю вместо абстрактного срача, перейти к конкретной задаче.
    Наведите пример того, что нужно реализовать (без фанатизма).
     
    Последнее редактирование: 29 сен 2013
    Bogdan и passtools нравится это.
  17. passtools

    passtools

    Регистрация:
    4 фев 2013
    Сообщения:
    231
    Симпатии:
    51
    Модуль, чтобы добавлял к продуктам ШИРИНУ ВЫСОТУ И ДЛИНУ (размер одинаковый для всех - коробка) такие поля как length width height , по умолчании там 0. Для таблицы oc_product.
    Чтобы выбирать категорию и добавлялись только выбранной категории все эти данные.
    admin/controller/module/volume.php
    admin/view/template/module/volume.tpl
    admin/model/tool/volume.tpl
     
    Lasted edited by : 28 сен 2013
  18. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    648
    Симпатии:
    327
    Итак, есть уже наброски...
    как стержень, создаем файл контроллера, от которого будет отталкиваться как модель, так и файл отображения, так и файл языковых данных... стартуемс:
    Контроллер:
    TPL файл:
    Ладно, уговорили, выложу последний файл - ключ к успеху. ставить по адресу: admin\model\module\volume.php

    Специально повторюсь, ВСЕ ФАЙЛЫ РАЗЛОЖИТЬ ПО ИХ ПУТЯМ и тогда будет всё работать.
     
    Последнее редактирование: 30 сен 2013
    passtools нравится это.
  19. buldozer

    buldozer

    Регистрация:
    7 окт 2012
    Сообщения:
    105
    Симпатии:
    43
    сходи СЮДА тут много вкусных уроков и ПО PHP в частности -> Видеоуроки ->Программирование
    или Литература -> Языки Программирования
    Не в обиду сам там много чего скачал...
     
  20. passtools

    passtools

    Регистрация:
    4 фев 2013
    Сообщения:
    231
    Симпатии:
    51
    Как подключить теги которые можно выбрать? Видел еще какие то теги, например [product]

    Можно использовать теги:
    {ID} - номер заказа
    {DATE} - дата заказа
    {TIME} - время заказа
    {SUM} - сумма заказа
    {PHONE} - телефон клиента

    Все эти теги стандартные opencart или самим придумывать?