fix: replace emoji with hero image in blog sidebar doctor card
CI/CD / CI · dotnet build (push) Successful in 51s
CI/CD / Deploy · drsousan (push) Failing after 5m40s

- Post.cshtml.cs: load hero image, tag from SiteSettings in SetViewDataAsync
- Post.cshtml: show <img> with hero image in .doc-avatar when set,
  fall back to emoji only if no image is configured
- .doc-avatar: circular crop with object-fit:cover, gold border
- doc-title now uses HeroTag from settings (not hardcoded)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-02 15:15:06 +03:30
parent ed25bec200
commit b3c4615bc7
2 changed files with 20 additions and 6 deletions
+14 -3
View File
@@ -99,7 +99,9 @@
.recent-title:hover{color:var(--gold)} .recent-title:hover{color:var(--gold)}
.recent-date{font-size:.73rem;color:var(--light);margin-top:.2rem} .recent-date{font-size:.73rem;color:var(--light);margin-top:.2rem}
.doctor-card{text-align:center} .doctor-card{text-align:center}
.doc-avatar{width:80px;height:80px;border-radius:50%;background:var(--gold-pale);margin:0 auto .8rem;display:flex;align-items:center;justify-content:center;font-size:2rem} .doc-avatar{width:90px;height:90px;border-radius:50%;background:var(--gold-pale);margin:0 auto .8rem;overflow:hidden;border:3px solid var(--gold)}
.doc-avatar img{width:100%;height:100%;object-fit:cover;object-position:top}
.doc-avatar-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:2.2rem}
.doc-name{font-size:.95rem;font-weight:700;color:var(--dark)} .doc-name{font-size:.95rem;font-weight:700;color:var(--dark)}
.doc-title{font-size:.78rem;color:var(--light);margin:.2rem 0 .8rem} .doc-title{font-size:.78rem;color:var(--light);margin:.2rem 0 .8rem}
.doc-btn{background:var(--gold);color:#fff;padding:.5rem 1.2rem;border-radius:50px;font-family:'Vazirmatn',sans-serif;font-size:.82rem;border:none;cursor:pointer;width:100%;text-decoration:none;display:block;text-align:center} .doc-btn{background:var(--gold);color:#fff;padding:.5rem 1.2rem;border-radius:50px;font-family:'Vazirmatn',sans-serif;font-size:.82rem;border:none;cursor:pointer;width:100%;text-decoration:none;display:block;text-align:center}
@@ -254,9 +256,18 @@
<!-- ── Sidebar ── --> <!-- ── Sidebar ── -->
<aside class="sidebar"> <aside class="sidebar">
<div class="sidebar-card doctor-card"> <div class="sidebar-card doctor-card">
<div class="doc-avatar">👩‍⚕️</div> <div class="doc-avatar">
@if (!string.IsNullOrEmpty(ViewData["HeroImage"]?.ToString()))
{
<img src="@ViewData["HeroImage"]" alt="@post.Author"/>
}
else
{
<div class="doc-avatar-placeholder">👩‍⚕️</div>
}
</div>
<div class="doc-name">@post.Author</div> <div class="doc-name">@post.Author</div>
<div class="doc-title">پزشک عمومی | متخصص زیبایی پوست</div> <div class="doc-title">@ViewData["HeroTag"]</div>
<a href="/#contact" class="doc-btn">رزرو نوبت</a> <a href="/#contact" class="doc-btn">رزرو نوبت</a>
</div> </div>
+6 -3
View File
@@ -135,9 +135,12 @@ public class PostModel : PageModel
ViewData["ArticleType"] = post.ArticleType; ViewData["ArticleType"] = post.ArticleType;
ViewData["Slug"] = post.Slug; ViewData["Slug"] = post.Slug;
var s = await _db.SiteSettings var heroSettings = await _db.SiteSettings
.FirstOrDefaultAsync(x => x.Section == "hero" && x.Key == "name"); .Where(x => x.Section == "hero" && (x.Key == "name" || x.Key == "image" || x.Key == "tag"))
ViewData["SiteName"] = s?.Value ?? "دکتر سوسن آل‌طه"; .ToListAsync();
ViewData["SiteName"] = heroSettings.FirstOrDefault(x => x.Key == "name")?.Value ?? "دکتر سوسن آل‌طه";
ViewData["HeroImage"] = heroSettings.FirstOrDefault(x => x.Key == "image")?.Value ?? "";
ViewData["HeroTag"] = heroSettings.FirstOrDefault(x => x.Key == "tag")?.Value ?? "پزشک عمومی و متخصص زیبایی پوست";
} }
// View model for comments // View model for comments