Temel Kavramlar

WebBlocks CMS; sayfalar, yerleşimler, slotlar ve bloklar etrafında kurulmuş açık bir ilişkisel içerik modeli kullanır.

İçerik Modeli

Temel yapı şöyledir:

Page -> Layout -> Slots -> Blocks

  • Bir sayfa; yönlendirmenin, site bağlamının, iş akışı durumunun ve yerleşim seçiminin sahibidir.
  • Bir sayfa ayrıca, sayfa kapsamlı CSS ve JS dosya referansları için ilişkisel sayfa varlığı (page asset) satırlarına da sahip olabilir.
  • Bir yerleşim, kullanılabilir yapısal bölgeleri tanımlar.
  • Slotlar; yerleşim içindeki header, main, sidebar ve footer gibi adlandırılmış yerleştirme alanlarıdır.
  • Bloklar; slotlara yerleştirilen ve desteklendiğinde başka blokların altına iç içe konulabilen asıl içerik birimleridir.

Sayfalar serbest biçimli sayfa oluşturucu JSON'u saklamaz. İçerik ve ilişkiler, yapı açık ve incelenebilir kalsın diye ilişkisel tablolarda tutulur.

Sayfa Varlıkları

  • Sayfa Varlıkları (Page Assets), sayfa kapsamlı CSS ve JS dosya referansları için çekirdek bir CMS özelliğidir.
  • Sayfa Varlıkları, pages.settings JSON'unun içinde değil, page_assets tablosunda ilişkisel olarak saklanır.
  • V1 yalnızca /site/... altındaki yerel kurulum yollarını kabul eder.
  • Harici URL'ler, satır içi CSS, satır içi JS, sorgu dizeleri, parçalar (fragment), dizin atlama (traversal) ve eşleşmeyen uzantılar reddedilir.
  • CSS şu anda yalnızca herkese açık belgenin head bölümünde işlenir.
  • JS şu anda yalnızca herkese açık belgenin head bölümünde defer ile işlenir.
  • CMS'e ait herkese açık varlıklar public/cms/ altında bulunur.
  • public/storage, storage/app/public için Laravel herkese açık depolama sembolik bağlantısıdır ve site/sayfa geçersiz kılma varlıklarından ayrıdır.
  • Standart herkese açık varlık yolları şunlardır: public/site/{site_handle}/css/site.css, public/site/{site_handle}/js/site.js, public/site/{site_handle}/pages/{page_slug}/page.css ve public/site/{site_handle}/pages/{page_slug}/page.js.
  • Sayfa Varlıkları yalnızca sahibi olan herkese açık sayfa için işlenir; yönetim yerleşimlerinden ve ilgisiz sayfalardan hariç tutulur.
  • Sayfa revizyonları, çoğaltma, taşıma ve site dışa/içe aktarma işlemleri, Sayfa Varlıklarını sayfaya ait yapılandırma olarak ele alır.
  • Tek sayfalık JSON içe aktarma, yük (payload) mevcut sayfa varlığı doğrulama kurallarını geçen geçerli yerel /site/... yolları kullandığında page_assets satırları da oluşturabilir.
  • Arama dizinleme, sayfa varlığı yollarını sayfa gövde içeriği olarak ele almaz.

Sayfa Site Kapsamı

  • Bir sayfa aynı anda tam olarak tek bir siteye aittir.
  • Normal Edit Page formu, mevcut sayfalar için Site alanını salt okunur tutar.
  • Bir sayfayı çoğaltmak, aynı sitede veya erişilebilir başka bir sitede yeni bir sayfa kaydı oluşturur.
  • Siteler arası sayfa taşımaları, satır içi bir alan değişikliği yerine özel bir Move to another site iş akışı kullanır.
  • Sayfa çoğaltma, normal sayfa formuna eklemlenmek yerine özel bir Duplicate page iş akışı kullanır.
  • Taşıma, pages.site_id ve page_translations.site_id değerlerinin bileşik (page_id, site_id) yabancı anahtarına göre geçerli kalması için denetimli bir işlem (transaction) olarak çalışır.
  • Çoğaltma, yeni sayfayı her zaman taslak olarak başlatır ve kaynak sayfanın revizyon geçmişini kopyalamadan içerik durumunu kopyalar.
  • Taşıma; sayfa kimliğini, çevirileri, slotları, sayfaya ait blokları, blok çevirilerini, sıralamayı, iş akışı durumunu ve revizyon geçmişini korur.
  • Çoğaltma; yerleşimi, çevirileri, slotları, sayfaya ait blokları, iç içe blok ilişkilerini, blok çevirilerini ve uyumlu Ortak Slot referanslarını korur, ancak yeni bir sayfa kimliği oluşturur.
  • Hedef sitedeki yol çakışmaları, mevcut sürümde engelleyici doğrulama hatalarıdır.
  • Ortak Slot referanslarının hedef sitedeki aynı tanıtıcıya (handle) sahip uyumlu Ortak Slotlara yeniden eşlenebilmesi gerekir; aksi halde taşıma engellenir.
  • Aynı site içinde çoğaltma, mevcut Ortak Slot referanslarını korur.
  • Siteler arası çoğaltma, yalnızca hedef sitedeki aynı tanıtıcıya sahip uyumlu Ortak Slotları yeniden eşler.
  • Siteler arası bir çoğaltma bazı Ortak Slot destekli slotları yeniden eşleyemediğinde varsayılan davranış yine çoğaltmayı engellemektir.
  • Çoğaltma iş akışı artık, geçersiz bir siteler arası Ortak Slot referansını kalıcı hale getirmek yerine yalnızca uyumsuz olan çoğaltılmış sayfa slotlarını açıkça devre dışı bırakabilir.
  • Bu isteğe bağlı geri dönüş, çoğaltılan sayfa slotunu disabled olarak yazar, shared_slot_id değerini temizler, kaynak sayfayı değiştirmeden bırakır ve bu sürümde Ortak Slot blok ağaçlarını çoğaltılan sayfaya kopyalamaz.
  • Export / Import ve Site Clone gibi site düzeyi taşınabilirlik araçları, sayfa taşıma ve sayfa çoğaltmadan ayrı kalmaya devam eder.
  • Admin -> Pages -> Import Page, sayfa kapsamlı bir taşınabilirlik iş akışıdır. Belgelenmiş bir webblocks.cms.page.v1 JSON yükünden tek bir yeni sayfa oluşturur ve site düzeyindeki Export / Import'tan bilinçli olarak ayrıdır.
  • V1 tek sayfalık içe aktarma her zaman yeni bir sayfa oluşturur ve sayfayı her zaman taslak olarak içe aktarır.
  • V1 tek sayfalık içe aktarma, kaynak sayfanın revizyon geçmişini içe aktarmaz.
  • Tek sayfalık içe aktarmadaki Ortak Slot destekli sayfa slotları, kararlı tanıtıcı üzerinden hedef sitedeki uyumlu bir Ortak Slot'a başvurmalıdır. İçe aktarıcı, V1'de Ortak Slotları otomatik olarak oluşturmaz.

Site Kimliği

  • WebBlocks CMS ürün kimliği yönetim kabuğunda sabittir ve App\Support\WebBlocks üzerinden gelir.
  • Proje Kimliği, Admin -> System -> Settings içinde yapılandırılan kurulum düzeyinde yönetim bağlamıdır.
  • Proje Kimliği şu anda Project Name ve Project Tagline alanlarını içerir.
  • Proje Kimliği yalnızca yönetim üst çubuğu bağlamı ve yönetim tarayıcı başlıkları için kullanılır.
  • Proje Kimliği; sabit WebBlocks CMS kenar çubuğu markasını, kenar çubuğu sürüm alt bilgisini, herkese açık site meta verilerini, herkese açık favicon'u, herkese açık arama kapsamını veya sayfa çevirisi SEO değerlerini değiştirmez.
  • Site kayıtları, herkese açık kimliğin ve meta verilerin sahibidir.
  • sites.name, dahili yönetim kayıt adı olarak kalır.
  • display_name, isteğe bağlı herkese açık site adı geçersiz kılmasıdır.
  • tagline, site için isteğe bağlı herkese açık metindir.
  • seo_title, seo_description ve seo_keywords, site düzeyinde geri dönüş (fallback) meta verileridir.
  • favicon_media_id ve social_image_media_id, herkese açık head çıktısı için isteğe bağlı site düzeyi medya referanslarıdır.
  • site_variables, denetimli herkese açık jeton (token) değiştirme için isteğe bağlı, site düzeyinde yeniden kullanılabilir düz metin değerleridir.
  • Sayfa çevirisi satırları da seo_title, seo_description, seo_keywords, og_title, og_description ve og_image_media_id gibi yerelleştirilmiş SEO geçersiz kılma alanlarına sahiptir.
  • Bu, herkese açık sayfa meta verilerini dile duyarlı tutar ve paylaşılan sayfa JSON ayarlarının dışında bırakır.

Medya

  • Media, etkin CMS çalışma zamanı genelinde paylaşılan yüklenmiş dosyalar için standart addır.
  • Etkin teknik adlar artık mevcut çalışma zamanı kodu, istekler, revizyonlar ve site aktarım paketleri genelinde Media, media_id, media, media_folders ve block_media kullanır.
  • Eski Asset adları yalnızca uyumluluk sarmalayıcıları, geçmiş migration'lar ve daha eski yük veya arşiv normalleştirmesi için kalır.
  • Admin -> Media, ana liste başlığını Media, listeleme kartı başlığını Media Library olarak tutar.
  • Medya listesinde, başlık bağlantısı ve kalem simgesi birlikte Edit Media: {title} ekranını açar ve geçerli filtrelenmiş listeye güvenli bir Medya dönüş URL'si taşır.
  • Göz simgesi, listeden açılan büyük önizleme modalı eylemi olarak kalır.
  • /webadmin/media/{id} ayrıntı rotası, medya ayrıntı bağlantılarının standart düzenleme ekranına ulaşması için /webadmin/media/{id}/edit adresine yönlendirir.
  • Edit Media; önizleme, dosya ayrıntıları, meta veriler, düzenleme, kullanım ve tehlike bölgesi yönetimini tek ekranda birleştirir.
  • Copy public URL artık liste eylem sütunu yerine düzenleme ekranındaki File Details alanında bulunur.
  • Silme işlemi, tarayıcı onay işaretlemesi yerine standart yönetim modalı artı Danger Zone desenini izler.

Site Değişkenleri

  • Site Değişkenleri, site_variables tablosunda ilişkisel olarak saklanır.
  • Bunlar; anahtar, etiket, değer, etkinlik durumu ve sıralama düzeni içeren, site kapsamlı, sıralı kayıtlardır.
  • Desteklenen herkese açık jeton söz dizimi, isteğe bağlı iç boşluklarla birlikte tam olarak {{ site.variable_key }} biçimindedir.
  • Anahtarlar küçük harfli snake_case biçimine normalleştirilir ve muhafazakar ^[a-z][a-z0-9_]*$ desenine uymalıdır.
  • Bilinmeyen jetonlar, devre dışı değişkenler, geçersiz anahtarlar ve site dışı jetonlar değişmeden kalır.
  • Değiştirme yalnızca metin ikamesidir. Genel bir şablon motoru değildir.
  • Koşullar, döngüler, fonksiyon çağrıları, env erişimi, config erişimi, PHP çalıştırma, iç içe değişkenler veya rastgele ifadeler desteklenmez.
  • Değiştirme yalnızca paylaşılan herkese açık işleme ve herkese açık arama dizinleme sırasında gerçekleşir.
  • Yönetim formları ve yönetim önizlemeleri, saklanan ham jeton metnini korur.
  • Değişken değerleri düz metin olarak ele alınır. HTML destekleyen herkese açık bağlamlarda, çalıştırılabilir işaretleme olarak değil, kaçışlanmış metin olarak eklenir.

Sayfa Oluşturucu

Düzenleme, slotlar üzerinden yapılır.

Tipik akış:

  1. Bir sayfa oluşturun.
  2. Bir yerleşim atayın.
  3. Yerleşimin slotlarını düzenleyin.
  4. Bu slotların içine bloklar ekleyin ve sıralayın.

Bloklar üst-alt ilişkilerine sahip olabilir; bu, modeli belirsiz veri yığınlarına dönüştürmeden gruplanmış içerik yapılarına olanak tanır.

Bloklar

Bloklar, CMS'in yeniden kullanılabilir editoryal birimleridir.

  • Paylaşılan veriler; yapıyı, yerleştirmeyi, varlıkları ve operasyonel ayarları tutar.
  • Çevrilmiş veriler, her dil için kullanıcıya görünen metni tutar.
  • Kullanıcıya görünen içerik, rastgele JSON yığınlarında saklanmaz.

Sistem gezinme blokları da aynı ilişkisel kurala uyar. Navbar, uyumluluk için kalıcı sticky-navbar tanıtıcısını korur, ancak artık ilkel bir kapsayıcı blok gibi davranır: yalnızca nav.wb-navbar ile iç içe alt blokları işler. Kendi başına marka işaretlemesi, menü bağlantıları, üst bilgi eylemleri veya zorunlu bir kapsayıcı işlemez.

Navbar bileşimi, JSON güdümlü değil ilişkiseldir:

  • Navbar yalnızca sarmalayıcı semantiğinin ve paylaşılan bir Position ayarının sahibidir.
  • Container, genişlik kısıtının sahibidir. Eski kapsayıcılar uyumluluk için hâlâ yığılmış akışı varsayılan olarak kullanır, ancak Flow = None, Container'ı yerleşim açısından nötr yapar; böylece bileşimi alt yerleşim blokları kontrol eder.
  • Cluster, yatay veya gruplanmış yerleşim ilkelidir. Ayarları; genişliği, yaslamayı, çapraz eksen hizalamasını, satır kaydırmayı ve boşluğu kontrol eder.
  • Stack, dikey akış ilkeli olarak kalır.
  • Navbar Brand, logonun ve marka metninin sahibidir.
  • Navbar Navigation, menü seçiminin sahibidir ve site navigation_items öğelerini WebBlocks UI navbar sınıflarıyla işler. Dar ekranlarda ayrıca, marka ve üst bilgi eylemlerini ana navbar satırında bırakırken aynı menüyü WebBlocks UI açılır menü davranışıyla açan erişilebilir bir burger düğmesi işler.
  • Header Actions, Search Form, Container ve diğer uyumlu bloklar, gerektiğinde Navbar içine alt öğe olarak yerleştirilebilir.
  • Navbar Brand ve Navbar Navigation, Navbar ata ağacının içinde bir yerde bulunmalıdır, ancak kök Navbar blokunun doğrudan alt öğeleri olmaları gerekmez.
  • Navbar Brand, bir logo görseli varsa yalnızca logo kullanımını destekler. Görünür başlık metni boş olduğunda, açık bir erişilebilir etiket veya çözümlenen site etiketi güvenli geri dönüş adını sağlar.

Önerilen bileşim:

  • Navbar
  • Container (Flow: None)
  • Cluster (Width: Full, Justify: Between, Align: Center, Wrap: Nowrap)
  • Navbar Brand
  • Cluster (Justify: End, Align: Center, Wrap: Nowrap)
  • Navbar Navigation
  • Header Actions

Genişlik için Container, yatay dağıtım için Cluster, dikey akış için Stack kullanın. Navbar yalnızca nav sarmalayıcısı olarak kalır ve kendi başına CMS'e özgü yerleşim yardımcıları eklemez.

Bu, üst bilgi bileşimini açık ve yeniden kullanılabilir tutar; yalnızca CMS'e özgü bir navbar tasarım yüzeyini çoğaltmak yerine WebBlocks UI ile uyumlu kalmasını sağlar.

Bu; çoklu site, yerelleştirme, revizyonlar ve herkese açık işleme genelinde içerik sahipliğini net tutar.

Arama

Arama V1, proje katmanı web sitesi mantığı değil, türetilmiş herkese açık altyapıdır.

  • Arama yalnızca yayında olan herkese açık sayfaları dizinler.
  • Arama satırları site ve dil (locale) bazında kapsamlanır.
  • Arama, başlık ve herkese açık URL meta verileri için doğruluk kaynağı olarak sayfa çevirilerini kullanır.
  • Arama içeriği, sayfaya ait yayındaki bloklar ile tüketen sayfanın bağlamında çözümlenen uyumlu Ortak Slot bloklarından oluşturulur.
  • Gizli Ortak Slot kaynak sayfaları, herkese açık rota çözümlemesinden ve bağımsız arama sonuçlarından hariç tutulur.
  • İlk sürüm, türetilmiş satırları public_search_index veritabanı tablosunda saklar ve harici bir arama hizmeti yerine muhafazakar SQL eşleştirmesi kullanır.
  • Arama satırları türetilmiş çalışma zamanı verileridir ve CMS içeriğinden güvenle yeniden oluşturulabilir.

Sayfa Yerleşimleri

Herkese açık sayfa yapısı, sayfa ve slot katmanında kontrol edilir.

  • Page Layout, sayfa düzeyindeki dış kabuk yapılandırmasının yönetim arayüzüne dönük adıdır.
  • Sayfa Yerleşimleri artık Admin -> System -> Page Layouts altında yönetilen kurulum düzeyinde kayıtlardır.
  • Saklanan uyumluluk alanı bu aşamada public_shell olarak kalır; böylece mevcut sayfa verileri ve tanıtıcılar (handle) geçerliliğini korur.
  • default, standart genel (public) kabuktur.
  • docs, üstbilgi, kenar çubuğu ve ana içerik bölgeleri olan yerleşimler için belgelendirme odaklı kabuktur.
  • Yerleşik Default Layout ve Docs Layout, sabit default ve docs tanıtıcılarına sahip, hazır gelen sistem yerleşimleridir.
  • Sayfalar, ayrı bir çözümlenmiş kabuk modu değil, seçilen Sayfa Yerleşimi tanıtıcısını saklar.
  • Sayfa Yerleşimi artık isteğe bağlı, doğrulanmış genel body_class belirteçlerinin sahibidir.
  • Sayfa Yerleşimi Slotları, bir Sayfa Yerleşimine bağlı, kurulum düzeyinde ilişkisel kayıtlardır; slot sırasını ve sarmalayıcı meta verilerini tanımlar.
  • Slot Tipleri, Sayfa Yerleşimi Slotu ataması için yeniden kullanılabilir katalogdur.
  • Çalışma zamanı işleme (rendering), mümkün olduğunda saklanan tanıtıcıyı bir Sayfa Yerleşimi kaydına çözümler, ardından body sınıflarını ve slot sarmalayıcılarını bu kaydın yönetilen Sayfa Yerleşimi Slotlarından çözümler.
  • Body Class, genel <body> üzerinde yerleşime özgü CSS için tasarlanmıştır; Sayfa Yerleşimi Slotu sarmalayıcı id ve sınıfları ise o yerleşimin içinde bölge düzeyinde CSS kancaları sağlar.
  • Genel Navbar'ın yapışkan (sticky) davranışı, ürünle gelen wb-navbar temel bileşeninden gelir. Varsayılan bir genel üstbilgi slotu yalnızca bir Navbar bloğu içerdiğinde, CMS slot sarmalayıcısını nav.wb-navbar köküne yükseltir; böylece yapışkan davranış fazladan bir üstbilgi sarmalayıcısıyla kısıtlanmaz.
  • Sayfayı Düzenle ekranı, seçilen Sayfa Yerleşiminin yönetilen Yerleşim Slotlarını sayfanın mevcut Sayfa Slotlarıyla karşılaştırır.
  • Eksik Yerleşim Slotları, Add Missing Layout Slots ile açıkça eklenebilir.
  • Fazla Sayfa Slotları güvenlik için korunur; silinmek yerine raporlanır.
  • Yeni sayfalar, eski (legacy) slot dizilerine geri düşmeden önce seçilen Sayfa Yerleşiminin etkin yönetilen Sayfa Yerleşimi Slotlarını kullanır.
  • Normal kayıt sırasında Sayfa Yerleşimini değiştirmek, mevcut Sayfa Slotlarını otomatik olarak değiştirmez.
  • V1'deki özel Sayfa Yerleşimleri özel tanıtıcılar kullanabilir; ancak uyumluluk için yine de mevcut default veya docs kabuk davranışını temkinli biçimde yeniden kullanırlar.
  • Slot adı, o bölgenin anlamsal genel sarmalayıcı rolünü belirler.
  • Slot sarmalayıcıları, mümkün olduğunda yönetilen Sayfa Yerleşimi Slotlarından otomatik olarak çözümlenir; yerleşik yerleşimler için eski geri dönüş tanımları vardır. Bilinmeyen slotlar güvenli varsayılan div sarmalayıcısını kullanır.
  • Gelişmiş güvenilir yerleşim HTML'i yalnızca sarmalayıcıya bitişik yapısal işaretleme içindir. Genel bir betik (script) yüzeyi değildir ve betikler için kullanılmamalıdır.
  • Üstbilgi slotları varsayılan olarak yerleşimden bağımsızdır ve blok ağaçlarının çevresine wb-stack uygulanmasını zorlamaz.
  • Ana slotlar, bu sunum bilinçli olarak istendiğinde, yığılmış ritmi kabuk parçaları (partial) üzerinden yine kendileri üstlenebilir.
  • Üstbilgi ile ana içerik arasındaki boşluk, Navbar veya diğer tekil üstbilgi bloklarına değil, genel kabuk sarmalayıcısına aittir. Varsayılan kabuğun üstbilgi ve ana içerik sarmalayıcıları bu ritmi üstlenir; böylece ilk içerik bloğunun geçici üst kenar boşluklarına ihtiyacı olmaz.
  • Yapışkan navbar davranışı, ürünle gelen WebBlocks UI .wb-navbar sözleşmesinin sahipliğinde kalmalıdır. Sayfa yerleşimi ve üstbilgi slotu sarmalayıcıları sayfa düzeyindeki yapının sahibidir; ancak CMS paralel bir yapışkan navbar sınıfı eklememelidir.
  • Bloklar içeriği bu slot sarmalayıcılarının içinde işler ve dış sayfa kabuğunun sahibi olmamalıdır.
  • Sayfa Yerleşimi doğrulaması, yapısal boşluklar için güvenilir sarmalayıcı parçacıklarına izin verir; ancak betikleri, olay özniteliklerini, javascript: URL'lerini, iframe, object ve embed içeriğini reddeder.

Belgelendirme tarzı sayfalarda, yerleşim sorumluluğunu tekil içerik bloklarına itmek yerine sayfa yerleşimini kullanın. Olağan tarif, kabuğun bu slotları docs navbar'ına, kenar çubuğuna ve ana içerik sarmalayıcılarına otomatik olarak eşleyebilmesi için Header, Sidebar ve Main slotlarıyla Page Layout = Docs Layout kullanmaktır.

V1'de dış genel kabuk seçiminin sahibi Sayfa Yerleşimi, bölge sarmalayıcı anlamlarının sahibi slot adları, bu sarmalayıcıların içindeki içeriğin sahibi ise bloklardır.

Genel Meta Veriler

  • Genel meta veriler, Project Identity'den veya düzenlenebilir eski uygulama adı ya da slogan ayarlarından değil, geçerli site ve geçerli sayfa çevirisi bağlamından çözümlenir.
  • Genel sayfa başlıkları varsayılan olarak Site Label · Page Label biçimindedir.
  • Site etiketi öncelik sırası: site display_name, site seo_title, site name, ardından güvenli bir CMS geri dönüş değeri.
  • Sayfa etiketi öncelik sırası: sayfa çevirisi seo_title, ardından sayfa çevirisi başlığı.
  • Açıklama öncelik sırası: sayfa çevirisi seo_description, site seo_description, ardından açıklama etiketi yok.
  • Anahtar sözcük öncelik sırası: sayfa çevirisi seo_keywords, site seo_keywords, ardından anahtar sözcük etiketi yok.
  • Open Graph başlık önceliği: sayfa çevirisi og_title, aksi halde aynı site-öncelikli genel başlık deseni.
  • Open Graph açıklama önceliği: sayfa çevirisi og_description, sayfa çevirisi seo_description, site seo_description.
  • Open Graph görsel önceliği: sayfa çevirisi og_image_media_id, site social_image_media_id, ardından og:image etiketi yok.
  • Site favicon medyası değişmemiştir ve bu aşamada yalnızca site düzeyinde kalır.
  • Çoklu site meta verileri, çözümlenen genel site üzerinden ana bilgisayar (host) duyarlı kalır; geçerli host ile başka bir site eşleştiğinde birincil site körü körüne kullanılmaz.

Arama Bağlamı

  • Genel arama, çözümlenen site ve dil (locale) kapsamında kalır.
  • Arama penceresi (modal) metni, kullanıcıların hangi sitede arama yapıldığını görebilmesi için çözümlenen site etiketini içerebilir.
  • Genel arama metinleri Project Identity'yi değil, Site Identity'yi kullanır.

Ortak Slotlar

Ortak Slotlar, mevcut sayfa yerleşimi modelinin altında yer alan bir slot içeriği sahipliği katmanıdır.

  • Hangi slotların kullanılabilir olduğunun sahibi hâlâ sayfa yerleşimidir.
  • Her slotun genel sarmalayıcılarının sahibi hâlâ sayfa kabuğu ile slot adıdır.
  • Her sayfa slotu kaynağı page, shared_slot veya disabled olabilir.
  • page, slotun doğrudan sayfaya ait blokları kullandığı anlamına gelir; bu, mevcut davranıştır.
  • shared_slot, slotun genel çalışma zamanında dinamik olarak işlenen, site kapsamlı yeniden kullanılabilir bir Ortak Slot blok ağacına başvurduğu anlamına gelir.
  • disabled, slot sarmalayıcısının hâlâ var olduğu ancak içinde hiçbir blok işlenmediği anlamına gelir.
  • Ortak Slotlar, kopya tabanlı şablonlar değil, site kapsamlı yeniden kullanılabilir slot blok ağaçlarıdır.
  • Ortak Slot başvuruları yalnızca aynı site içinde geçerlidir. Siteler arası sayfa işlemleri, uyumlu bir hedef site Ortak Slotuna yeniden eşlemeli ya da işleme ve açık kullanıcı seçimine bağlı olarak güvenli bir engellenmiş veya devre dışı sonuca geri düşmelidir.
  • Ortak Slotlar sayfa kabuklarının veya slot sarmalayıcılarının sahibi değildir. Dış kabuğun sahibi hâlâ sayfa kabuğudur ve header, main, sidebar veya diğer slot bölgeleri için sarmalayıcının sahibi hâlâ tüketen sayfa slotudur.
  • Geçerli bir Ortak Slot, yalnızca mevcut sayfa slotu sarmalayıcısının içinde işlenen blok ağacını katkı olarak sunar.
  • Genel Ortak Slot işleme temkinlidir:
  • Siteler arası ortak slot başvuruları hiçbir şey işlemez.
  • Ortak Slot yönetim ekranları, isteğe bağlı SharedSlot.public_shell kısıtını Page Layout olarak tanımlar; ancak saklanan alan adı bu sürümde geriye dönük uyumluluk için public_shell olarak kalır.
  • SharedSlot.public_shell ayarlanmışsa, tüketen sayfanın yerleşim tanıtıcısıyla birebir eşleşmelidir.
  • SharedSlot.slot_name ayarlanmışsa, tüketen sayfa slotunun adıyla eşleşmelidir.
  • Null veya boş public_shell ve slot_name değerleri genel eşleşme olarak davranır.
  • shell_type = docs değerine eşlenen özel bir Sayfa Yerleşimi tanıtıcısı, V1'de docs ile kısıtlanmış bir Ortak Slot ile otomatik olarak eşleşmez.

Geçerli kapsam artık Ortak Slotlar için temel altyapıyı, genel işlemeyi, site kapsamlı yönetim ekranlarını, sayfa slotu kaynak atamasını ve site taşınabilirliği desteğini içerir.

  • Ortak Slotların, yönetim panelinin site içeriği alanı altında kendi yönetim listesi ve meta veri formları vardır.
  • Ortak Slot blok ağaçları, içeriği tüketen sayfa slotlarına kopyalamak yerine mevcut blok yazma modelini yeniden kullanan özel bir Ortak Slot blok editörüyle düzenlenir.
  • Ortak Slot blokları, shared_slot_blocks üzerinden bağlanan gerçek blocks kayıtları olarak kalır; çevrilmiş metinler mevcut çeviri tablolarında durmaya devam eder.
  • Herhangi bir sayfa slotu hâlâ ona başvururken bir Ortak Slotun silinmesi engellenir.
  • Sayfa editörü artık üç desteklenen kipe sahip, slot başına bir kaynak seçici sunar:
  • Page Content: page_slots.source_type = page ve shared_slot_id = null.
  • Shared Slot: page_slots.source_type = shared_slot ve shared_slot_id, aynı siteden uyumlu, etkin bir Ortak Slotu işaret eder.
  • Disabled: page_slots.source_type = disabled ve shared_slot_id = null.
  • Bir slotun kaynağını değiştirmek, o slot için mevcut sayfaya ait blok ağacını silmez veya ayırmaz. Bir editör slotu shared_slot veya disabled kipine geçirirse, sayfaya ait bloklar bağlı kalır; böylece Page Content kipine geri dönüldüğünde önceki sayfaya özgü içerik geri gelir.
  • Eksik Yerleşim Slotlarını ekleme de aynı güvenlik ilkesini izler: yalnızca yeni Sayfa Slotları oluşturur; mevcut Ortak Slot destekli slotları, Devre Dışı slotları veya sayfaya ait blok ağaçlarını değiştirmez.
  • Sayfa editörü Ortak Slot seçeneklerini temkinli biçimde filtreler. Yalnızca aynı sitedeki etkin Ortak Slotlar görünür ve isteğe bağlı Ortak Slot public_shell ve slot_name kısıtları, tüketen sayfanın kabuğu ve slot adıyla eşleşmelidir.
  • Ortak Slot yönetim formları artık bu isteğe bağlı public_shell kısıtını Page Layout olarak etiketler; böylece kullanıcıya dönük terim, Sayfa editörü ve Sayfa Yerleşimi yönetim ekranlarıyla uyuşur.
  • Site dışa/içe aktarma ve klonlama, sayfa düzeyindeki public_shell tanıtıcılarını sayfa yapılandırmasının bir parçası olarak aktarmaya devam eder. Kurulum düzeyindeki Sayfa Yerleşimi tanımları V1'de kuruluma özgü kalır; bu nedenle hedef kurulumlar, geri dönüş olmadan işlenmesini bekledikleri özel tanıtıcıları kendileri tanımlamalıdır.
  • Kurulum düzeyindeki Sayfa Yerleşimi Slotu tanımları da V1'de kuruluma özgü kalır.
  • Yazma zamanı doğrulamasından sonra bile çalışma zamanı genel işleme korumaları yerinde kalır; bu nedenle geçersiz, bayat, siteler arası, pasif veya uyumsuz atamalar genel tarafta yine hiçbir ortak içerik işlemez.
  • Ortak Slotlar artık site dışa/içe aktarmaya ve site klonlamaya katılır. Meta verileri, gizli kaynak sayfası blok ağaçları, çevirileri, iç içe sıralamaları ve medya başvuruları birinci sınıf site içeriği olarak aktarılır. Tüketen sayfa slotları dışa aktarma sırasında shared_slot başvurularını Ortak Slot tanıtıcısı üzerinden korur ve içe aktarma ile klonlama sırasında hedef sitedeki Ortak Slotlara yeniden eşlenir.
  • Gizli Ortak Slot kaynak sayfaları dahili kalır. Blok kayıtları Ortak Slot editörünü ve taşınabilirlik akışlarını desteklemeye devam etse de, normal sayfa dışa aktarma yüklerinden, olağan sayfa listelerinden ve genel yönlendirmeden hariç tutulurlar.
  • Ortak Slotların artık sayfa revizyonlarından bilinçli olarak ayrı tutulan kendi revizyon geçmişi ve geri yükleme akışı vardır.
  • Ortak Slot revizyonları, Ortak Slot meta verilerini ve gizli dahili kaynak sayfasının arkasındaki yeniden kullanılabilir Ortak Slot blok ağacını yakalar.
  • Bir Ortak Slot revizyonunu geri yüklemek, Ortak Slotu yerinde geri yükler. Ortak Slot id'si sabit kalır, mevcut page_slots.shared_slot_id başvuruları bozulmadan kalır ve geri yüklenen içerik, o Ortak Slota başvuran her sayfayı anında etkiler.
  • Ortak Slot revizyonları, sayfa revizyonlarını Ortak Slot içeriği için yetkili saymaz; sayfa revizyonları da Ortak Slot blok ağaçlarını yakalıyormuş gibi davranmaz.

Sayfa ve Blok Yayınlama

Sayfa iş akışı yayınlama ile blok yayınlama varsayılan olarak ayrıdır. Bir sayfa kaydını yayınlamak, dil (locale)/yol kuralları eşleştiğinde sayfayı yönlendirilebilir yapar; ancak o sayfanın içindeki taslak veya incelemedeki blokları sessizce yayınlamaz. Bu, editörlerin ve gözden geçirenlerin, seçili blokları daha sonraki incelemeye bırakırken sayfa kabuğunu yayınlamasına olanak tanır.

Bir kullanıcı sayfaya ait blokları dahil etmeyi açıkça seçtiğinde, WebBlocks CMS yalnızca sayfanın ortak olmayan sayfa slotlarına ait blokları yayınlar. Sayfaya ait bu slotların altındaki iç içe alt bloklar dahil edilir. Ortak Slot destekli slotlar hariç tutulur; bunların yeniden kullanılabilir blok ağaçları, Ortak Slota özgü iş akışları üzerinden incelenmeli ve yayınlanmalıdır.

Internal Content API aynı kuralı izler. POST /webadmin/api/pages/{page}/publish varsayılan olarak include_page_owned_blocks: false kullanır, content.publish gerektirir ve Ortak Slotları hariç tutar. AI/operatör araçları, include_page_owned_blocks: true seçeneğini yalnızca açık kullanıcı onayıyla etkinleştirmelidir.

Site Promotion Sınırı

  • Site Promotion, tüm kurulum üzerinde değil, siteye ait içerik üzerinde çalışır.
  • Güvenli site kimliği alanlarını, dil (locale) atamalarını, site değişkenlerini, sayfaları, sayfa çevirilerini, slotları, blokları, Ortak Slotları, gezinmeyi, sayfa varlıklarını ve isteğe bağlı paket dosyası varlıklarını güncelleyebilir.
  • Kullanıcılar, oturumlar, yedekler, güncelleme geçmişi, iletişim formu gönderimleri, ziyaretçi raporlaması, alan adları, ortam ayarları ve gizli anahtarlar gibi kurulum düzeyi ve canlı çalışma zamanı verilerini korur.
  • public_search_index tablosunu taşınabilir içerik olarak ele almaz. Arama satırları, uygulama sonrasında terfi ettirilen içerikten yeniden oluşturulur.
  • Ham veritabanı çoğaltması değil, denetimli bir paket iş akışıdır.

Proje Sınırı

WebBlocks CMS çekirdeği, yeniden kullanılabilir CMS işlevselliğini içerir.

  • CMS güncellemelerinden etkilenmemesi gereken kuruluma özgü kodu project/ içinde tutun.
  • Yeniden kullanılabilir ürün özelliği olmadıklarında siteye özgü komutları, görünümleri, rotaları, yapılandırmayı, içe aktarma yardımcılarını ve taşıma (migration) iş akışlarını çekirdeğin dışında tutun.
  • project/ dizinini tek bir kurulum için güncellemeye dayanıklı genişletme sınırı olarak ele alın.
  • Bloklar, yerleşimler, yönetim arayüzü, genel işleyiciler, iş akışı, yedekleme/geri yükleme, dışa/içe aktarma ve genel proje katmanı desteği gibi yeniden kullanılabilir ürün davranışlarını çekirdekte tutun.
  • Site taşıma/içe aktarma yardımcılarını ve kuruluma özgü içerik eşitleme araçlarını project/ içinde tutun.
  • Hızlı web sitesi taşıma köprüleri, bilinçli olarak geçici ve web sitesine özgü olduklarında project/ içinde yer alabilir. WebBlocks UI kalan-dokümanlar içe aktarıcısı buna bir örnektir: alınan doküman <main> parçalarını, CMS çekirdeğine o web sitesini öğretmeden, proje yükü biçiminde güvenilir HTML olarak saklar.
  • Bu tür bir köprü, mevcut derlenmiş CMS içeriğini korumalı, kabuk veya gezinme davranışını CMS'in sahipliğinde bırakmalı ve geçici güvenilir HTML sınırını açıkça belirtmelidir; böylece daha sonra birinci sınıf bloklara dönüştürme olanağı korunur.
  • Çekirdek sürüm paketleri project/ içeriğini içermez.

Tam geliştirme ve sürüm iş akışı için ../DEVELOPMENT.md dosyasına bakın.