Files
clinicpro/templates/public/landing.html.twig
T

156 lines
5.8 KiB
Twig

{# قالب مشترک صفحات فرود. تم دقیقاً همان صفحهٔ اصلی است — همان entry وبپک، همان هدر و
فوتر و مودال. فقط متن و متادیتا از LandingPage می‌آید. #}
{% set base = app.request.schemeAndHttpHost %}
{% set url = base ~ '/' ~ page.slug %}
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>{{ page.metaTitle }}</title>
<link rel="icon" type="image/svg+xml" href="/logo.svg"/>
<link rel="apple-touch-icon" href="/logo.svg"/>
<meta name="description" content="{{ page.metaDescription }}"/>
<meta name="keywords" content="{{ page.keywords }}"/>
<link rel="canonical" href="{{ url }}"/>
<meta name="robots" content="index, follow, max-image-preview:large"/>
<meta property="og:type" content="website"/>
<meta property="og:site_name" content="کلینیک پرو"/>
<meta property="og:title" content="{{ page.metaTitle }}"/>
<meta property="og:description" content="{{ page.metaDescription }}"/>
<meta property="og:url" content="{{ url }}"/>
<meta property="og:image" content="{{ base }}/logo.svg"/>
<meta property="og:locale" content="fa_IR"/>
<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:title" content="{{ page.metaTitle }}"/>
<meta name="twitter:description" content="{{ page.metaDescription }}"/>
<meta name="twitter:image" content="{{ base }}/logo.svg"/>
{# JSON-LD با json_encode ساخته می‌شود نه رشتهٔ دستی: متن فارسی نقل‌قول و کاراکتر
کنترلی دارد و JSONِ دست‌ساز در Twig خیلی راحت نامعتبر می‌شود. #}
<script type="application/ld+json">
{{ {
'@context': 'https://schema.org',
'@graph': [
{
'@type': 'SoftwareApplication',
'@id': url ~ '#software',
'name': page.h1,
'applicationCategory': 'BusinessApplication',
'operatingSystem': 'Web',
'url': url,
'description': page.metaDescription,
'inLanguage': 'fa-IR',
'offers': {
'@type': 'Offer',
'price': '0',
'priceCurrency': 'IRR',
'description': 'پلن رایگان برای شروع'
},
'publisher': { '@type': 'Organization', 'name': 'کلینیک پرو', 'url': base ~ '/' }
},
{
'@type': 'BreadcrumbList',
'@id': url ~ '#breadcrumb',
'itemListElement': [
{ '@type': 'ListItem', 'position': 1, 'name': 'کلینیک پرو', 'item': base ~ '/' },
{ '@type': 'ListItem', 'position': 2, 'name': page.h1, 'item': url }
]
}
]|merge(page.faq is not empty ? [{
'@type': 'FAQPage',
'@id': url ~ '#faq',
'mainEntity': page.faq|map(item => {
'@type': 'Question',
'name': item.q,
'acceptedAnswer': { '@type': 'Answer', 'text': item.a }
})
}] : [])
}|json_encode(constant('JSON_UNESCAPED_UNICODE') b-or constant('JSON_UNESCAPED_SLASHES'))|raw }}
</script>
{{ encore_entry_link_tags('home') }}
</head>
<body>
{{ include('public/_header.html.twig') }}
<main>
<section class="hero" id="hero">
<div class="wrap hero-grid">
<div class="hero-copy">
<h1 class="reveal">{{ page.h1 }}</h1>
<p class="reveal d1">{{ page.lead }}</p>
<div class="hero-actions reveal d2">
{# همان idهایی که اسکریپت مودال به آن‌ها bind می‌شود. #}
<button class="btn btn-coral" id="openRegModal2">رایگان شروع کنید</button>
<a href="#contact" class="btn btn-blue">درخواست دمو</a>
</div>
</div>
{{ include('public/_hero_art.html.twig') }}
</div>
</section>
<section class="fcols" id="features">
<div class="wrap fcols-grid">
{% for feature in page.features %}
<div class="fcol reveal{% if loop.index0 % 3 == 1 %} d1{% elseif loop.index0 % 3 == 2 %} d2{% endif %}">
<h3>{{ feature.title }}</h3>
<p>{{ feature.body }}</p>
</div>
{% endfor %}
</div>
</section>
{% if page.faq is not empty %}
{# specs-head عنوان را وسط و با فاصلهٔ درست می‌نشاند؛ h2 لخت داخل گرید
می‌افتد و به کارت اول می‌چسبد. #}
<section class="specs" id="faq">
<div class="wrap">
<div class="specs-head reveal">
<span class="eyebrow">پرسش‌های متداول</span>
<h2>{{ page.h1 }} — آنچه بیشتر پرسیده می‌شود</h2>
</div>
<div class="fcols-grid">
{% for item in page.faq %}
<div class="fcol reveal">
<h3>{{ item.q }}</h3>
<p>{{ item.a }}</p>
</div>
{% endfor %}
</div>
</div>
</section>
{% endif %}
{% if related is not empty %}
<section class="specs" id="related">
<div class="wrap">
<div class="specs-head reveal">
<span class="eyebrow">راهکارهای دیگر</span>
<h2>کلینیک پرو برای صنف شما</h2>
<p>هر مجموعه نیاز خودش را دارد؛ نسخهٔ متناسب با کار خود را ببینید.</p>
</div>
<div class="specs-grid">
{% for item in related %}
<a class="spec-card reveal" href="/{{ item.slug }}" style="text-decoration:none;color:inherit;display:block">
<h3>{{ item.h1 }}</h3>
<p style="font-size:13.5px;color:var(--muted);line-height:1.9;margin-top:12px">{{ item.metaDescription }}</p>
</a>
{% endfor %}
</div>
</div>
</section>
{% endif %}
{{ include('public/_reg_modal.html.twig') }}
</main>
{{ include('public/_footer.html.twig') }}
{{ include('public/_page_scripts.html.twig') }}
{{ encore_entry_script_tags('home') }}
</body>
</html>