Her yerde çalışır.
Next.js, WordPress, Laravel, Django — hangisini kullanıyorsan ol, IHA Chat’i saniyeler içinde ekle. Aşağıdan framework’ünü seç, kodu kopyala, hazırsın.
Framework’ünü seç
Karta tıkla, ilgili rehbere zıpla. Her biri için kopya-yapıştır kod bloğu ve tavsiye edilen konumu paylaşıyoruz.
Plain HTML
Statik siteler ve el yazması HTML sayfaları için tek satırlık kurulum.
<!doctype html>
<html>
<head>
<title>Sitem</title>
</head>
<body>
<!-- Sayfa içeriği -->
<script
src="https://cdn.iha-chat.com/loader.js"
data-site-id="SITE_ANAHTARINIZ"
></script>
</body>
</html>- Etiketin kapanış </body> etiketinden hemen önce yer alması önerilir; sayfa render süresini etkilemez.
- loader.js asenkron yüklenir; diğer script'lerin çalışmasını engellemez.
Next.js
App Router veya Pages Router — next/script bileşeni ile entegrasyon.
// app/layout.tsx
import Script from "next/script";
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="tr">
<body>
{children}
<Script
src="https://cdn.iha-chat.com/loader.js"
data-site-id="SITE_ANAHTARINIZ"
strategy="afterInteractive"
/>
</body>
</html>
);
}// pages/_app.tsx
import Script from "next/script";
import type { AppProps } from "next/app";
export default function App({ Component, pageProps }: AppProps) {
return (
<>
<Component {...pageProps} />
<Script
src="https://cdn.iha-chat.com/loader.js"
data-site-id="SITE_ANAHTARINIZ"
strategy="afterInteractive"
/>
</>
);
}- App Router yapısında next/script kök layout içine yerleştirilir; her sayfada yüklenir.
- strategy="afterInteractive" değeri, sayfa etkileşime hazır olduğunda yüklemeyi başlatır.
React
Create React App, herhangi bir SPA veya SSR kurulumu için standart script etiketi.
<!-- public/index.html -->
<body>
<div id="root"></div>
<script
src="https://cdn.iha-chat.com/loader.js"
data-site-id="SITE_ANAHTARINIZ"
></script>
</body>- Script etiketi public/index.html içine yerleştirilir; React render döngüsüne dahil olmaz.
- Widget'ı yalnızca belirli sayfalarda göstermek için useEffect + document.createElement kullanılabilir.
Vite
Vite tabanlı projeler için index.html içine tek satırlık ekleme.
<!-- index.html -->
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
<script
src="https://cdn.iha-chat.com/loader.js"
data-site-id="SITE_ANAHTARINIZ"
></script>
</body>- Vite public dizinini kök URL olarak sunar; script harici bir kaynaktan yüklendiği için ayrı bir işlem gerekmez.
- Framework bağımsız çalışır: React, Vue, Preact, Svelte, Solid gibi tüm Vite şablonları desteklenir.
Vue
Vue 3 uygulamalarında index.html içine standart script etiketi ile entegrasyon.
<!-- index.html -->
<body>
<div id="app"></div>
<script
src="https://cdn.iha-chat.com/loader.js"
data-site-id="SITE_ANAHTARINIZ"
></script>
</body>- Widget bağımsız olarak yüklenir; Vue reaktivite sistemi ile etkileşime girmez.
- SSR modunda yalnızca istemci tarafında yüklendiği için ek bir kontrol gerekmez.
Angular
src/index.html dosyasına tek satırlık ekleme ile entegrasyon.
<!-- src/index.html -->
<body>
<app-root></app-root>
<script
src="https://cdn.iha-chat.com/loader.js"
data-site-id="SITE_ANAHTARINIZ"
></script>
</body>- Angular Universal (SSR) kurulumlarında script yalnızca tarayıcı ortamında çalışır.
- Widget bağımsız yüklendiği için Angular değişiklik algılama döngüsünü etkilemez.
Nuxt
nuxt.config app.head yapılandırması ile tüm sayfalara otomatik ekleme.
// nuxt.config.ts
export default defineNuxtConfig({
app: {
head: {
script: [
{
src: "https://cdn.iha-chat.com/loader.js",
"data-site-id": "SITE_ANAHTARINIZ",
async: true,
},
],
},
},
});- app.head.script tanımı, script'i tüm sayfaların head/body kısmına ekler.
- Alternatif olarak useHead composable'ı ile belirli sayfalara özel yükleme yapılabilir.
Astro
Layout dosyasının gövdesine is:inline direktifi ile ekleme.
---
// src/layouts/Layout.astro
---
<!doctype html>
<html lang="tr">
<head>
<title>Sitem</title>
</head>
<body>
<slot />
<script
is:inline
src="https://cdn.iha-chat.com/loader.js"
data-site-id="SITE_ANAHTARINIZ"
></script>
</body>
</html>- is:inline direktifi, Astro'nun script'i bundle işlemine dahil etmesini engeller ve doğrudan HTML çıktısına yerleştirir.
- Hydration gerekmez; widget kendi başına başlatılır.
Remix
app/root.tsx içindeki <Scripts /> bileşeninden sonra ekleme.
// app/root.tsx
export default function App() {
return (
<html lang="tr">
<head>
<Meta />
<Links />
</head>
<body>
<Outlet />
<ScrollRestoration />
<Scripts />
<script
async
src="https://cdn.iha-chat.com/loader.js"
data-site-id="SITE_ANAHTARINIZ"
/>
</body>
</html>
);
}- Script gövde sonuna yerleştirildiği için sayfa render süresini etkilemez.
- Her rota geçişinde yeniden yüklenmez; Remix'in client-side navigation yapısıyla uyumludur.
SvelteKit
src/app.html içine %sveltekit.body% sonrası ekleme.
<!-- src/app.html -->
<body data-sveltekit-preload-data="hover">
<div style="display: contents">%sveltekit.body%</div>
<script
src="https://cdn.iha-chat.com/loader.js"
data-site-id="SITE_ANAHTARINIZ"
></script>
</body>- app.html şablonu tüm sayfalar için ortak HTML iskeleti sağlar.
- SvelteKit'in adaptive routing yapısı script'in tekrar yüklenmesine yol açmaz.
WordPress
functions.php dosyasına wp_footer action hook'u ile ekleme.
<?php
// Aktif temanın functions.php dosyasına eklenir.
function ihachat_widget() {
?>
<script
src="https://cdn.iha-chat.com/loader.js"
data-site-id="SITE_ANAHTARINIZ"
></script>
<?php
}
add_action( 'wp_footer', 'ihachat_widget' );- wp_footer hook'u, tema veya eklenti fark etmeksizin script'in tüm sayfalarda yüklenmesini sağlar.
- Alternatif olarak Header/Footer Scripts eklentileri de kullanılabilir.
Shopify
theme.liquid dosyasına </body> etiketinden hemen önce ekleme.
{% comment %} layout/theme.liquid — </body> etiketinden hemen önce {% endcomment %}
<script
src="https://cdn.iha-chat.com/loader.js"
data-site-id="SITE_ANAHTARINIZ"
></script>
</body>
</html>- Online Store → Themes → Edit code menüsünden layout/theme.liquid dosyasına erişilir.
- Widget tüm sayfalarda (ürün, koleksiyon, sepet) otomatik olarak yüklenir.
Laravel
Blade layout dosyasına tek satırlık ekleme.
{{-- resources/views/layouts/app.blade.php --}}
<!DOCTYPE html>
<html lang="tr">
<head>
<title>@yield('title')</title>
</head>
<body>
@yield('content')
<script
src="https://cdn.iha-chat.com/loader.js"
data-site-id="SITE_ANAHTARINIZ"
></script>
</body>
</html>- Ana layout dosyası (genellikle resources/views/layouts/app.blade.php) tüm sayfalar tarafından extend edilir.
- Site anahtarı config/services.php üzerinden yönetilerek ortam değişkenine bağlanabilir.
Symfony
base.html.twig şablonuna tek satırlık ekleme.
{# templates/base.html.twig #}
<!DOCTYPE html>
<html lang="tr">
<head>
<title>{% block title %}Sitem{% endblock %}</title>
</head>
<body>
{% block body %}{% endblock %}
<script
src="https://cdn.iha-chat.com/loader.js"
data-site-id="SITE_ANAHTARINIZ"
></script>
</body>
</html>- templates/base.html.twig tüm sayfalar için ortak şablondur; extends direktifi ile kullanılır.
- Site anahtarı parameters.yaml üzerinden yönetilerek ortam değişkenine bağlanabilir.
Ruby on Rails
application.html.erb layout dosyasına tek satırlık ekleme.
<%# app/views/layouts/application.html.erb %>
<!DOCTYPE html>
<html lang="tr">
<head>
<title><%= yield(:title) %></title>
</head>
<body>
<%= yield %>
<script
src="https://cdn.iha-chat.com/loader.js"
data-site-id="SITE_ANAHTARINIZ"
></script>
</body>
</html>- app/views/layouts/application.html.erb tüm sayfalar için ortak layout'tur.
- Site anahtarı Rails.application.credentials üzerinden güvenli şekilde yönetilebilir.
Django
base.html şablonuna tek satırlık ekleme.
{# templates/base.html #}
<!DOCTYPE html>
<html lang="tr">
<head>
<title>{% block title %}Sitem{% endblock %}</title>
</head>
<body>
{% block content %}{% endblock %}
<script
src="https://cdn.iha-chat.com/loader.js"
data-site-id="SITE_ANAHTARINIZ"
></script>
</body>
</html>- templates/base.html tüm sayfalar için ortak şablondur; extends direktifi ile kullanılır.
- Site anahtarı settings.py içinde ortam değişkeniyle yönetilerek şablona context processor ile aktarılabilir.
Sorun değil — bir <script> etiketi yükleyen her yerde çalışır.
IHA Chat, klasik script tag’ini yükleyen her sayfada devreye girer. Hesabı aç, sana özel site anahtarını al, kopyala-yapıştır.