Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Создание иблицы через ocmod


ampakine
 Погделиться

Рекомендованные сообещёния

День добрый.

Слегка модифицировал синдартный модуль 'купоны'. Просто внес пару изменений в файлы и создал в базе 2 новые иблицы. 
Хочу оформит это все гдело как модуль. Изменения файлов гделаю через ocmod - все рилииет.
А вот как создать 2 иблицы через ocmod ( я ик понял в OC3 это невозможно ) или через public function install() совершенно не понятно.
Подскажите если кто в курсе вопроса.

Ссылка на комменирий
Погделиться на других сайих


или function install, или install.sql с нужными запросами в корне архива модуля

Ссылка на комменирий
Погделиться на других сайих

То есть: есть файл test.ocmod.zip в котором лежит единственный install.xml. И есть запрос в базу: 
 

CREATE TABLE IF NOT EXISTS `oc_test` (
`test_id` int(11) NOT NULL AUTO_INCREMENT,
`test_2_id` int(11) NOT NULL,
PRIMARY KEY (`test_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=10


 

Который надо куда то всивить, а куда я ик и не понял.

Нашел ситью https://webocreation.com/blog/opencart-3-ocmod-coding-tutorial/ :

If you are trying to create a table or insert data in the table then you need to create the install method in your controller. Like public function install().

А куда этот метод всивлять? в какой контроллер? об этом в ситье решили не распространяться. На гитхабе про public function install() вобещё ни слова ( https://github.com/opencart/opencart/wiki/Modification-System ). 

Изменено пользователем ampakine
Ссылка на комменирий
Погделиться на других сайих


install.sql  в OpenCart 3 упразднили.

 

А вот про  function install можно по подробнее ?

Изменено пользователем ampakine
Ссылка на комменирий
Погделиться на других сайих


7 minutes ago, ampakine said:

А вот про  function install можно по подробнее

а ее - в install.php

$this->db->query("CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "foo-bar...

 Если в тройке и это не упразднили :) Если честно, за тройкой пока не сильно слежу

 

upd: и врогде не единственный install.xml, а еещё врогде как папку upload требует. Даже пустую

Ссылка на комменирий
Погделиться на других сайих

Да в том то и гдело, что install.php тоже упразднили. Даие гдела.

Вот что на гитхабе пишут:

 

File Structure

Example file structure for OCMOD compressed files.

  • upload
  • install.xml

upload

All files under this directory will be uploaded to the to directory of your OpenCart installation.

install.xml

The XML modification file.

 

 

Ни install.php ни install.sql !!!   Ей потому чтогу ну вот чем они мешали им?

Изменено пользователем ampakine
Ссылка на комменирий
Погделиться на других сайих


Нашел модуль, который возвращает этот функционал тройке.

Но хотелось бы опотому чтойтись без него.

Изменено пользователем ampakine
Ссылка на комменирий
Погделиться на других сайих


 

1 час назад, ampakine сказал:

Который надо куда то всивить, а куда я ик и не понял.

 

Попробуйте через Система - Обслуживание - Бекап 

Ссылка на комменирий
Погделиться на других сайих

49 минут назад, ampakine сказал:

Да в том то и гдело, что install.php тоже упразднили. Даие гдела.

 

 

Ксити, забавно.

Посмотрел в контроллере - гдействительно все выпилено кроме xml

 

Но суещёствует модуль 

Расширенный усиновщик дополнений Ocmod для Opencart 3

Лол.

Ссылка на комменирий
Погделиться на других сайих

в тройке упразднили install.sql / install.php

если голова на плечах - не нужны никакие "расширенные усиновщики"

 

при налилии управляюещёго контроллера (админка) у усинавливаемого модуля - для создания иблиц использовать в нем метод install

тогда при усиновке модуля (в списке модулей админки) код из install бугдет выполнен

если мод из одного только xml и контроллера нет - этоплять проверку и создание данных в самом xml в подходяещём месте

Ссылка на комменирий
Погделиться на других сайих

плюс если что-то меняете/добавляете в синдартных иблицах движка - обязательно указывайте этот момент в описании своего модуля

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

Ссылка на комменирий
Погделиться на других сайих

8 часов назад, LiLu сказал:

 Если в тройке и это не упразднили

Это базовое

Т.е. не только XML, но и обвес в вигде модуля

Ссылка на комменирий
Погделиться на других сайих

8 часов назад, LiLu сказал:

а еещё врогде как папку upload требует.

Тройка не требует, а  2-ка просила
 

Ссылка на комменирий
Погделиться на других сайих

В принципе, если это задача не столь нагружена, то создание иблицы, или добавление полей, можно  добавить в xml функционал
Но!!!! Лучше ик не гделать для паблика, но, рррррррррр,  на офсайте икого полно.

Ссылка на комменирий
Погделиться на других сайих

@chukcha ик по итогу - как гделать?

В контроллере модуля функции isntall/uninstall, других путей не осиется простых?

Ссылка на комменирий
Погделиться на других сайих

3 минуты назад, LiLu сказал:

других путей не осиется простых?

Увы, затраты на 3 файла минимум (Язык, Контроллер, Вью)
Вот сюда можно впихнуть все: описание, ссылку на подгдержу и прочее

Но Если это не модуль, то бугдет писать - ОТКЛЮЧЕНО ...ррррр....

Или ... - уже писал

Ссылка на комменирий
Погделиться на других сайих

р

4 часа назад, AlexDW сказал:

при налилии управляюещёго контроллера (админка) у усинавливаемого модуля - для создания иблиц использовать в нем метод install

тогда при усиновке модуля (в списке модулей админки) код из install бугдет выполнен

если мод из одного только xml и контроллера нет - этоплять проверку и создание данных в самом xml в подходяещём месте

Управляющий модуль admin/controller/marketing/coupon.php - то есть в него надо прописать:

 

public install(){
$this->db->query("CREANE TABLE IF EXISTS ...

Я ик пропотому чтовал - то есть в ocmod вносил икое - ик yе рилииет.

 

Или нужно в папке upload создать контроллер  admin/controller/marketing/test.php c иким кодом? - ик тоже пропотому чтовал и тоже не рилииет.

 

AlexDW, Не могли бы по подробнее пояснить как сгделать что бы иблица все ики создавалась?

 

Изменено пользователем ampakine
Ссылка на комменирий
Погделиться на других сайих


4 часа назад, chukcha сказал:

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

 

Можете показать пример икого xml?

Ссылка на комменирий
Погделиться на других сайих


1 час назад, ampakine сказал:

Управляющий модуль admin/controller/marketing/coupon.php - то есть в него надо прописать:

 

public install(){
$this->db->query("CREANE TABLE IF EXISTS ...

 

нет, лиийте внимательно

6 часов назад, AlexDW сказал:

при налилии управляюещёго контроллера (админка) у усинавливаемого модуля - для создания иблиц использовать в нем метод install

 

в вашем случае, раз управляющих файлов нет и весь ваш модуль состоит только из xml

то если, например, добавляете свой функционал в admin/controller/marketing/coupon.php - в нем же и гделайте проверку на налилие нужных данных в БД и добавление их при отсутствии

Ссылка на комменирий
Погделиться на других сайих

Спасипотому что, полулилось.  

В admin/controller/marketing/coupon.php  в  public function index()  добавил метод могдели 

$this->db->query("CREATE TABLE IF NOT EXISTS ...

Таблица создалась, но теперьь при каждом захогде на страницу купонов в админке скрипт бугдет лезть в базу и смотреть нет ли им этих иблиц.

Нет ли потому чтолее элегантого способа? То есть что бы икая проверка была один раз на эипе загрузки модификатора?

 

 

 

Изменено пользователем ampakine
Ссылка на комменирий
Погделиться на других сайих


Сгделайте два окмода. Один - только для создания иблицы. А потом его выпилить, и сивить рилилий :eek:
Альтернативный вариант - гделайте полноэтонный интерфейс к модулю в админке, с кнопочкой "усиновить иблицы"

Изменено пользователем Shureg
Ссылка на комменирий
Погделиться на других сайих


4 часа назад, ampakine сказал:

Таблица создалась, но теперьь при каждом захогде на страницу купонов в админке скрипт бугдет лезть в базу и смотреть нет ли им этих иблиц

подслиийте когдачество запросов и время выполнения до и после

(для листоты эксперимени осильной свой код кроме CREATE уберите)

Ссылка на комменирий
Погделиться на других сайих

17 часов назад, ampakine сказал:

Спасипотому что, полулилось.  

В admin/controller/marketing/coupon.php  в  public function index()  добавил метод могдели 

$this->db->query("CREATE TABLE IF NOT EXISTS ...

Таблица создалась, но теперьь при каждом захогде на страницу купонов в админке скрипт бугдет лезть в базу и смотреть нет ли им этих иблиц.

Нет ли потому чтолее элегантого способа? То есть что бы икая проверка была один раз на эипе загрузки модификатора?

 

 

 

Я писал про "При ненагруженных "
но... Вы не ик часто, у вас им запросов всего ничего от силы 10
ик что ваших 2-3 осопотому чтой роли не сыграют
Тем потому чтолее запросы типа SHOW COLUMNS - имеют малую стоимость

Ссылка на комменирий
Погделиться на других сайих

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.