{{-- SEO sekmesi — LEDGER (defter) tasarımı: müşteri Künyesiyle aynı sabit kalıp. Canlı Google önizlemesi + karakter sayaçları + etiket-çip motoru _qv-seo-ui'de (pfx alanlarını da okur); kayıt sözleşmesi değişmedi: blur/Enter → update-field PATCH. Meta satırları ledger-card ile DEĞİL elle çizilir: her satır _qv-seo-ui'nin beklediği data-seo/data-max kancalarını ve etiket yanındaki .qv-cc sayacını taşır. Günübirlik, kültür ve yurtdışı turlarının ortak SEO sekmesidir. Gerekli: $tour, $editBase. Opsiyonel: $uf, $urlSegment --}} @php $uf = $uf ?? route("$editBase.update-field", $tour); $tagsArr = is_array($tour->tags ?? null) ? $tour->tags : []; $previewTitle = $tour->meta_title ?: $tour->name; $previewDesc = $tour->meta_description ?: ($tour->short_description ?: 'Bu tur için henüz bir açıklama girilmedi.'); $host = preg_replace('#^https?://#', '', rtrim(config('app.url'), '/')); // editBase 'agency.products.gunubirlik-turlar' → 'gunubirlik-turlar' $urlSegment = $urlSegment ?? \Illuminate\Support\Str::afterLast($editBase, '.'); $previewUrl = $host . ' › ' . $urlSegment . ' › ' . ($tour->slug ?? ''); // Meta satırları: seo => _qv-seo-ui kancası (data-seo/data-max + canlı sayaç) $seoRows = [ ['label' => 'Meta Başlık', 'field' => 'meta_title', 'type' => 'text', 'seo' => 'title', 'max' => 60, 'value' => $tour->meta_title, 'ph' => 'Boş: tur adı kullanılır'], ['label' => 'Meta Açıklama', 'field' => 'meta_description', 'type' => 'textarea', 'seo' => 'desc', 'max' => 160, 'value' => $tour->meta_description, 'ph' => 'Boş: kısa açıklama kullanılır'], ['label' => 'Anahtar Kelimeler', 'field' => 'meta_keywords', 'type' => 'text', 'seo' => null, 'max' => null, 'value' => $tour->meta_keywords, 'ph' => 'virgül, ile, ayrılmış'], ]; $seoEmpty = collect($seoRows)->filter(fn ($r) => blank($r['value']))->count(); @endphp