اصلاحات بازبینی: تطبیق backfill با متن فارسی، رفع باگ متای /blog (ستون image ناموجود)، پاک‌سازی og:locale و برند در پوسته سئو، محدودکردن Traefik به پروژه خود، اصلاح مسیریابی Routes و عنوان برند در صفحات جزئیات

This commit is contained in:
MMD
2026-09-13 00:10:53 +03:30
parent 6b49d035c2
commit 4fb57dfd67
6 changed files with 87 additions and 65 deletions
+10 -16
View File
@@ -37,20 +37,13 @@ const PUBLIC_ROUTES: { path: string; element: React.ReactElement }[] = [
{ path: '/contact', element: <ContactPage /> },
];
function LocaleRoutes({ prefix }: { prefix: '' | '/en' }) {
return (
<>
{PUBLIC_ROUTES.map(({ path, element }) => (
<Route
key={`${prefix}${path}`}
path={path === '/' ? (prefix || '/') : `${prefix}${path}`}
element={element}
/>
))}
{prefix === '' && <Route path="*" element={<Home />} />}
</>
);
}
// فرزند مستقیم <Routes> باید <Route> باشد — آرایه‌های Route به‌جای کامپوننت واسط
const FA_ROUTES = PUBLIC_ROUTES.map(({ path, element }) => (
<Route key={path} path={path} element={element} />
));
const EN_ROUTES = PUBLIC_ROUTES.map(({ path, element }) => (
<Route key={`en-${path}`} path={path === '/' ? '/en' : `/en${path}`} element={element} />
));
function ScrollToTop() {
const { pathname } = useLocation();
@@ -75,8 +68,9 @@ function AnimatedRoutes() {
<Route path="/admin/login" element={<AdminLoginPage />} />
<Route path="/admin/write" element={<ArticleWritePage />} />
<Route path="/admin/write/:id" element={<ArticleWritePage />} />
<LocaleRoutes prefix="" />
<LocaleRoutes prefix="/en" />
{FA_ROUTES}
<Route path="*" element={<Home />} />
{EN_ROUTES}
</Routes>
</motion.main>
</AnimatePresence>);
+1 -1
View File
@@ -40,7 +40,7 @@ export function ArticleDetail() {
useEffect(() => {
if (!article) return;
applySeo({
title: `${article.title} | ${brand}`,
title: `${article.title} | ${brand.name}`,
description: article.excerpt,
path: href(`/blog/${article.slug}`),
image: article.image,
+1 -1
View File
@@ -23,7 +23,7 @@ export function ProjectDetail() {
useEffect(() => {
if (!project) return;
applySeo({
title: `${project.title} | ${brand}`,
title: `${project.title} | ${brand.name}`,
description: project.summary,
path: href(`/projects/${project.slug}`),
image: project.image,