Küresel değişkenler referansı

Çoğu Cotonti betiği, tarihsel olarak bu şekilde inşa edildiği için global kapsamda çalışır. Bazı değişkenler, kodun birçok yerinde yaygın olarak görülebilir. Bu makale, en önemli global değişkenleri kapsar.

Not: Bu kılavuz, tema geliştiricileri için de faydalıdır. Bu global değişkenleri global şablon etiketleri olarak da kullanabilirsiniz. Tek yapmanız gereken, CoTemplate sözdizimini hatırlamaktır. Örneğin, bir şablonda $usr['profile']['user_avatar'] değişkeni şu şekilde kullanılır: {PHP.usr.profile.user_avatar}.

#1. Cot Facade Sınıfı

Sistemde bazı kancalar (hooks) sistem fonksiyonları içinde çalıştırıldığından, bazı uzantı dosyaları fonksiyon kapsamına dahil edilir.  Bu nedenle, tarihsel olarak bazı sistem değişkenlerine erişmek için global anahtar kelimesi kullanılmıştır. Ancak bu her zaman en iyi yöntem değildir. Bu yüzden Cot facade sınıfı tanıtılmıştır.

0.9.15 sürümünden itibaren, ($cfg$usr$db$id$structure vb.) gibi ana global değişkenlere artık cot facade sınıfı aracılığıyla erişilebilir. Böylece global anahtar kelimesini kullanmanıza gerek kalmaz, doğrudan cot sınıfını kullanabilirsiniz. Örnek:

if ( cot::$cfg['plugin']['comments']['enabled'] )
{
  // bazı kodlar
}

Facade içinde erişilebilen değişkenlerin tam listesi: $cache, $cfg, $cot_extrafields, $db, $db_x, $env, $L, $out, $R, $structure, $sys, $usr.

#2. Mevcut Kullanıcının Profili

$usr değişkeni, mevcut kullanıcıyı temsil eder ve diğer global değişkenler arasında en yaygın olarak kullanılanıdır.

Giriş yapmış kullanıcıları misafirlerden ayırmak için $usr['id'] değişkenini kontrol edebilirsiniz:

if ($usr['id'] > 0)
{
    // Kullanıcı giriş yapmış
}
else
{
    // Misafir kullanıcı
}

Bu dizinin içerdiği standart anahtarlar şunlardır:

  • $usr['id'] - Kullanıcının veritabanındaki benzersiz kimlik numarası.
  • $usr['name'] - Kullanıcının kullanıcı adı (giriş adı).
  • $usr['maingrp'] - Kullanıcının ait olduğu ana grubun kimliği (gruplar tablosundaki grp_id değeri).
  • $usr['ip'] - Kullanıcının mevcut IP adresi.
  • $usr['lang'] - Kullanıcının dil tercihi. Alternatif olarak, $lang global değişkeni de bu değeri kısayol olarak tutar.
  • $usr['theme'] - Kullanıcının tema tercihi.
  • $usr['scheme'] - Kullanıcının renk şeması tercihi.
  • $usr['timezone'] - Kullanıcının saat dilimi farkı (saat cinsinden).
  • $usr['timezonename'] - Kullanıcının saat dilimi adı.
  • $usr['lastvisit'] - Kullanıcının sitedeki son etkinlik zaman damgası.
  • $usr['lastlog'] - Kullanıcının en son giriş yaptığı zaman damgası.
  • $usr['level'] - Kullanıcının ana grubunun yetki seviyesi.
  • $usr['profile'] - Kullanıcı tablosundaki tüm alanlara erişim sağlayan bir dizi. (Aşağıda açıklanmıştır.)

$usr['profile'] dizisini kullanarak, kullanıcı profilindeki ham değerleri ve ekstra alanları (extra fields) alabilirsiniz. Bu alanlar 'user_' ön eki ile birlikte gelir. Örneğin, standart olanlar şunlardır:

  • $usr['profile']['user_birthdate'] - Kullanıcının doğum tarihi, MySQL tarih formatında saklanır. Bunu cot_date2stamp() ve cot_date() fonksiyonlarını kullanarak görüntüleyebilirsiniz.
  • $usr['profile']['user_country'] - Kullanıcının 2 karakterlik ISO ülke kodunu içerir (eğer belirtilmişse).
  • $usr['profile']['user_email'] - Kullanıcının e-posta adresi.
  • $usr['profile']['user_gender'] - Kullanıcının cinsiyetini belirten bir karakter: 'M' erkek, 'F' kadın veya 'U' bilinmiyor.
  • $usr['profile']['user_hideemail'] - Kullanıcı e-postasının gizli kalmasını istiyorsa "true" (varsayılan), eğer görüntülenebilir olmasını istiyorsa "false".
  • $usr['profile']['user_logcount'] - Kullanıcının kaç kez giriş yaptığını gösterir.
  • $usr['profile']['user_regdate'] - Kullanıcının kayıt tarih ve saatini belirten zaman damgası.
  • $usr['profile']['user_text'] - Kullanıcının imza metni.

Örneğin, kullanıcılar tablosuna "first_name" adında bir ekstra alan eklediyseniz, buna şu şekilde erişebilirsiniz: $usr['profile']['user_first_name'].

#3. Mevcut Kullanıcının Ayarları

Mevcut isteğe göre kullanıcı başına görüntüleme ayarlarını içeren birkaç global değişken bulunmaktadır:

  • $lang - Mevcut dil kodu.
  • $theme - Mevcut tema adı.
  • $scheme - Mevcut renk şeması adı.

#4. Yapılandırma Değişkenleri

Tüm yapılandırma değişkenlerine $cfg globali aracılığıyla erişilebilir. Aşağıdaki gibi bir hiyerarşiye sahiptir:

  • $cfg['option_name'] - Çekirdek ayarlarından biri.
  • $cfg['module_name']['option_name'] - Belirli bir modül için ayar.
  • $cfg['plugin']['plugin_name']['option_name'] - Belirli bir eklenti için ayar.

#5. Uzantı Ortamı

$env dizisi, çalıştırılmakta olan mevcut uzantı (modül veya eklenti) ve isteğin durum bilgilerini içerir:

  • $env['type'] - Modüller için 'module', eklentiler için 'plug'.
  • $env['ext'] - Uzantı kodu, örneğin 'forums'.
  • $env['location'] - Kullanıcının sitedeki konumunu belirten metin, örneğin 'Ana Sayfa'.
  • $env['status'] - HTTP yanıt durumu, örneğin '200 OK'.

#6. Sistem Değişkenleri

Bazı geçici sistem değişkenleri, farklı yerlerde kullanılır ve tekrar tekrar hesaplanması kaynak israfına yol açabilir. Bu tür değişkenler $sys dizisinde bulunabilir. İşte bazı yaygın elemanlar:

  • $sys['now'] - UTC formatında mevcut zamanın tamsayı zaman damgası. (Cotonti tarihleri UTC olarak saklanır ve zaman dilimleri görüntüleme sırasında uygulanır).
  • $sys['site_id'] - Siteye özgü benzersiz bir dize (bu veri genellikle herkese açıktır).
  • $sys['parser'] - Varsayılan içerik işleyici (parser) eklentisinin kodu veya mevcut veri için seçilen işleyici.
  • $sys['xk'] - Formlarda kullanılan mevcut CSRF koruma belirteci.
  • $sys['noindex'] - Arama motorlarının mevcut sayfayı dizine eklememesi gerekiyorsa "true" olarak ayarlanır.

Mevcut URL ve onun bölümlerini algılamaya yönelik değişkenler:

  • $sys['scheme'] - URL şeması, örneğin 'http' veya 'https'.
  • $sys['secure'] - HTTPS protokolünün kullanıldığını belirten bir bayrak. (TRUE/FALSE).
  • $sys['host'] - URL’nin tam ana bilgisayar kısmı, örneğin 'my.example.com'.
  • $sys['domain'] - URL’nin ikinci seviye alan adı, örneğin 'example.com'.
  • $sys['port'] - 80 dışında bir bağlantı noktası kullanılıyorsa, örneğin ':8080'.
  • $sys['site_uri'] - Sunucudaki site kök dizinine giden göreceli yol. Örneğin, 'example.com/cotonti/' çalıştırıyorsanız bu değer '/cotonti/' olacaktır.
  • $sys['abs_url'] - Site kök dizinine mutlak URL, örneğin 'http://my.example.com/cotonti/'. Genellikle $cfg['mainurl'] ile aynıdır ancak birden fazla alt alan adı kullanan sitelerde farklı olabilir.
  • $sys['canonical_url'] - Mevcut sayfanın kanonik URL'sini almak ve ayarlamak için kullanılır (HTML başlık bölümünde kullanılır).
  • $sys['uri_curr'] - Mevcut isteğin URL içindeki URI bölümünü içerir, örneğin '/cotonti/foo?bar=baz'.

#7. Çıktı Değişkenleri

Bu değişkenler, birden fazla şablonda çıktı olarak kullanılmak üzere global etiketler oluşturmak için kullanılır. Bunlar $out dizisi içinde toplanır. İşte bazı standart öğeler:

  • $out['uri'] - Geçerli URL'nin HTML için geçerli olan URI bölümü, örneğin '/index.php?foo=bar&boo=baz'.
  • $out['notices_array'] - Kullanıcı kişisel bildirim çubuğu dizisi.
  • $out['copyright'] - "Powered by Cotonti" bağlantısını gösterir.
  • $out['meta_contenttype'] - Belgenin MIME türü, varsayılan olarak 'text/html'.
  • $out['logstatus'] - Kullanıcının giriş durumunu dize mesajı olarak görüntüler.
  • $out['userlist'] - Çevrimiçi kullanıcıların listesini görüntüler.
  • $out['subtitle'] - HTML etiketi içindeki değişken bölümü ayarlar. Örneğin, 'Elmalar' olarak ayarlanırsa, tam başlık şu şekilde olur: 'Elmalar - Meyveler - Benim Harika Bahçem'.
  • $out['meta_desc'] - Sayfanın meta açıklamasını ayarlar.
  • $out['meta_keywords'] - Sayfanın meta anahtar kelimelerini ayarlar.
  • $out['meta_lastmod'] - Sayfanın son değişiklik tarihini ayarlar.
  • $out['adminpanel'] - Yönetici girişi yapmış kullanıcılar için Yönetim Paneli bağlantısını gösterir.
  • $out['loginout_url'] - Mevcut kullanıcıyı çıkış yaptırmak için bir URL.
  • $out['loginout'] - Mevcut kullanıcıyı çıkış yaptırmak için HTML bağlantısı.
  • $out['profile'] - Mevcut kullanıcının profil ayarlarına yönlendiren HTML bağlantısı.
  • $out['guest_username'] - Misafir kullanıcılar için kullanıcı adı giriş alanı.
  • $out['guest_password'] - Misafir kullanıcılar için şifre giriş alanı.
  • $out['guest_cookiettl'] - "Beni Hatırla" onay kutusu.
  • $out['guest_register'] - Misafir kullanıcılar için kayıt bağlantısı.

#8. Yapı Ağacı

Yönetim panelinde / Yapı bölümünde yönetilen sitenin tüm kategori ağacına $structure globali ile erişilebilir. Kullanım şekli:

$structure['module_name']['category_code']

Burada 'module_name' modülün kodudur (örneğin 'page') ve 'category_code' kategori kodudur (örneğin 'articles'). Döndürülen öğe aşağıdaki anahtarları içeren bir ilişkisel dizidir:

  • 'path' - Yapının kökünden nokta ile ayrılmış kategori yolu, örneğin 'urunler.elektronik.blenderlar'.
  • 'tpath' - Kategori adlarından oluşan bir yol, örneğin 'Ürünler - Elektronik - Blenderlar'.
  • 'rpath' - Kategorinin ham yolu, örneğin 'urunler.1.3'.
  • 'id' - Kategorinin benzersiz kimlik numarası.
  • 'title' - Kategorinin başlığı.
  • 'desc' - Kategori açıklaması.
  • 'icon' - Kategorinin simge yolu (varsa).
  • 'locked' - Kategorinin yeni öğe eklemeye açık olup olmadığı.
  • 'count' - Kategoride bulunan öğe sayısı.

Ekstra yapı alanlarına $structure globali üzerinden erişilebilir. Örneğin, 'specialty' adlı bir ekstra alan eklediyseniz, şu şekilde erişebilirsiniz:

$structure['module_name']['category_code']['specialty']

#9. Veritabanı ve Önbellek Erişimi

İki önemli global değişken daha bulunmaktadır:

  • $db - Veritabanına sorgu yapmak için kullanılan CotDB sınıfının bir örneğidir. Daha fazla bilgi için PDO dokümantasyonuna bakabilirsiniz.
  • $cache - Cache sınıfının bir örneğidir. Daha fazla bilgi için Önbellek API dokümantasyonuna göz atabilirsiniz.

#10. Diğer Global Listeler

Uzantı geliştiricileri için faydalı olabilecek diğer bazı global koleksiyonlar şunlardır:

/**
 * Kullanıcı grupları hakkında bilgi içerir. Bunu system/common.php dosyasında bulabilirsiniz.
 */
$cot_groups = array();

/**
 * Captcha fonksiyonları için kayıt.
 */
$cot_captcha = array();

/**
 * Hash fonksiyonları için kayıt.
 */
$cot_hash_funcs = array('md5', 'sha1', 'sha256');

/**
 * Özelleştirilmiş cot_import() filtre geri çağrıları dizisi.
 */
$cot_import_filters = array();

/**
 * Özelleştirilmiş e-posta gönderme geri çağrıları dizisi.
 */
$cot_mail_senders = array();

/**
 * Özelleştirilmiş parser (işleyici) fonksiyonları için kayıt.
 */
$cot_parsers = array();

/**
 * Mevcut istekte otomatik olarak tüm URL'lere eklenen parametreler.
 */
$cot_url_appendix = array();

/**
 * Yüklü (aktif) eklentilerin listesi. Anahtar, eklenti adı; değer, boolean (TRUE/FALSE).
 */
$cot_plugins_active = array();

/**
 * Yüklü (aktif) modüllerin listesi. Anahtar, modül adı; değer, boolean (TRUE/FALSE).
 */
$cot_modules = array();


1. Macik  2013-02-02 02:21

Thanks! Long time expected article.

2. elfrenazo  2013-02-05 04:29
Yalnızca kayıtlı kullanıcılar yorum yapabilir