cf46e30a7e
Rakip analizi (kocaelidijital.com, promedyanet.com, lf.com.tr) sonrası
satış blokerleri tespit edildi ve aşağıdaki bölümler eklendi:
1. ANASAYFADA SSS (8 hazır soru, admin'den düzenlenebilir)
- Fiyat, süre, ödeme, garanti, hosting, SEO, mevcut site yenileme,
sadece tasarım hizmeti gibi en sık sorulan sorular
- HomepageFaq component (sticky sol + accordion sağ)
- site_settings.homepage_faq[] (JSON {q,a})
2. RISK REVERSAL bölümü (Guarantee component)
- 'İlk taslak ücretsiz, memnun değilseniz devam etmiyoruz'
- 4 garanti maddesi checklist
- site_settings.guarantee_title/description/items
3. PROJE METRİKLERİ (vaka çalışması güçlendirme)
- projects.metrics[] (JSON {value,label})
- Detay sayfada büyük metric kartları
- Admin formda 'değer | etiket' satır formatı
4. HERO COPY GÜNCELLEMESİ (admin'den düzenlenebilir)
- 'Kocaeli'de 2-3 hafta içinde yayında olan, satan kurumsal web siteleri'
- 'İlk tasarım taslakı ücretsiz' vurgusu
- Trust band: 30 dk yanıt + ücretsiz taslak + 4.9 memnuniyet
5. /SITE-ANALIZI LEAD MAGNET SAYFASI
- URL + ad + email + telefon formu
- 6 analiz başlığı (CWV, mobil, SEO, güvenlik, içerik, rakip)
- contact_messages'a source=quick-site-audit ile yazılır
- 'subject' alanı ile inbox'ta ayırt edilebilir
6. EKİP BÖLÜMÜ (Hakkımızda sayfasında)
- Yeni team_members tablosu (name, role, bio, photo, linkedin)
- /admin/ekip CRUD sayfası
- TeamGrid component
7. SEKTÖR LANDING SAYFALARI (/sektor/[slug])
- Yeni industries tablosu (slug, title, content, features, faq, SEO)
- /admin/sektorler CRUD sayfası
- SEO + ad-targeted landing template
- Hero + trust + features + content + garanti + projeler + hizmetler + FAQ + JSON-LD
Admin /admin/site formuna yeni bölümler:
- 'Risk reversal / Garanti' (title + description + items)
- 'Anasayfa SSS' (---' bloklarla)
App sidebar'a 'Sektörler' ve 'Ekip' linkleri eklendi.
Footer'a 'Ücretsiz Site Analizi' linki eklendi.
36 route üretiliyor (önceki 31'den +5: /site-analizi, /sektor/[slug],
/admin/ekip + alt, /admin/sektorler + alt).
52 lines
1.6 KiB
TypeScript
52 lines
1.6 KiB
TypeScript
import Link from "next/link";
|
||
import { ArrowRight } from "lucide-react";
|
||
import { FaqList } from "@/components/faq-list";
|
||
import { SectionTitle } from "@/components/section-title";
|
||
import type { FaqItem, SiteSettingsRow } from "@/lib/types";
|
||
|
||
function parseFaq(items?: string[] | null): FaqItem[] {
|
||
if (!items) return [];
|
||
const out: FaqItem[] = [];
|
||
for (const raw of items) {
|
||
try {
|
||
const obj = JSON.parse(raw) as Partial<FaqItem>;
|
||
if (obj.q && obj.a) out.push({ q: obj.q, a: obj.a });
|
||
} catch {
|
||
/* ignore */
|
||
}
|
||
}
|
||
return out;
|
||
}
|
||
|
||
export function HomepageFaq({
|
||
settings,
|
||
}: {
|
||
settings?: SiteSettingsRow | null;
|
||
}) {
|
||
const items = parseFaq(settings?.homepage_faq);
|
||
if (items.length === 0) return null;
|
||
|
||
return (
|
||
<section className="border-t border-[var(--border)] py-20">
|
||
<div className="mx-auto grid max-w-6xl gap-12 px-6 lg:grid-cols-[1fr_2fr]">
|
||
<div className="lg:sticky lg:top-24 lg:self-start">
|
||
<SectionTitle
|
||
align="left"
|
||
eyebrow="SSS"
|
||
title="Aklınızdaki sorular"
|
||
description="Müşterilerimizin en sık sorduğu konular. Cevabı burada bulamadığınız her şey için bizi arayın."
|
||
/>
|
||
<Link
|
||
href="/iletisim"
|
||
className="mt-6 inline-flex items-center gap-2 rounded-full bg-[var(--navy)] px-5 py-2.5 text-sm font-medium text-white transition hover:bg-[var(--navy-700)]"
|
||
>
|
||
Sorunuz mu var?
|
||
<ArrowRight className="size-4" />
|
||
</Link>
|
||
</div>
|
||
<FaqList items={items} />
|
||
</div>
|
||
</section>
|
||
);
|
||
}
|