tunasahincomtr/metakit 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

tunasahincomtr/metakit

Composer 安装命令:

composer require tunasahincomtr/metakit

包简介

SEO meta management package for Laravel

README 文档

README

Laravel için URL bazlı SEO meta tag yönetim paketi. Her sayfa için özel meta bilgileri tanımlayın, cache desteği ile hızlı çalışın.

Özellikler

  • 🎯 URL bazlı meta yönetimi (domain, path, query parametreleri)
  • 🚀 Otomatik cache sistemi
  • 🎨 Blade direktifleri ile kolay kullanım
  • 📱 Open Graph ve Twitter Card desteği
  • 📊 JSON-LD schema desteği
  • 🔄 RESTful API ile yönetim
  • 🛡️ Duplicate meta tag koruması
  • 🗺️ Otomatik sitemap oluşturma
  • 🎨 Bootstrap uyumlu admin arayüzü

Kurulum

1. Repository'yi Composer'a Ekleyin

composer.json dosyanıza GitHub repository'yi ekleyin:

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/tunasahincomtr/meta-kit"
        }
    ]
}

2. Paketi Yükleyin

composer require tunasahincomtr/metakit:dev-main

Alternatif: Eğer paketi projeniz içinde local olarak kullanmak isterseniz:

{
    "repositories": [
        {
            "type": "path",
            "url": "modules/packages/tunasahincomtr/metakit",
            "options": {
                "symlink": true
            }
        }
    ]
}

Sonra composer require tunasahincomtr/metakit:"*" komutunu çalıştırın.

3. Config ve Migration

Config dosyasını yayınlayın:

php artisan vendor:publish --tag=metakit-config

Migration'ları çalıştırın:

php artisan migrate

Hepsi bu kadar! Paket Laravel'in auto-discovery özelliği sayesinde otomatik olarak yüklenir.

Hızlı Başlangıç

Blade Template'inde Kullanım

<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
    @metakit
    @metakitJsonLd
</head>
<body>
    <!-- İçerik -->
</body>
</html>

@metakit direktifi şunları otomatik oluşturur:

  • <title> tagı
  • Meta description, keywords, robots
  • Canonical URL
  • Open Graph tagları
  • Twitter Card tagları

Controller'da Programatik Kullanım

use function TunaSahincomtr\MetaKit\metakit;

public function show(Product $product)
{
    metakit()
        ->setTitle($product->name . ' - Ürün Detayı')
        ->setDescription($product->description)
        ->setOgImage($product->image_url);

    return view('products.show', compact('product'));
}

Admin Arayüzü

MetaKit, Bootstrap 5 uyumlu bir admin arayüzü ile gelir. Sadece bir Blade direktifi ile kullanabilirsiniz:

@metakitform

Bu direktif ile şunları yapabilirsiniz:

  • ✅ Sayfa ekleme, düzenleme, silme
  • ✅ Liste görünümü ile pagination
  • ✅ Arama ve filtreleme
  • ✅ SEO skoru görüntüleme
  • ✅ İstatistikler ve raporlar
  • ✅ JSON-LD schema yönetimi

Renk Özelleştirme

Admin arayüzünün renklerini CSS variable ile özelleştirebilirsiniz:

.metakit-form-wrapper {
    --metakit-primary: #198754; /* Buton arka plan rengi */
    --metakit-primary-text: #ffffff; /* Buton metin rengi */
}

API Kullanımı

MetaKit RESTful API ile çalışır. API endpoint'leri:

Public Endpoints (Token gerekmez):

  • GET /api/metakit/pages - Sayfa listesi
  • GET /api/metakit/pages/{id} - Tek sayfa
  • GET /api/metakit/stats/dashboard - İstatistikler

Protected Endpoints (Token gerekli):

  • POST /api/metakit/pages - Yeni sayfa
  • PUT /api/metakit/pages/{id} - Sayfa güncelle
  • DELETE /api/metakit/pages/{id} - Sayfa sil
  • POST /api/metakit/pages/import/csv - CSV import
  • GET /api/metakit/pages/export/csv - CSV export

API token oluşturmak için:

$user = User::first();
$token = $user->createToken('api-token')->plainTextToken;

Blade Direktifleri

Tüm Meta Tagları

@metakit

Sadece Title

<title>@metakitTitle</title>

Belirli Meta Değeri

<meta name="description" content="@metakitMeta('description')">

JSON-LD Schema

@metakitJsonLd

JSON-LD Schema Yönetimi

MetaKit ile sayfanıza birden fazla JSON-LD schema ekleyebilirsiniz:

metakit()->addJsonLd([
    '@context' => 'https://schema.org',
    '@type' => 'Article',
    'headline' => 'Makale Başlığı',
    'author' => [
        '@type' => 'Person',
        'name' => 'Yazar Adı'
    ]
]);

// Veya Product schema
metakit()->addJsonLd([
    '@context' => 'https://schema.org',
    '@type' => 'Product',
    'name' => 'Ürün Adı',
    'price' => '99.99',
    'currency' => 'TRY'
]);

Admin arayüzünde hazır template'ler ile kolayca schema ekleyebilirsiniz:

  • Article, BlogPosting
  • Product
  • FAQPage
  • BreadcrumbList
  • Organization, WebSite
  • LocalBusiness, Person
  • Ve daha fazlası...

Sitemap

MetaKit otomatik olarak sitemap.xml oluşturur. Aktif sayfalarınız otomatik olarak sitemap'e eklenir:

GET /sitemap.xml

Config'de özelleştirebilirsiniz:

// config/metakit.php
'sitemap' => [
    'enabled' => true,
    'route' => '/sitemap.xml',
    'include_images' => true,
    'only_active' => true,
],

Cache Yönetimi

MetaKit otomatik cache kullanır. Sayfa oluşturulduğunda, güncellendiğinde veya silindiğinde ilgili cache otomatik temizlenir.

Manuel cache temizleme:

metakit()->purgeCache('example.com', '/products', $queryHash);

Query Hash

URL'deki query parametreleri için farklı meta tanımlamak istediğinizde query hash kullanılır. Sadece config/metakit.php içindeki query_whitelist listesindeki parametreler hash hesaplamasına dahil edilir.

Örnek:

  • URL: https://example.com/products?city=istanbul&type=apartment&page=2
  • Whitelist: ['city', 'type']
  • Query Hash: city=istanbul&type=apartment parametrelerinden oluşturulur
  • page parametresi hash'e dahil edilmez

Konfigürasyon

config/metakit.php dosyasında aşağıdaki ayarları yapabilirsiniz:

'api_prefix' => 'api/metakit',
'cache_ttl_minutes' => 360,
'query_whitelist' => ['city', 'type', 'price_min'],
'default' => [
    'site_name' => env('APP_NAME', 'Laravel'),
    'title_suffix' => ' - ' . env('APP_NAME', 'Laravel'),
    'default_image' => '/images/og-default.jpg',
],
'sitemap' => [
    'enabled' => true,
    'route' => '/sitemap.xml',
],
'form' => [
    'auth_required' => false, // Admin arayüzü için auth kontrolü
],

Örnekler

Basit Kullanım

<head>
    @metakit
</head>

Dinamik Override

// Controller'da
metakit()
    ->setTitle('Özel Başlık')
    ->setDescription('Özel Açıklama')
    ->setCanonical('https://example.com/canonical')
    ->setOgImage('https://example.com/image.jpg');

API ile Toplu İşlemler

// JavaScript
fetch('/api/metakit/pages', {
    method: 'POST',
    headers: {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json',
    },
    body: JSON.stringify({
        domain: window.location.hostname,
        path: window.location.pathname,
        title: 'Sayfa Başlığı',
        description: 'Sayfa Açıklaması',
        status: 'active',
    }),
});

Gereksinimler

  • PHP >= 8.1
  • Laravel >= 10.0
  • Laravel Sanctum (API için)

Lisans

MIT

Destek

Sorularınız için: info@tunasahin.com.tr

统计信息

  • 总下载量: 5
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-12-27