# 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= --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ı ```php @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 `

Yazar: Ad Unvan

` 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'ı: ```php ->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](../Render/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.