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