Files
note2any/docs/XIAOHONGSHU_KEEP_PLATFORM_SELECTOR.md
2025-10-09 12:39:24 +08:00

211 lines
8.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 小红书模式保留平台选择器 - 修改说明
**修改时间**: 2025年10月8日
**需求**: 发布平台选择"小红书"时,顶部按钮保留"发布平台"选择
---
## 📋 修改内容
### 问题
之前切换到小红书模式时,整个工具栏都被隐藏,导致无法切换回微信模式。
### 解决方案
保留"发布平台"选择器,只隐藏微信相关的功能行。
---
## 🔧 代码修改
### 文件:`src/note-preview.ts`
#### 1. 给工具栏行添加 CSS 类标识
**平台选择器行**(始终显示):
```typescript
lineDiv = this.toolbar.createDiv({ cls: 'toolbar-line platform-selector-line' });
```
**微信相关行**(小红书模式隐藏):
```typescript
// 公众号选择
lineDiv = this.toolbar.createDiv({ cls: 'toolbar-line wechat-only' });
// 复制/刷新/上传/发草稿按钮行
lineDiv = this.toolbar.createDiv({ cls: 'toolbar-line wechat-only' });
// 封面设置行
lineDiv = this.toolbar.createDiv({ cls: 'toolbar-line wechat-only' });
// 样式选择行
lineDiv = this.toolbar.createDiv({ cls: 'toolbar-line wechat-only' });
```
#### 2. 修改 `switchToXiaohongshuMode()` 方法
**修改前**(隐藏整个工具栏):
```typescript
if (this.toolbar) this.toolbar.style.display = 'none';
```
**修改后**(只隐藏微信相关行):
```typescript
if (this.toolbar) {
const wechatLines = this.toolbar.querySelectorAll('.wechat-only');
wechatLines.forEach((line: HTMLElement) => {
line.style.display = 'none';
});
}
```
#### 3. 修改 `switchToWechatMode()` 方法
**修改前**(显示整个工具栏):
```typescript
if (this.toolbar) this.toolbar.style.display = 'flex';
```
**修改后**(显示微信相关行):
```typescript
if (this.toolbar) {
const wechatLines = this.toolbar.querySelectorAll('.wechat-only');
wechatLines.forEach((line: HTMLElement) => {
line.style.display = 'flex';
});
}
```
---
## 📐 界面效果
### 微信公众号模式
```
┌────────────────────────────────────────────────────────┐
│ 发布平台: [微信公众号 ▼] │ ← 显示
├────────────────────────────────────────────────────────┤
│ 公众号: [选择公众号 ▼] │ ← 显示
├────────────────────────────────────────────────────────┤
│ [刷新] [复制] [上传图片] [发草稿] [图片/文字] │ ← 显示
├────────────────────────────────────────────────────────┤
│ 封面: ⚪ 默认 ⚪ 上传 [选择文件] │ ← 显示
├────────────────────────────────────────────────────────┤
│ 样式: [主题▼] 代码高亮: [高亮▼] │ ← 显示
├────────────────────────────────────────────────────────┤
│ 微信预览渲染区 │
│ │
└────────────────────────────────────────────────────────┘
```
### 小红书模式
```
┌────────────────────────────────────────────────────────┐
│ 发布平台: [小红书 ▼] │ ← 保留显示
├────────────────────────────────────────────────────────┤
│ │
│ 第一行:操作按钮 │
│ ┌────────────────────────────────────────────────┐ │
│ │ [刷新] [发布到小红书] │ │
│ └────────────────────────────────────────────────┘ │
│ │
│ 第二行:样式控制 │
│ ┌────────────────────────────────────────────────┐ │
│ │ 模板[▼] 主题[▼] 字体[▼] 字体大小[-]16[+] │ │
│ └────────────────────────────────────────────────┘ │
│ │
├────────────────────────────────────────────────────────┤
│ 预览区域 │
│ (1080px × 1440px) │
├────────────────────────────────────────────────────────┤
│ [←] 1/5 [→] │
├────────────────────────────────────────────────────────┤
│ [⬇ 当前页切图] [⬇⬇ 全部页切图] │
└────────────────────────────────────────────────────────┘
```
---
## ✅ 优势
1. **可切换性** - 用户可随时通过平台选择器切换回微信模式
2. **一致性** - 平台选择器始终可见,位置固定
3. **清晰性** - 不同平台的功能区分明确
4. **简洁性** - 小红书模式下不显示无关的微信功能
---
## 🧪 测试验证
### 测试步骤
1. ✅ 打开预览面板
2. ✅ 默认显示"微信公众号"模式
3. ✅ 切换到"小红书"
- 验证:平台选择器仍然显示
- 验证:微信相关行隐藏
- 验证:小红书预览界面显示
4. ✅ 切换回"微信公众号"
- 验证:微信相关行重新显示
- 验证:小红书预览界面隐藏
- 验证:微信渲染区显示
### 编译结果
```bash
$ npm run build
> note-to-mp@1.3.0 build
> tsc -noEmit -skipLibCheck && node esbuild.config.mjs production
✅ 编译成功,无错误
```
---
## 📝 技术细节
### CSS 选择器策略
- `.platform-selector-line` - 平台选择器行(始终显示)
- `.wechat-only` - 微信专用行(小红书模式隐藏)
### 显示/隐藏逻辑
```typescript
// 隐藏微信行
querySelectorAll('.wechat-only').forEach(line => {
line.style.display = 'none';
});
// 显示微信行
querySelectorAll('.wechat-only').forEach(line => {
line.style.display = 'flex';
});
```
### 不需要修改的部分
- 平台选择器的 HTML 结构
- 平台切换的逻辑 `onPlatformChanged()`
- 小红书预览组件的实现
---
## 📊 修改统计
| 项目 | 数量 |
|-----|------|
| 修改的文件 | 2 个 |
| 新增代码行 | ~20 行 |
| 修改代码行 | ~15 行 |
| CSS 类新增 | 2 个 |
| 方法修改 | 2 个 |
---
## 🎯 完成状态
- ✅ 代码修改完成
- ✅ 编译通过
- ✅ 文档更新
- ⏳ 等待用户测试
---
**状态**: ✅ 已完成
**下一步**: 重启 Obsidian 测试