Grav

Grav SubDirectory (Alt Klasör) Multisite Kullanımı

Güncelleme:
Grav'ın çoklu site yayını WordPress'e göre biraz farklı. Subdomain ya da subdirectory olması fark etmeksizin site tanımlandırmaları user/sites/ yolu üzerinden sağlanmakta.
GÖRSEL
Grav Nedir? Nasıl Kurulur? ve DigitalOcean Ubuntu Üzerine Nginx Grav Kurulumu ardından ihtiyaç duyulabileceğini düşündüğüm bir diğer konu olarak (WordPressµ‘dan aşia olabilirsiniz) tek Grav kurulumu üzerinden çoklu site yayınından bahsedeceğim.

Grav SubDirectory Multisite Kullanımı

Grav kurulumunuzu yaptığınızı varsayıyor ve buna göre ilerliyorum. Öncelikle belirtmekte fayda var, çoklu site yayınını aşağıdaki şekillerde gerçekleştirebilirsiniz.
  • subdomain: http://subdomain.ornekwebsitesi.com
  • subdirectory: http://ornekwebsitesi.com/subdirectory/
Ben bu yazıda şimdilik subdirectory yapılandırmasına değineceğim. Grav‘ın çoklu site yayını WordPress’e göre biraz farklı. Subdomain ya da subdirectory olması fark etmeksizin site tanımlandırmaları user/sites/ yolu üzerinden sağlanmakta. Örneğin site1 adında bir altsite oluşturmak istiyoruz, bu durumda user/sites/ altında site1 adında bir klasör oluşturmalı ve bu klasör içeriğine ilgili sitede kullacağımız tema, eklenti ve ayarlarını oluşturmalıyız. İlerledikçe süreç daha da netleşecektir.Grav kurulumumuzu çoklu site amacıyla yürüteceğimizden haberdar etmeliyiz. Bu amaçla grav kurulumunun olduğu temel dizinde setup.php adında bir dosya oluşturacağız. Örneğin, DigitalOcean Ubuntu Üzerine Nginx Grav Kurulumu başlıklı yazıda biz kurulumlarımızı ~/www/html/grav yolunda gerçekleştirmiştik. Dolayısıyla setup.php dosyamız bu nedenle ~/www/html/grav/setup.php yoluna sahip olacaktır.SSH üzerinden siteye bağlandığımızı varsayalım (FTP ile de elbette aynı işlemleri gerçekleştirebilirsiniz) ve setup.php dosyamızı oluşturalım.
cd ~/www/html/grav
nano setup.php
Açılacak olan boş metin dosyasına aşağıdaki satırları ekleyip dosyayı kaydedin ve dosyayı kapatın.
<?php
/**
 * Multisite setup for sub-directories or path based
 * URLs for subsites.
 *
 * DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!
 */
 
use Grav\Common\Filesystem\Folder;
 
// Get relative path from Grav root.
$path = isset($_SERVER['PATH_INFO'])
   ? $_SERVER['PATH_INFO']
   : Folder::getRelativePath($_SERVER['REQUEST_URI'], ROOT_DIR);
 
// Extract name of subsite from path
$name = Folder::shift($path);
$folder = "sites/{$name}";
$prefix = "/{$name}";
 
if (!$name || !is_dir(ROOT_DIR . "user/{$folder}")) {
    return [];
}
 
// Prefix all pages with the name of the subsite
$container['pages']->base($prefix);
 
return [
    'environment' => $name,
    'streams' => [
        'schemes' => [
            'user' => [
               'type' => 'ReadOnlyStream',
               'prefixes' => [
                   '' => ["user/{$folder}"],
               ]
            ]
        ]
    ]
];
Yukarıdaki işlemlerin ardından bir üst paragrafta belirttiğim gibi admin paketi de yüklenmiş (temel kurulumda mevcut olduğu için kopyalama işleminde klasör içeriği olduğu gibi almakta) olacaktır. Bu nedenle site1, site2 vb. girişlerde ilk olarak kullanıcı oluşturma ekranını görebilirsiniz. WordPress kurulumunda veritabanı üzerinden kullanıcıların site erişimleri yapılandırılabilmekteyken Grav için siteler için ayrı ayrı erişim ve login süreçleri söz konusu olacaktır.
Ceyhun Enki Aksan

Kullanıcı Davranışları Analizi (User Behavior Analysis) ve Kullanıcı Deneyim Tasarımı (UX Design) üzerine çalışmalar yürütmekte, bu süreçte edindiğim teknik ve pratik bilgileri fayda sağlamak motivasyonuyla (afaik / as far as i know) paylaşmaktayım.

HABERDAR OL

Yeni eklenen projeler, eğitimler, içerikler ve yayınlanan videolar e-posta adresine gelsin.