Grav SubDirectory (Alt Klasör) Multisite Kullanımı
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şina olabilirsiniz) tek Grav kurulumu üzerinden çoklu site yayınından bahsedeceğim.
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/
Grav SubDirectory Multisite Kullanımı
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ş PHP dosyasına aşağıdaki satırları ekleyip dosyayı kaydedin ve dosyayı kapatın1.
/**
* 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 eklentisi de kullanılabilir2. 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.