feat: 可配置站点 URL 风格
- 新增 urlStyle 工具与测试:postPath/userPath/sitePagePath 统一生成链接 - 管理端新增 UrlStylePanel 设置面板,settings 服务与 handler 适配 - 全站路由链接与 JSON-LD/sitemap 切换为统一 URL 生成 - middleware 与相关组件适配
This commit is contained in:
@@ -15,6 +15,7 @@ import { toast } from "@/lib/toast";
|
||||
import MarkdownEditor from "@/components/MarkdownEditor";
|
||||
import { AdminField, AdminSegmented, AdminStatusChip, AdminSwitch } from "@/components/admin";
|
||||
import ConfirmDialog from "@/components/ConfirmDialog";
|
||||
import { useUrlStyle } from "@/components/SiteBrandProvider";
|
||||
import useUnsavedGuard from "@/hooks/useUnsavedGuard";
|
||||
import { ANNOUNCEMENT_COLORS, announcementPublicPath } from "./announcementColors";
|
||||
|
||||
@@ -117,6 +118,7 @@ export default function AnnouncementComposeClient({
|
||||
}) {
|
||||
const router = useRouter();
|
||||
const searchParams = useSearchParams();
|
||||
const urlStyle = useUrlStyle();
|
||||
const status = readStatus(searchParams.get("status"));
|
||||
const backHref = listHref(status);
|
||||
const loaded = useMemo(() => toForm(initial), [initial]);
|
||||
@@ -146,7 +148,7 @@ export default function AnnouncementComposeClient({
|
||||
};
|
||||
|
||||
const canViewOnline = saved?.published === true && saved.id > 0;
|
||||
const publicPath = saved ? announcementPublicPath(saved.id) : "";
|
||||
const publicPath = saved ? announcementPublicPath(saved.id, urlStyle) : "";
|
||||
|
||||
async function commit() {
|
||||
if (saving) return;
|
||||
@@ -227,7 +229,7 @@ export default function AnnouncementComposeClient({
|
||||
|
||||
async function copyAddress() {
|
||||
if (!saved) return;
|
||||
const url = `${(origin || window.location.origin).replace(/\/$/, "")}${announcementPublicPath(saved.id)}`;
|
||||
const url = `${(origin || window.location.origin).replace(/\/$/, "")}${announcementPublicPath(saved.id, urlStyle)}`;
|
||||
try {
|
||||
await navigator.clipboard.writeText(url);
|
||||
toast("已复制访问地址", "ok");
|
||||
|
||||
Reference in New Issue
Block a user