Add "Parts-Editor"
69
Parts-Editor.-.md
Normal file
69
Parts-Editor.-.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# Редактор хедера / футера
|
||||
|
||||
## Обзор
|
||||
|
||||
Позволяет редактировать тексты кнопок, ссылок и HTML-блоков в pug-файлах header и footer — без ручного редактирования pug.
|
||||
|
||||
## Расположение
|
||||
|
||||
Настройки → вкладка "Хедер / Футер"
|
||||
|
||||
## Как работает
|
||||
|
||||
### 1. Выбор файла
|
||||
|
||||
Dropdown показывает все gender paths из настроек:
|
||||
- Хедер (Ж) — `./parts/header/header-woman`
|
||||
- Хедер (М) — `./parts/header/header-man`
|
||||
- Футер (Ж) — `./parts/footer/footer-woman`
|
||||
- Футер (М) — `./parts/footer/footer-man`
|
||||
|
||||
### 2. Загрузка файла
|
||||
|
||||
`loadPartsEditorFile(filePath)`:
|
||||
1. GET `/api/parts-file-read?path={filePath}`
|
||||
2. Получает raw pug-содержимое
|
||||
3. Парсит через `parsePugFields(content)`
|
||||
|
||||
### 3. Парсинг полей
|
||||
|
||||
`parsePugFields(content)` находит 4 типа полей:
|
||||
|
||||
| Тип | Что ищет | Пример в Pug |
|
||||
|-----|---------|-------------|
|
||||
| `button` | `+buttonRounded(...)` | `+buttonRounded("KITON", "https://...", 275, 45, ...)` |
|
||||
| `link` | `a(href="...")` с текстом | `a(href="tel:88003334929") 8 800 333-49-29` |
|
||||
| `link` | HTML ссылки `<a href="...">` | `<a href="...">текст</a>` |
|
||||
| `html-text` | HTML span/p с текстом | `<span style="...">СКАЧАЙТЕ ПРИЛОЖЕНИЕ</span>` |
|
||||
|
||||
Для каждого найденного поля создаётся объект:
|
||||
```javascript
|
||||
{
|
||||
label: "KITON", // автоматически из текста
|
||||
type: "button", // button | link | html-text
|
||||
text: "KITON", // текст для редактирования
|
||||
url: "https://...", // URL (для button и link)
|
||||
lineIndex: 42, // номер строки в файле
|
||||
_raw: "полная строка" // оригинальная строка для замены
|
||||
}
|
||||
```
|
||||
|
||||
### 4. Редактирование
|
||||
|
||||
В UI показывается таблица:
|
||||
- **Кнопки** — текст + URL
|
||||
- **Ссылки** — текст + URL
|
||||
- **Тексты** — только текст (может содержать HTML)
|
||||
|
||||
### 5. Сохранение
|
||||
|
||||
`savePartsEditorFile()`:
|
||||
1. `applyFieldsToContent(rawContent, fields)` — заменяет значения в строках pug-файла
|
||||
2. POST `/api/parts-file-write` — записывает файл
|
||||
|
||||
### Важно
|
||||
|
||||
- Файлы записываются в `email-gen/` volume
|
||||
- На проде volume монтирован → изменения сохраняются
|
||||
- Но для рендера нужен перезапуск email-gen-api (если файлы кэшируются)
|
||||
- На деве файлы на хосте → сразу доступны
|
||||
Reference in New Issue
Block a user