完成第一次内容发布
从首次初始化到后台编辑,再到实际的公开页面与 SDK 读取。
1. 初始化并登录
先按安装页启动 Core、Portal 和后台,默认不需要 Redis。打开后台 /setup,填写站点名称及自己的管理员账号和密码,完成后用真实验证码登录。已经安装的实例不需要重复 Setup。
2. 编辑、预览与发布
在后台「分类」选择或建立内容分类。打开「文章」,填写标题、slug、语言、摘要和正文。图片先上传到媒体库,选择公开图片插入正文或封面。保存草稿,检查授权预览,再点击发布。
打开 /{language}/blog/{slug}。下一版只保存草稿时,公开页面仍显示上次发布版本;撤下后匿名详情返回404。
3. 通过 SDK 读取
标准Compose为默认站点创建初始MF映射;源码开发或自定义应用先构建并登记所选模块。浏览器通过Shell取得SDK并使用同源/api;Node按服务身份读取bootstrap,为每次读取建立并释放Shell。
TypeScript
import type { Shell } from '@mosaic-base/shell';
import type { ArticleSDK, SiteSDK, I18nSDK } from '@mosaic-base/client-sdk';
import type { AuthClient, ServerAuthClient } from '@mosaic-base/auth-sdk';
// Declare once in your application's type contract, never import SDK implementations.
declare module '@mosaic-base/shell/contracts' {
interface SdkRegistry {
'site.config': Pick<SiteSDK, 'getConfig'>;
'content.articles': Pick<ArticleSDK, 'list' | 'getBySlug' | 'getPreview' | 'search'>;
'i18n.messages': Pick<I18nSDK, 'load' | 't' | 'clearCache' | 'refresh'>;
'auth.client': AuthClient | ServerAuthClient;
}
}
import { createModuleLoader, readPublicBootstrap, startShell } from '@mosaic-base/shell/bootstrap';
export async function createBrowserApplication(appId: string) {
const bootstrap = await readPublicBootstrap(appId);
return startShell({ bootstrap, loader: createModuleLoader({ target: 'browser' }),
host: { apiBaseUrl: new URL('/api', location.origin).href } });
}
export async function readPublishedArticles(shell: Shell) {
const articles = await shell.getSdk('content.articles');
return articles.list({ language: 'en-US', page: 1, pageSize: 10 });
}4. 添加另一种语言
在站点配置启用语言,在文章编辑器创建对应译文,分别编辑并发布。动态词条在「多语言词条」维护,两者不是同一种数据。