OCMOD Helper для PHPSTORM (Opencart)

dell2201

Разрушитель (V)
Сообщения
304
Реакции
227
Баллы
4 747
По мотивам https://opencartforum.com/blogs/entry/559-ocmod-helper-dlya-sublime/

Так как sublime не пользуюсь, а идея оказалась очень даже классная для разработки, на постоянке юзаю только PhpStorm.
Вот только писать расширения для PhpStorm, тем более не зная java, такое себе, поэтому подключаем для написания кода Gemini :)

Использование плагина "LivePlugin"
1.Зайдите в Settings -> Plugins, найдите и установите плагин LivePlugin.
2.Перезагрузите IDE.
3.Справа появится панель Plugins. Откройте её.
4.Нажмите + -> New Plugin -> Groovy.
5. Дайте имя и в открывшийся файл plugin.groovy вставьте этот код:
Java:
import com.intellij.openapi.ide.CopyPasteManager
import java.awt.datatransfer.StringSelection
import com.intellij.openapi.fileEditor.FileEditorManager
import com.intellij.openapi.vfs.VfsUtil
import com.intellij.openapi.project.ProjectUtil
import com.intellij.openapi.actionSystem.AnActionEvent
import static liveplugin.PluginUtil.*

// ИЗМЕНЕНИЕ ЗДЕСЬ:
// 3-й аргумент "EditorPopupMenu" добавляет пункт в меню по правому клику мыши.
registerAction("CopyAsOCMOD", "ctrl alt shift O", "EditorPopupMenu") { AnActionEvent event ->

    // 1. Проверяем проект
    def project = event.project
    if (!project) return

    // 2. Проверяем редактор
    def editor = FileEditorManager.getInstance(project).selectedTextEditor
    if (!editor) {
        show("OCMOD: Нет активного редактора")
        return
    }

    // 3. Получаем выделенный текст
    def selection = editor.selectionModel.selectedText
    if (!selection) {
        show("OCMOD: Выделите текст, чтобы скопировать его как XML!")
        return
    }

    // 4. Определяем путь к файлу
    def document = editor.document
    def file = com.intellij.openapi.fileEditor.FileDocumentManager.getInstance().getFile(document)

    def root = ProjectUtil.guessProjectDir(project)
    def relPath = file.path

    // Пытаемся получить относительный путь
    if (root != null) {
        def calculatedPath = VfsUtil.getRelativePath(file, root)
        if (calculatedPath != null) {
            relPath = calculatedPath
        }
    }

    // 5. Формируем XML
    def template = """<file path="${relPath}">
    <operation>
        <search><![CDATA[__CODE__]]></search>
        <add position="replace"><![CDATA[

        ]]></add>
    </operation>
</file>""".replace("__CODE__", selection)

    // 6. Копируем в буфер обмена
    CopyPasteManager.getInstance().setContents(new StringSelection(template))

    // 7. Показываем уведомление
    show("OCMOD код скопирован!")
}
6. Нажмите кнопку Run (зеленый треугольник) на панели плагина, чтобы скомпилировать его первый раз.
7. Там же на панели плагина , выделите этот плагин и нажмите шестеренку, выберите только Run Plugins on IDE Start
8. Теперь выделите код в любом файле PHP и правой кнопкой мыши, внизу списка (или в середине) должен появиться пункт CopyAsOCMOD, нажмите.

Снимок экрана 2026-01-09 122604.png

Код будет скопирован в буфер обмена.

Или через горячие клавиши (ctrl alt shift O) Можете назначить другие в коде плагина в начале кода.
XML:
<file path="admin/controller/blog/article.php">
    <operation>
        <search><![CDATA[$this->document->setTitle($this->language->get('heading_title'));]]></search>
        <add position="replace"><![CDATA[

]]></add>
    </operation>
</file>
 
Последнее редактирование:
Назад
Верх