Быстрое создание файловой структуры модуля Opencart

Модули в Opencart обладают одной неприятной особенностью − даже для простых модулей требуется создавать глубокую иерархию директорий. Делать это вручную крайне неудобно, поэтому я набросал маленькую функцию на bash, которая создаст всю необходимую структуру автоматически.

Приведённый ниже код нужно вставить либо в файл .bash_alias (на мой взгляд, это является хорошей практикой), либо прямо в ваш .bashrc

mk-oc-project() {
  MODULE_NAME=${1:-${PWD##*/}}
  TPL=${2:-twig}
  mkdir -p "${PWD}"/upload/{{catalog,admin}/{controller,model,language/{en-gb,ru-ru}},catalog/view/theme/default/template,admin/view/template}/extension/module
  touch "${PWD}"/upload/{admin/view,catalog/view/theme/default}/template/extension/module/"${MODULE_NAME}.${TPL}"
  touch "${PWD}"/upload/{admin,catalog}/{controller,model,language/{ru-ru,en-gb}}/extension/module/"${MODULE_NAME}".php
}

Функция принимает два опциональных аргумента:

  1. Название проекта, будет использоваться для названия всех файлов. Если не указано — будет использовано название текущей директории
  2. Формат шаблонов twig или tpl. По умолчанию — twig.

Функция создаёт директории переводов для en-gb и ru-ru.

Использовать как и любую другую команду в терминале:

$: mk-oc-project test1 # сгенерирует проект для opencart 3
$: mk-oc-project test1 tpl # сгенерирует проект для opencart 2.3
# при создании проекта файлы не перезаписываются
# поэтому комбинация выше создаст иерархию пригодную под обе платформы
|-- catalog
   |   |-- language
   |   |   |-- ru-ru
   |   |   |   |-- extension
   |   |   |   |   |-- module
   |   |   |   |   |   |-- test1.php
   |   |   |-- en-gb
   |   |   |   |-- extension
   |   |   |   |   |-- module
   |   |   |   |   |   |-- test1.php
   |   |-- controller
   |   |   |-- extension
   |   |   |   |-- module
   |   |   |   |   |-- test1.php
   |   |-- model
   |   |   |-- extension
   |   |   |   |-- module
   |   |   |   |   |-- test1.php
   |   |-- view
   |   |   |-- theme
   |   |   |   |-- default
   |   |   |   |   |-- template
   |   |   |   |   |   |-- extension
   |   |   |   |   |   |   |-- module
   |   |   |   |   |   |   |   |-- test1.tpl
   |   |   |   |   |   |   |   |-- test1.twig
   |-- admin
   |   |-- language
   |   |   |-- ru-ru
   |   |   |   |-- extension
   |   |   |   |   |-- module
   |   |   |   |   |   |-- test1.php
   |   |   |-- en-gb
   |   |   |   |-- extension
   |   |   |   |   |-- module
   |   |   |   |   |   |-- test1.php
   |   |-- controller
   |   |   |-- extension
   |   |   |   |-- module
   |   |   |   |   |-- test1.php
   |   |-- model
   |   |   |-- extension
   |   |   |   |-- module
   |   |   |   |   |-- test1.php
   |   |-- view
   |   |   |-- template
   |   |   |   |-- extension
   |   |   |   |   |-- module
   |   |   |   |   |   |-- test1.tpl
   |   |   |   |   |   |-- test1.twig

Комментарии

comments powered by Disqus
Яндекс.Метрика