Opencart 3.x - быстрое клонирование дефолтной темы

Автор Val_Ery, 15-02-2020, 21:37:03

« назад - далее »

Val_EryTopic starter

Всем привет!

Хочу поделиться маленьким bash-скриптом, который когда-то написал для тупого клонирования предустановленной темы Опенкарт. Может пригодится, к примеру, при разработке своего собственного оформления, избавляя от необходимости создавать руками нужные файлы и каталоги с нуля.

В общем, если кому будет полезен - я буду рад. :)

Что делает скрипт:

- выводит предложение ввести название новой темы
На данный момент название надо вводить латиницей, без пробелов и маленькими буквами. Если необходимо, могу добавить возможность ввода на русском с транслитерацией и удалением пробелов. Обращайтесь...

- проверка, откуда запускается скрипт
Должен выполняться из корня сайта

- тупое копирование всего каталога default в каталог с названием, которое указано в качестве названия темы

- создаются соответствующие файлы MVC-L в каталогах admin/language..., admin/view... и admin/controller
При этом в каждым таком php/twig файле автоматом меняется название темы с default на необходимое.

Что не делает:
- про транслитерацию и удаление пробелов уже написал
- не добавляет "Заголовка темы" в админ-панели на русском языке
Всё это можно дописать, если кому-нибудь потребуется. Пишите...

Как использовать:
- создать в корне сайта файл с любым названием, типа theme_clone.sh
Под корнем сайта я подразумеваю расположение на одном уровне с каталогами admin, catalog etc.

[spoiler=Корневой каталог]$ tree -L 1
.
├── admin
├── catalog
├── config-dist.php
├── config.php
├── deleted-files.zip
├── image
├── index.php
├── theme_clone.sh
├── php.ini
├── robots.txt
└── system
[/spoiler]

- скопировать этот код
#!/bin/bash

#
# Разместите скрипт в корневом каталоге сайта: на одном уровне с каталогами admin, catalog, image, system
# Для добавления локализованного названия темы необходимо в каталоге (на примере русской локализации)
# admin\language\ru-ru\extension\theme добавить файл $themename.php и прописать для параметра $_['heading_title']
# желаемое название
#

folder=${PWD##*/}
themes=catalog/view/theme
language=admin/language/en-gb/extension/theme/
view=admin/view/template/extension/theme/
controller=admin/controller/extension/theme/
read -p "Название новой темы (латиницей): " themename

if [[ -d admin ]]; then
themenameup=`echo $themename | sed 's/./\U&/1'`
cp -r $themes/default $themes/$themename
cp $language/default.php $language/$themename.php
sed -i "s/Default Store Theme/$themenameup theme/g" $language/$themename.php
sed -i "s/default store theme/$themename theme/g" $language/$themename.php
cp $view/default.twig $view/$themename.twig
sed -i "s/theme_default/theme_$themename/g" $view/$themename.twig
cp $controller/default.php $controller/$themename.php
sed -i "s/theme_default/theme_$themename/g" $controller/$themename.php
sed -i "s/theme\/default/theme\/$themename/g" $controller/$themename.php
sed -i "s/ControllerExtensionThemeDefault/ControllerExtensionTheme"$themenameup"/g" $controller/$themename.php
sed -i "s/default/$themename/g" $controller/$themename.php
sed -i "s/default/$themename/g" $themes/$themename/template/common/header.twig
else
echo "Перенесите скрипт в корневой каталог сайта и попробуйте снова"
fi


- файлу theme_clone.sh дать права на исполнение, можно вообще так
[spoiler]chmod 777 theme_clone.sh[/spoiler]

- запустить файл
[spoiler]./theme_clone.sh[/spoiler]

Если работаете с удаленным сервером, то подключаетесь по ssh. Если же разработка ведется локально и на 10-ой Винде, рекомендую установить подсистему Линукс. Тогда вы сможете использовать стандартный Убунту терминал со всеми доступными в нем командами (включая выполнение bash-скриптов).

P.S. В скрипте добавил комментарий, в котором описал, как добавить Заголовок темы.

Маленькое видео, как это работает: https://yadi.sk/i/3rEkTTiWjFjQfw
  •