Blog yazar künyesi: blog-author, blog-author-title
Kaynak:
Core/Services/System/Models/SettingsConfig.php(grupblog) ·Core/Base/Services/Traits/Service/Blogcontent/ContentMetaTrait.php(blogAuthor()) ·ContentDataServiceTrait.php(getDetailData()) ·Resources/Views/RbnCommon/Components/blog_author.rbn.php·Resources/Assets/RbnCommon/css/components/rbnBlogAuthor.css·Core/Render/Builders/SchemaBuilder.php(blogPosting())
Google kuralı: bilgi bankasıgoogle-arama/yapisal-veri-article.md(author.nameyalnız ad; sayfada yazar olarak görünen herkes işaretlemede de olur; görünmeyen işaretlenmez) veyapay-zeka-uretimi-icerik.md(gerçek kişi, görünür byline, uydurma unvan yok).
Yazar, şirketten ve site sahibinden AYRI bir kavramdır: şirket unvanı (company-legal-name) ve site sahibi (company-owner-name) künyeye, KVKK'ya ve Organization şemasına gider; blog yazarı yalnız yazı sayfasının byline'ına ve BlogPosting.author'a gider. Şirket sahibi ile blog yazarı farklı kişiler olabilir; bu yüzden iki ayar company grubunda DEĞİL, kendi blog grubundadır.
1. İki isteğe bağlı ayar
| Anahtar | Etiket | Anlam |
|---|---|---|
blog-author |
Blog Yazarı | Yazıları yazan GERÇEK kişinin adı soyadı. Boşsa yazar künyesi de şema yazarı da YOKTUR |
blog-author-title |
Yazar Unvanı | Yazarın gerçek mesleği/unvanı. Yalnız blog-author doluyken kullanılır; tek başına yazar açmaz. Uydurma unvan yazılmaz |
- Anahtar adları framework'ün tireli adlandırmasına uyar (
company-name,contact-phone):blog_authordeğilblog-author. - DB'de satır YALNIZ doluysa vardır; boş satır yazılmaz.
bloggrubu satırı proje veritabanında ilk değer yazılırken oluşur (SettingsConfig::GROUPS,SettingsValueHandler); hiç yazar girmeyen proje boş grup taşımaz. - Yazma: panel (grup "Blog Ayarları") ya da
php rbn settings:set --project=<anahtar> --key=blog-author --value="Ad Soyad" --apply(bloggrubu yazılabilir gruplardandır), silmesettings:unset.
2. İçerik servisi yazıya author ekler
getDetailData() (içerik servisi trait'i ContentDataServiceTrait) yazıyı zenginleştirdikten sonra blogAuthor() ile blog grubunu okur:
| Durum | $data['post']['author'] |
|---|---|
| ad + unvan dolu | ['name' => ad, 'title' => unvan] |
| yalnız ad dolu | ['name' => ad] (title anahtarı yok) |
| ad boş (unvan dolu olsa bile) ya da ayar yok | anahtar HİÇ yok |
Yazı satırı kendi author değerini taşıyorsa (boş değilse) ona dokunulmaz: yazının kendi değeri ayardan önceliklidir. author_comment bir yazar YORUMUdur, yazar adı değildir; bu kapıdan etkilenmez. Liste/kategori/ana sayfa çıktıları (getMappedPosts() vb.) değişmez: byline yalnız yazı detayındadır.
3. Görünür künye parçası
@import('framework', 'Resources/Views/RbnCommon/Components/blog_author.rbn.php')
Yazı detay görünümünde byline'ın istendiği yere konur; $post['author'] varsa <p class="rbn-blog-author">Yazar: <strong>Ad</strong> <span>Unvan</span></p> basar, yoksa HİÇBİR ŞEY basmaz (çevresinde koşul gerekmez). Stil components/rbnBlogAuthor.css (yalnız token, yazı 1rem = 16 px altına inmez; rbn_core_frontend paketinde). Yerleşim projenindir; projenin kendi byline tasarımı varsa aynı $post['author'] verisine bağlanır (Antalya böyle yapar).
4. Şema
SchemaBuilder::blogPosting() / newsArticle() author anahtarını Person olarak yazar: name ve varsa jobTitle (title takma adı da kabul edilir, böylece $post['author'] olduğu gibi geçer). Proje controller'ı:
->schema('blogPost', ['author' => $post['author'] ?? null, /* ... */])
author yoksa şemada yazar yoktur. Görünen byline ile şema yazarı AYNI değerden gelir (Google: işaretlemedeki yazar sayfada görünmeli). Şema anahtarları: Yapisal-Veri-Head-Izin.md.
5. Kapılar
g_blog_yazar.php (G-by-01..07): ayar şablonu/grup, getDetailData() dolu/yalnız ad/boş/şirket karışmaz/yazının kendi author'u, parça çıktısı (kaçışlı; yoksa boş), şema Person, kodda elle company-author okuması yok, pilot sitede byline + JSON-LD, diğer sitelerin yazı sayfası değişmez.