RBN Core - Framework v0.9.7 76 belge

Blog yazar künyesi: blog-author, blog-author-title

Kaynak: Core/Services/System/Models/SettingsConfig.php (grup blog) · 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.name yalnız ad; sayfada yazar olarak görünen herkes işaretlemede de olur; görünmeyen işaretlenmez) ve yapay-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_author değil blog-author.
  • DB'de satır YALNIZ doluysa vardır; boş satır yazılmaz. blog grubu 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 (blog grubu yazılabilir gruplardandır), silme settings: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.