Grav - Hızlı Kılavuz

Gravdüz dosya tabanlı bir içerik yönetim sistemidir. Bu sistem içeriği depolamak için veritabanını kullanmaz, bunun yerine içeriği depolamak için bir metin (.txt) dosyası veya bir markdown (.md) dosyası kullanır. Düz dosya kısmı, okunabilir metne atıfta bulunur ve içeriği, bir geliştirici için basit olabilen kolay bir şekilde işler.

Grav, Rocket Themetakım. PHP üzerinde çalışır ve Joomla, Wordpress veya Drupal gibi açık kaynaklı bir CMS'dir.

Neden Grav?

Grav artık en hızlı düz dosya içerik yönetim sistemidir. Grav ile içerik yayınlamak ve yönetmek daha kolaydır. Bir geliştiricinin, içeriği veritabanından ziyade dosyalarda (metin veya işaretleme dosyaları gibi) depolayarak içeriği çok kolay bir şekilde işlemesine olanak tanır.

Grav, basit, yönetilebilir ve hızlı bir site oluşturmanıza yardımcı olur. Veritabanı güdümlü CMS'den daha düşük maliyetlidir ve yeterli kaynağa sahip olmadığınızda dosya işleme için G / Ç ile kullanışlıdır.

Grav'ın Özellikleri

  • Hızlı, kolay ve güçlü bir düz dosya web platformudur.

  • Ekstra araç veya html bilgisi olmadan web siteleri oluşturmak için kullanılır.

  • İçeriği depolamak için metin dosyası veya işaretleme dosyası kullanır.

  • Veritabanını kullanmaz, bu nedenle bu, darboğaz örneklerini azaltır.

  • Twig tarafından sağlanan ve onu hızlı kılan doğrudan PHP'ye ayrıştırılan PHP tabanlı şablonu kullanır.

Avantajlar

  • Veritabanı CMS'sine dayalı değildir, bu nedenle kurulumu çok kolaydır ve dosyaları sunucuya yüklediğinizde kullanıma hazır olacaktır.

  • İşleri kolaylaştırmak için Markdown metin dosyalarını kullanır. Bunu kullanarak, içerik dinamik olarak HTML'ye dönüştürülür ve tarayıcıda görüntülenir.

  • Güvenlik durumunda Grav'ın yönetici alanı ve veritabanı yoktur. Bu nedenle, önemli verilere erişmek için hesaba veya veritabanına girme şansı yoktur.

  • Yedeklenecek veritabanı olmadığından, web sitenizin yedek kopyasını saklamak için tüm dosyaları kolayca yedekleyebilirsiniz.

  • Öğrenmek için daha fazla zaman gerektirmeyen bir yazılım parçasıdır.

Dezavantajları

  • Dosyalar için veri tabanı bulunmadığından, yetkisiz kullanıcıların içeriğinize doğrudan dosyalardan erişebileceği örneklerle karşılaşabilirsiniz.

  • Grav CMS kullanarak karmaşık web siteleri oluşturmak zordur.

Bu bölümde Grav'ın kurulumunu anlayacağız. Grav için yazılım gereksinimlerini ve nasıl indirileceğini tartışacağız.

Grav için Yazılım Gereksinimleri

Şimdi Grav için yazılım gereksinimlerini anlayalım.

Web Server

  • WAMP (Windows)
  • LAMP (Linux)
  • XAMP (Çoklu platform)
  • MAMP (Macintosh)
  • Nginx
  • Microsoft IIS

Operating System - Çapraz platform

Browser Support - IE (Internet Explorer 8+), Firefox, Google Chrome, Safari, Opera

PHP Compatibility - PHP 5.4 veya üstü

Text Editors

  • Sublime Text (Mac / Windows / Linux)
  • Atom (Mac / Windows)
  • Notepad ++ (Windows)
  • Lüfer (Mac / Windows / Linux)

Grav'ı indirin

Bu bağlantıya tıklayın https://getgrav.org/downloads ve Grav'ı indirmek için aşağıda verilen ekran görüntüsünde gösterilen adımları izleyin.

İndirilen Grav dosyasını web sunucunuza çıkartın.

Kurulum sihirbazı

Grav kurulumu çok basit bir işlemdir. Grav kurulumu için aşağıda verilen adımları izleyin.

  • Zip dosyasını indirin ve web sunucunuza veya yerel ana makinenize çıkartın. Klasörü sitenize başvurmak için kullanmak istediğiniz mevcut adından yeniden adlandırın.

  • Tarayıcınızı açın ve şuraya gidin: localhost/<your_folder_name>gösteren bir ekrana yönlendirileceksiniz you have installed Grav successfully aşağıdaki ekran görüntüsündeki gibi.

  • Grav, başlamanıza yardımcı olacak örnek bir sayfayla birlikte gelir. Yukarıdaki ekran görüntüsünde, örnek bir sayfa görüntüleyen ana bağlantıyı görebilirsiniz.

Bu bölümde, bunun hakkında çalışalım Grav Pages. Sayfalar sitenin yapı taşları olarak tanımlanabilir. Sayfalar içerikleri ve gezinmeleri birleştirir; bu deneyimsiz kullanıcılar için bile çalışmayı kolaylaştırır.

Başlangıç ​​olarak, basit bir sayfanın nasıl oluşturulacağını bize bildirin. Tüm kullanıcı içerikleri altında saklanacaktıruser/pages/Klasör. Adlı tek bir klasör olacak01.home. Klasörün sayısal kısmı isteğe bağlıdır; sayfalarınızın sırasını ifade eder (örneğin 01, 02'den önce gelir) ve Grav'a bu sayfanın menüde görünmesi gerektiğini açıkça bildirir.

Şimdi yeni bir sayfanın nasıl oluşturulacağını görelim.

Step 1 - altında bir klasör oluşturun /user/pages/; Örneğin, 02.about aşağıdaki ekran görüntüsünde gösterildiği gibi.

Step 2 - adlı bir dosya oluşturun default.md yeni yaratılanın içinde 02.about aşağıdaki içeriğe sahip klasör.

---
title: About Us
---

# About Us Page!

This is the body of **about us page**.

Yukarıdaki kod bazılarını kullanır Markdownsözdizimi aşağıda kısaca açıklanmıştır. Hakkında detaylı çalışabilirsinizMarkdowniçinde Markdown bölüm.

  • --- göstergeleri arasındaki içerik, Page Headers.

  • # veya hashes sözdizimi Markdown dönüştürülecek bir başlığı gösterir <h1> HTML'deki başlık.

  • ** işaretçiler kalın metni gösterir veya <b> HTML olarak.

Step 3 - Tarayıcınızı yeniden yükleyin ve aşağıdaki ekran görüntüsünde gösterildiği gibi menüde yeni sayfayı görebilirsiniz.

Sayfa Türleri

Grav Pages 3 tür sayfayı destekler -

  • Standart Sayfa.
  • Liste Sayfası.
  • Modüler Sayfa.

Standart Sayfa

Standart Sayfalar, blog gönderisi, iletişim formu, hata sayfası vb. Gibi en temel sayfa türleridir. Varsayılan olarak, bir sayfa Standart Sayfa olarak kabul edilir. Base Grav paketini indirip yüklediğinizde bir Standart Sayfa ile karşılanırsınız. Base Grav paketini kurduğunuzda aşağıdaki sayfayı göreceksiniz.

İlan Sayfası

Liste Sayfası, bir sayfa koleksiyonuna referans veren standart bir sayfanın uzantısıdır. Liste sayfasını kurmanın en kolay yolu, liste sayfasının altında alt sayfalar oluşturmaktır. Bir blog listeleme sayfası buna güzel bir örnektir.

Liste Sayfalı örnek bir Blog İskeleti Grav Downloads'da bulunabilir . Aşağıdaki ekran görüntüsünde bir örnek gösterilmektedir.

Modüler Sayfa

Modüler Sayfa, alt sayfalarından tek bir sayfa oluşturan bir liste sayfası biçimidir. Bu, daha küçük modüler içerik sayfalarından çok karmaşık tek sayfalık düzenler oluşturmamızı sağlar. Bu, modüler sayfayı sayfanın ana klasöründe bulunan birden çok modüler klasörden oluşturarak elde edilebilir.

Bir Modüler Sayfa kullanan tek sayfalık örnek bir iskelet Grav Downloads'da bulunabilir . Aşağıdaki ekran görüntüsünde bir örnek gösterilmektedir.

Klasörler

/user/pagesklasörü, ilgili sayfaların içeriğini içerecektir. İçindeki klasörler/user/pagesklasör Grav tarafından otomatik olarak menüler olarak ele alınır ve sipariş amacıyla kullanılır. Örneğin,01.homeklasör ana sayfa olarak değerlendirilecektir. Sıralama da sürdürülür, yani 01.home 02.hakkında önce gelir.

Tarayıcıyı sitenizin kök dizinine yönlendirdiğinizde nereye gideceğinizi belirlemesi için bir giriş noktası sağlamalısınız. Örneğin, tarayıcınıza http://mysite.com girerseniz, Grav bir takma ad beklerhome/ varsayılan olarak, ancak ev konumunu geçersiz kılabilirsiniz. home.alias Grav yapılandırma dosyasındaki seçeneği.

Klasör adı olarak tanımlanmadan önce alt çizgi (_) Modular folders, yalnızca modüler içerik boyunca kullanılması amaçlanan özel bir klasör türü olan. Örneğin, aşağıdaki gibi klasörler içinpages/02.about, slug varsayılan olarak aboutve URL http://mysite.com/about olacaktır.

Klasör adının önüne sayılar gelmiyorsa, o sayfanın görünmez olduğu kabul edilir ve gezinmede görüntülenmez. Örneğin, ifuser/pages/ vardır /contactklasör, navigasyonda görüntülenmeyecektir. Bu, gezinmede görünür kılmak için aşağıda gösterildiği gibi true olarak ayarlanarak başlık bölümü içinde sayfanın kendisinde geçersiz kılınabilir.

---
title: contact
visible: true
---

Varsayılan olarak, çevreleyen klasörlerin sayısal önekleri varsa gezinmede bir sayfa görünür. Görünürlüğü ayarlamak için geçerli değerler true veya false.

Sipariş verme

Klasörün sırasını kontrol etmenin birçok yolu vardır, önemli yollardan biri de content.order.bysayfa yapılandırma ayarları. Seçenekler aşağıda listelenmiştir.

  • default - Dosya sistemi sipariş vermek için kullanılabilir, yani 01.home, 02.home'dan önce.

  • title - Başlık, her sayfada tanımlanan sıralama için kullanılabilir.

  • date - Sıralama, her sayfada tanımlanan tarihe dayalı olabilir.

  • folder - Herhangi bir sayısal önekten oluşan klasör adı, örneğin 01. kaldırılacaktır.

  • basename - Sıralama, sayısal sıralama içermeyen alfabetik klasöre dayanmaktadır.

  • modified - Sayfanın değiştirilmiş zaman damgası da kullanılabilir.

  • header.x - Sayfa başlığı alanlarından herhangi biri sipariş vermek için kullanılabilir.

  • manual - order_manual değişken kullanarak sıralama yapılabilir.

  • random - Siparişinizi rastgele hale getirmek de yapılabilir.

Manüel sıra, özellikle bir seçenek listesi sağlanarak tanımlanır. content.order.customyapılandırma ayarı. Sen ayarlayabilirsinizpages.order.dir ve pages.order.by Grav sistem konfigürasyon dosyasındaki varsayılan davranışı geçersiz kılma seçenekleri.

Sayfa dosyası

Sayfa klasörünün içindeki sayfa şu şekilde oluşturulmalıdır: .mddosya, yani Markdown formatlı dosya; YAML ön maddesi ile fiyat indirimi. defaultana şablonun standart adı olacaktır ve buna herhangi bir ad verebilirsiniz. Basit bir sayfa örneği aşağıda gösterilmiştir -

---
title: Title of the page
taxonomy:
   category: blog page
---
# Title of the page

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque porttitor eu
felis sed ornare. Sed a mauris venenatis, pulvinar velit vel, dictum enim. Phasellus
ac rutrum velit. **Nunc lorem** purus, hendrerit sit amet augue aliquet, iaculis
ultricies nisl. Suspendisse tincidunt euismod risus. Nunc a accumsan purus.

--- işaretçileri arasındaki içerik YAML ön maddesi olarak bilinir ve bu YAML ön maddesi temel YAML ayarlarından oluşur. Yukarıdaki örnekte, blog sayfasına başlık ve sınıflandırma koyuyoruz. Çift --- işaretinden sonraki bölüm, sitemizde gördüğümüz gerçek içeriktir.

Özet Boyutu ve Ayırıcı

Özetin varsayılan boyutu şuradan ayarlanabilir: site.yaml aracılığıyla kullanıldı page.summary(). Bu, tam sayfa içeriğinin değil, yalnızca özet bilgilerin gerekli olduğu bloglar için kullanışlıdır. Kullanabilirsinizmanual summary separator Ayrıca şöyle bilinir summary delimiter: === ve bunu aşağıda gösterildiği gibi içeriğinize üstte ve altında boş satırlar olacak şekilde yerleştirdiğinizden emin olun.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua.

===

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
est laborum."

Ayırıcının üstündeki metin, tarafından referans verildiğinde kullanılacaktır. page.summary() ve tarafından referans verildiğinde tam içerik page.content().

Diğer Sayfaları Bulmak

Grav adlı özelliği var find() başka bir sayfa bulma ve o sayfada eylemler gerçekleştirme yöntemi.

Örneğin, belirli bir sayfada tüm şirket konumunu listelemek istiyorsanız, aşağıdaki indirim kuralını kullanın -

# Locations 
<ul>
   {% for loc in page.find('/locations').children if loc != page %}
      <li><a href="{{loc.url}}">{{ loc.title }}</a></li>
   {% endfor %}
</ul>

Markdown sözdizimi, daha sonra HTML koduna dönüştürülen, okunması kolay ve yazması kolay bir biçimde düz metin yazmak olarak tanımlanır. Markdown sözdiziminde (*) veya (`) gibi semboller kullanılır. Bu semboller kalın, başlıklar oluşturmak ve içeriğinizi düzenlemek için kullanılır.

Markdown sözdizimini kullanmak için, bilgisayarınızda bir .md dosyası oluşturmanız gerekir. user/pages/02.mypageKlasör. Markdown Sözdizimini etkinleştirin.\user\config\system.yaml yapılandırma dosyası.

Markdown sözdizimini kullanmanın birçok yararı vardır, bunlardan bazıları aşağıdaki gibidir.

  • Öğrenmesi kolaydır ve minimum karaktere sahiptir.

  • Markdown'u kullandığınızda, çok az hata yapma şansı vardır.

  • Geçerli XHTML çıktısı.

  • Web sitenizin görünümünü etkilememesi için içeriğiniz ve görsel görünümünüz ayrı tutulur.

  • Herhangi bir metin düzenleyiciyi veya markdown uygulamasını kullanabilirsiniz.

Aşağıdaki bölümlerde, markdown'da kullanılan HTML'nin ana unsurlarını tartışacağız.

Başlıklar

Her başlık etiketi her başlık için # ile oluşturulur, yani h1'den h6'ya # sayısı gösterildiği gibi artar.

#my new Heading
	##my new Heading
	###my new Heading
	####my new Heading
	#####my new Heading
	######my new Heading

.md bir tarayıcı olarak dosyayılocalhost/Grav/mypage; aşağıdaki sonucu alacaksınız -

Yorumlar

Aşağıdaki formatta yorum yazabilirsiniz.

<!—
   This is my new comment
-->

.md bir tarayıcı olarak dosyayılocalhost/Grav/mypage; aşağıdaki sonucu alacaksınız -

Yatay kurallar

Yatay kurallar, paragraflar arasında tematik bir boşluk oluşturmak için kullanılır. Aşağıdaki yöntemlerden herhangi birini kullanarak paragraflar arasında kesmeler oluşturabilirsiniz.

  • ___ - Üç alt çizgi

  • --- - Üç çizgi

  • *** - Üç yıldız

md tarayıcı olarak dosyayılocalhost/Grav/mypage; aşağıdaki sonucu alacaksınız -

Vücut kopya

Body copy Markdown sözdiziminde normal formatta metin yazmak olarak tanımlanabilir, hayır (p) etiket kullanıldı

Misal

It is a way of writing your plain text in an easy to read and write format, 
which later gets converted into HTML code.

.md bir tarayıcı olarak dosyayılocalhost/Grav/mypage; aşağıdaki sonucu alacaksınız -

Vurgu

Vurgu , metnin bir bölümünü kalın, italik veya üstü çizili yapmak için kullanılan markdown sözdizimindeki yazma biçimleridir. Bunları aşağıda tartışalım -

Kalın

Metnin bir kısmı iki kullanılarak kalın yapılabilir (**) her iki tarafta işaretler.

Example

The newest articles from **Advance Online Publication (AOP)** and the current issue.

Bu örnekte göstermeliyiz ‘Advance Online Publication (AOP)’ kalın kelime.

.md bir tarayıcı olarak dosyayılocalhost/Grav/mypage, aşağıdaki sonucu alacaksınız -

İtalik

Kullanım “_” (alt çizgi) metni italik hale getirmek için kelimenin her iki tarafını da imzalayın.

Example

The newest articles from _Advance Online Publication_ (AOP) and the current issues.

Bu örnekte italik yazmamız gerekiyor “Advance Online Publication” (AOP) kelimesi.

.md bir tarayıcı olarak dosyayılocalhost/Grav/mypage. Bu size şu sonucu verecektir -

Üstü çizili

İki kullanın "~~" (tildes) kelimenin üstünü çizmek için kelimenin her iki yanında.

Example

The newest articles from ~~Advance Online Publication~~ (AOP) and the current issues.

Bu örnekte, "Advance Online Publication" (AOP) kelimesine çarpmamız gerekiyor.

.md bir tarayıcı olarak dosyayılocalhost/Grav/mypage. Bu size şu sonucu verecektir -

Blok alıntı

Bir blok fiyat teklifi oluşturmak için, bir > cümle veya kelimeden önce imzalayın.

Example

>The newest articles from Advance Online Publication (AOP) and the current issues.

Bu örnekte, cümleden önce bir> işareti kullandık.

.md bir tarayıcı olarak dosyayılocalhost/Grav/mypage; aşağıdaki sonucu alacaksınız -

Blok alıntı aşağıdaki şekilde de kullanılabilir -

>The newest articles from Advance Online Publication (AOP) and the current issues.
>>> The newest articles from Advance Online Publication (AOP) and the current issues.

.md bir tarayıcı olarak dosyayılocalhost/Grav/mypage; aşağıdaki sonucu alacaksınız -

Uyarılar

Bildirimler, önemli bir şey hakkında bilgi vermek veya bildirimde bulunmak için kullanılabilir.

Dört tür bildirim vardır - sarı, kırmızı, mavi ve yeşil.

Sarı

Kullanmalısınız >>> açıklayan bir sarı uyarı türünden önce imzala !Info veya bilgi.

Example

>>>Neurotransmitter-gated ion channels of the Cys-loop receptor family are essential
mediators of fast neurotransmission throughout the nervous system and are implicated
in many neurological disorders.

Kırmızı

Dört kullanın >>>> bir Uyarı için kırmızı bir uyarıdan önce işaretler.

Example

>>>>Neurotransmitter-gated ion channels of the Cys-loop receptor family are essential
mediators of fast neurotransmission throughout the nervous system and are implicated
in many neurological disorders.

Mavi

Beş kullanın >>>>> Mavi bildirim türü için işaretler, bu bir Notu açıklar.

Example

>>>>>Neurotransmitter-gated ion channels of the Cys-loop receptor family are essential
mediators of fast neurotransmission throughout the nervous system and are implicated
in many neurological disorders.

Yeşil

Altı kullan >>>>>> Yeşil bildirim türünden önce işaretler, bu bir İpucu açıklar.

Example

>>>>>>Neurotransmitter-gated ion channels of the Cys-loop receptor family are essential
mediators of fast neurotransmission throughout the nervous system and are implicated
in many neurological disorders.

MD dosyasını bir tarayıcıda şu şekilde açın: localhost/Grav/mypage; aşağıdaki sonucu alacaksınız -

Listeler

Bu bölümde sırasız ve sıralı listelerin Grav'da nasıl çalıştığını anlayacağız.

Sırasız

Sırasız bir listede madde işaretleri kullanılır. Kullanım*, - , +. madde işaretleri için semboller. Herhangi bir metinden önce boşluk içeren sembolü kullanın ve madde işareti görüntülenecektir.

Example

+ Bullet
+ Bullet
+ Bullet
   -Bullet
   -Bullet
   -Bullet
   *Bullet

.md bir tarayıcı olarak dosyayılocalhost/Grav/mypage; aşağıdaki sonucu alacaksınız -

Sipariş verildi

Bir şeyi listelemeden önce sayıları ekleyin.

Example

1. Coffee
2. Tea
3. Green Tea

.md bir tarayıcı olarak dosyayılocalhost/Grav/mypage. Bu size şu sonucu verecektir -

Kod

Bu bölümde Inline ve blok kod “çitlerinin” Grav'da nasıl çalıştığını anlayacağız.

Satır içi Kod

Kullanarak satır içi kod oluşturun (`) Markdown'da kodları kullanmak için.

Example

In the given example, '<section></section>' must be converted into code.

.md bir tarayıcı olarak dosyayılocalhost/Grav/mypage aşağıdaki sonucu alacaksınız -

Blok kodu "çitleri"

Kullanım (```) birden fazla kod satırını engellemek istiyorsanız çitler.

Example

```
You’re Text Here

```

.md bir tarayıcı olarak dosyayılocalhost/Grav/mypage; aşağıdaki sonucu alacaksınız -

Tablolar

Grav'da tablolar, başlık bölümünün altındaki borular ve çizgiler kullanılarak oluşturulur. Borular dikey olarak hizalanmamalıdır.

Misal

| Number  |    Points       |
| ------  | -----------     |
|   1     | Eve Jackson 94  |
|   2     | John Doe 80     |
|   3     | Adam Johnson 67 |

.md bir tarayıcı olarak dosyayılocalhost/Grav/mypage; aşağıdaki sonucu alacaksınız -

Sağa Hizalanmış Metin

Tablo içeriğini sağda görmek için, başlıkların altındaki tirelerin sağ tarafına iki nokta üst üste eklemelisiniz.

| Number |     Points      |
| ------:| -----------:    |
|   1    | Eve Jackson 94  |
|   2    | John Doe 80     |
|   3    | Adam Johnson 67 |

.md bir tarayıcı olarak dosyayılocalhost/Grav/mypage; aşağıdaki sonucu alacaksınız -

Bağlantılar

Bu bölümde, bağlantıların Grav'da nasıl çalıştığını anlayacağız.

Temel Bağlantılar

Bağlantılar, ([]) köşeli parantez ve (()) parantez yardımıyla yapılır. İçinde[] parantez, içeriği yazmalısınız ve () alan adını yazın.

Example

[Follow the Given link](http://www.google.com)

.md bir tarayıcı olarak dosyayılocalhost/Grav/mypage; aşağıdaki sonucu alacaksınız -

Başlık ekle

Bu bölümde .md dosyasına nasıl başlık ekleneceğini anlayacağız.

Example

[Google](https://www.gogle.com/google/ "Visit Google!")

.md bir tarayıcı olarak dosyayılocalhost/Grav/mypage; aşağıdaki sonucu alacaksınız -

Görüntüler

Görüntüler bir bağlantıya benzer ancak sözdiziminin başlangıcında bir ünlem işareti vardır.

Example

![Nature] (/Grav/images/Grav-images.jpg)

.md bir tarayıcı olarak dosyayılocalhost/Grav/mypage aşağıdaki sonucu alacaksınız -

Bu bölümde, Grav'da sayfaları nasıl bağlayacağımızı anlayacağız. Bir sayfayı diğerine basit bir şekilde bağlayabilirsiniz ve hatta uzak sayfalar bile sayfa bağlantısıyla bağlanabilir. Grav birçok duyarlı bağlantı seçeneğine sahiptir. KullandıysanızHTML daha önce dosyaları bağlamak için, Grav'da sayfa bağlamayı anlamak çok kolaydır.

Aşağıda bir Grav sitesinin Sayfalar dizininin temel bir örneği verilmiştir. Aşağıdaki dizini resimde gösterildiği gibi örnek olarak kullanacağız.

Aşağıda Grav linkinin birkaç yaygın bileşeni verilmiştir.

[Linked Content](../path/slug/page)
  • []- Bağlanan metin veya alternatif içeriğin yazılacağını belirtir. HTML'de, içeriği yerleştirmek için <a href=""> ve </a> kullanırız.

  • () - URL, doğrudan köşeli parantezin sonrasına yerleştirilen bu parantez içine yerleştirilir.

  • ../ - Bir dizin yukarı hareket ettiğini gösterir.

Aşağıda listelendiği gibi içerikte kullanılan 4 tür bağlantı vardır -

  • Slug Relative

  • Directory Relative

  • Absolute

  • Remote

Slug Bağıl

İç bağlantılar, dosya / dizin yapınızdaki bazı adlarla sınırlı değildir. Sümüklü böcekler hem başlıktan hem de geri dönüş dizin adından çekilebilir; bu, daha sonra belirli bir dosya adını hatırlamanıza gerek olmadığından ancak ilgili bir slug'ı hatırlayabildiğinden kolayca bağlantılar oluşturmanıza yardımcı olur. Grav'ın şablon oluşturma motoru, hangi şablonun uygulanacağını bilmek için dosya adlarını kullanır.

[link](../dog)

Yukarıdaki kod size şu sonucu getirir -

Yukarıdaki örnekte, bir dizini yukarı taşımalı ve içinde bulunan varsayılan sayfayı yüklemelisiniz. pages/01.home/02.nature/item.md dizin pages/01.home/02.dog/item.md. İtem.md dosyası atanmış slug'a sahip değildir, bu nedenle Grav dizin adını kullanır.

Sonra, benzer bir örnek bulursunuz. pages/01.home/01.dog/item.md -e pages/02.black/01.fish/item.md, ancak item.md dosyasını yüklediğinde, dosyaya bir bilgi atanacaktır. 01.fish.

[link](../../black/fish)

Yukarıdaki kod size şu sonucu verir -

Şimdi varsayılan bilgi klasörü adının ile değiştirileceğini göreceksiniz. black item.md'nin başlığında slug.

Dizin Göreli

Göreli olarak ayarlanmış hedefler, bir görüntü dosyası veya gerektiği gibi başka bir dosya olabilen geçerli sayfayı bağlamak için kullanılır. Dosyanın konumu, hedefin yeri kadar önemlidir. Dosya yolu değiştirilirken taşınırsa, bağlantı kopabilir. Bir dosya tutarlı kaldığı sürece, yerel bir geliştirme sunucusu ile farklı alan adına sahip canlı bir sunucu arasında kolayca geçiş yapabilirsiniz. Bağlantılar sorunsuz çalışmalıdır.

Dosyanızın bağlantısını dizin veya bilgi bilgisi yerine doğrudan adıyla göstereceksiniz. Adresinden bir bağlantı oluşturabilirsinizpages/01.home/01.dog/item.md to pages/02.black/01.fish/item.md komutu aşağıda gösterildiği gibi kullanın.

[link](../../02.black/01.fish/item.md)

Yukarıdaki kod size şu sonucu verir -

Her iki klasör de gösterildiği gibi yukarı taşınır. ../../ve ardından alttaki iki klasörde, doğrudan item.md dosya.

Mutlak Bağlantılar

Size göre göreli bağlantılara benzer. /user/pages/dizini Grav. Ayrıca bu iki yöntemle yapılabilir.

  • Slug Relative style

  • Directory Relative style

Slug Göreli Stil

Bilgi göreli türüne benzer şekilde yapabilirsiniz. Yoldaki dizin adını kullanır. Bağlantıyı kopararak sıra ve sonradan meydana gelen değişiklikleri ortadan kaldırır. Bağlantının kopmasına yol açan başlangıçtaki klasör adının numarasını değiştirir.

Aşağıda verilen mutlak bağlantı örneğidir, bağlantı / ile açılır. Mutlak bağlantının yapıldığını belirtir.pages/01.home/01.dog/item.md Slug tarzında.

[link](/home/nature)

Yukarıdaki kod size şu sonucu verir -

Directory relative styleGitHub gibi hizmetlerle kullanıldığında daha tutarlıdır. Grav'ın esnekliğinden yararlanamıyorlar. Aşağıda, ile yapılan mutlak bir bağlantı örneğini görebilirsiniz.pages/01.home/01.dog/item.md Dizin Göreli stilini kullanarak.

[link](/01.home/01.dog)

Uzaktan kumanda

Uzak bağlantılar, herhangi bir dosya veya belgeye URL'si aracılığıyla doğrudan bağlanmanıza olanak tanır. Kendi sitenizin içeriğini eklemenize gerek yoktur.

Aşağıdaki örnek, web sitesine nasıl bağlanacağınızı gösterir TutorialsPoint sayfa.

[link](http://www.tutorialspoint.com)

Yukarıdaki kod size şu sonucu verir -

Güvenli HTTPS bağlantıları dahil herhangi bir URL'ye doğrudan bağlanabilirsiniz.

Bu bölümde, Grav'da görüntü bağlamayı anlayacağız. Grav, görüntüleri bir sayfadan diğerine ve hatta uzak sayfalara bağlamanıza izin verir. Dosyaları HTML kullanarak bağladıysanız, Grav'da görüntü bağlamayı anlamak çok kolay olacaktır.

Bu yapıyı kullanarak, medya dosyalarının sayfada farklı bağlantı türlerini kullanarak nasıl görüntüleneceğini göreceğiz. Bu yapı altındaki her klasör resimler içerir ve altında özel bir dizin vardır./02.green/img01 bir sayfa görevi gören ancak yalnızca medya dosyalarını içeren.

Grav markdown tabanlı resim etiketinin bazı ortak unsurlarına bakalım.

![Alt Text](../path/image.ext)
  • ! - Markdown bağlantı etiketinin başına yerleştirdiğinizde bir resim etiketini belirtir.

  • [] - Görüntü için isteğe bağlı alt metni belirtir.

  • () - Dosya yolunu içeren köşeli parantezin hemen sonrasına yerleştirilir.

  • ../ - Bir dizinde yukarı hareket olduğunu gösterir.

Grav, aşağıda listelenen beş tür resim bağlantısı kullanır -

  • Slug Relative

  • Directory Relative

  • Absolute

  • Remote

  • Media Actions on Images

Slug Bağıl

Göreli görüntü bağlantılarını geçerli sayfaya ayarlar ve aynı dizindeki başka bir dosyayı bağlar. Göreli bağlantılar kullanılırken, kaynak dosyanın konumu hedefin konumu kadar önemlidir. Dosyadaki yolu taşırken değiştirirseniz, bağlantı kopabilir. Bu görüntü bağlama yapısını kullanmanın avantajı, dosya yapısı sabit kaldığı sürece yerel geliştirme sunucusu ile farklı bir alan adına sahip canlı sunucu arasında geçiş yapabilmenizdir.

Misal

![link](../water/img01/img.jpg)

Buraya ../ bağlantınızın bir klasör yukarı ve sonra bir klasör aşağı hareket ettiğini ve hedefin img.jpg olduğunu gösterir.

Yukarıdaki yolu kullandığınızda, aşağıdaki çıktıyı alacaksınız -

Grav, sayfanın birincil markdown dosyasının başlığındaki sümüklü böcekleri destekler ve bu bilgi, verilen sayfanın klasör adının yerini alır.

Eğer 01.sky klasörün aracılığıyla bir bilgi kümesi vardır .md dosya, yani /pages/01.blue/01.sky/text.md, dosyanın başlığı şu şekilde olacaktır:

---
title: Sky
slug: test-slug
taxonomy:
   category: blog
---

Yukarıdaki kodda, sümüklü böcekleri ayarladık test-slugbu isteğe bağlıdır. Slug'ı ayarladıktan sonra, sahip olacak medya dosyasına bağlanabilirsiniz.Slug Relative veya Absolute Bağlantı için URL ayarlanmış.

Dizin Göreli

Bu bağlantı türünde, geçerli sayfaya dizin göreli görüntü bağları ayarlayabilirsiniz. URL sümüklüböceklerini kullanmak yerine, dizine göre görüntü bağlantılarındaki klasör adlarıyla tam yol üzerinden başvurabilirsiniz.

Misal

![My image](../../blue/img01/img.jpg)

Yukarıdaki yolu kullandığınızda, çıktı aşağıda gösterildiği gibi görüntülenecektir -

Mutlak

Mutlak bağlantılar, göreceli bağlantılarla aynıdır, ancak tek fark, sitenin köküne göre olmaları ve /user/pages/ dizin.

Mutlak bağlantıları iki farklı şekilde kullanabilirsiniz -

  • Kullanabilirsiniz Slug Relative Yolda bilgi veya dizin adlarını içeren ve mutlak bağlamada yaygın olarak kullanılan stil.

  • Kullanabilirsiniz Absolute Link ile bağlantıyı açan a/.

![My image](/blue/img01/img.jpg)

Yukarıdaki yolu kullandığınızda, aşağıdaki çıktıyı alacaksınız -

Uzaktan kumanda

Uzak görüntü bağlantıları, herhangi bir medya dosyasının doğrudan URL'si aracılığıyla görüntülenmesine izin verir. Bu bağlantılar kendi sitenizin içeriğini içermez. Aşağıdaki örnek, uzak URL kullanılarak resmin nasıl görüntüleneceğini gösterir -

![Remote Image 1](http://www.freedomwallpaper.com/nature-wallpaper/spring_nature-wide.jpg)

Aşağıdaki resimde gösterildiği gibi bağlantıya tıkladığınızda, verilen URL'deki resmi gösterecektir.

Görsellerdeki Medya İşlemleri

Sayfalarla ilişkili görüntüler, Grav'ın medya eylemlerinin avantajını kullanmamızı sağlar . Grav'da içerik oluştururken resimler, videolar ve diğer dosyalar gibi bazı medya dosyalarını görüntüleyebilirsiniz.

Misal

Aşağıda verilen formatı kullanarak bir görüntü yükleyebilirsiniz -

![Styling Example](../img01/img.jpg?cropResize = 400, 200)

Yukarıdaki yolu kullandığınızda, aşağıda gösterildiği gibi bir çıktı alacaksınız -

Medya dosyaları, görüntüler, videolar ve diğer birçok dosya gibi farklı görüntüleme içeriği türleri içerir. Grav, bu dosyaları herhangi bir sayfa tarafından kullanılmak üzere otomatik olarak bulur ve işler. Sayfanın yerleşik işlevselliğini kullanarak meta verilere erişebilir ve medyayı dinamik olarak değiştirebilirsiniz.

Smart-cachingGerektiğinde önbellekte oluşturulan medyayı oluşturan Grav tarafından kullanılır. Bu şekilde, medya tekrar tekrar oluşturmak yerine önbelleğe alınmış sürümü kullanabilir.

Desteklenen Medya Dosyaları

Grav tarafından desteklenen medya dosyası türleri aşağıdadır -

  • Image - jpg, jpeg, png

  • Animated Image - gif

  • vectorized Image - svg

  • Video - mp4, mov, m4v, swf

  • Data/information - txt, doc, pdf, html, zip, gz

Görüntüleme Modları

Aşağıda, Grav'da birkaç görüntü modu bulunmaktadır -

  • Source - Görüntünün, videonun veya bir dosyanın görsel görüntüsüdür.

  • text - Medya dosyalarının metinsel sunumu.

  • thumbnail - Medya dosyası için küçük resim görüntüsü.

Küçük Resimleri Bulma

Küçük resimleri üç konumu kullanarak bulabilirsiniz -

  • In the same folder where your media files exists- [ortam-adı]. [Ortam-uzantısı] .thumb. [Başparmak-uzantısı]; burada, ortam-adı ve ortam-uzantısı gerçek ortam dosyasının adı ve uzantısıdır ve başparmak uzantısı, görüntü ortam türü tarafından desteklenen uzantıdır.

  • User Folder − kullanıcı / resimler / medya / başparmak- [medya uzantısı] .png; burada, medya uzantısı gerçek medya dosyasının uzantısıdır.

  • System folder- system / images / media / thumb- [ortam uzantısı] .png; burada, medya uzantısı gerçek medya dosyasının uzantısıdır.

Işık Kutuları ve Bağlantılar

Grav, ışık kutusu eklentisinin okuması için bazı öğeleri içeren bir bağlantı etiketinin çıktısını verir. Eklentilerinize dahil olmayan bir lightbox kitaplığı kullanmak istiyorsanız, kendi eklentinizi oluşturmak için aşağıdaki özellikleri kullanabilirsiniz.

  • rel- Işık kutusu bağlantısını gösterir. Değer ışık kutusu.

  • href - Medya nesnesinin URL'sidir.

  • data-width - Kullanıcı tarafından seçilen ışık kutusunun genişliğini ayarlayın.

  • data-height - Kullanıcı tarafından seçilen ışık kutusunun yüksekliğini ayarlayın.

  • data-srcset - srcset dizesi, görüntü ortamı durumunda kullanılır.

Hareketler

Grav'daki Builder kalıbı, birden fazla eylemi gerçekleştirmek için medyayı işlemek için kullanılır. Tüm ortamlar için desteklenen bazı eylem türleri varken, bazıları yalnızca belirli ortamlar için kullanılabilir.

Genel

Ortam türleri için kullanılabilen 6 tür genel eylem vardır. Her eylem aşağıda açıklanmıştır.

Sr.No. Eylem ve Açıklama
1 url ()

url () geri veriyor raw url path medyaya.

2 html ([başlık] [, alt] [, sınıflar]

Çıktı, ortam için geçerli bir html Etiketine sahip olacaktır.

3

display(mode)

Farklı ekran modları arasında geçiş yapmak için kullanılır. Ekran moduna geçtiğinizde, tüm eylemler sıfırlanacaktır.

4 bağlantı ()

Bağlantıdan önce uygulanan işlemler, bağlantının hedefine uygulanacaktır.

5 ışık kutusu ([genişlik, yükseklik])

Lightbox, bağlantı eylemine benzer ancak bazı ekstra özelliklere sahip bir bağlantı oluşturması bakımından küçük bir farka sahiptir.

6 Küçük resim

Herhangi bir medya dosyası türü için sayfa ile varsayılan arasında seçim yapın ve bu manuel olarak yapılabilir.

Görüntüler Üzerindeki Eylemler

Aşağıdaki tablo, görüntülere uygulanan birkaç eylemi listelemektedir.

Sr.No. Eylem ve Açıklama
1 yeniden boyutlandırma (genişlik, yükseklik, [arka plan])

Yeniden boyutlandırarak görüntünün genişliğini ve yüksekliğini değiştirir.

2 forceResize (genişlik, yükseklik)

Orijinal orana bakılmaksızın görüntüyü gerektiği kadar uzatır.

3 cropResize (genişlik, yükseklik)

Görüntüyü, genişliğine ve yüksekliğine göre daha küçük veya daha büyük boyuta getirir.

4 kırpma (x, y, genişlik, yükseklik)

X ve y konumundan genişlik ve yükseklik olarak açıklandığı gibi görüntüyü kırpar.

5 cropZoom (genişlik, yükseklik)

İsteğe göre görüntüleri yakınlaştırmaya ve kırpmaya yardımcı olur.

6 kalite (değer)

Görüntü kalitesi değerini 0 ile 100 arasında ayarlar.

7 olumsuzlamak ()

Renkler olumsuzluk içinde tersine çevrilir.

8 parlaklık (değer)

Birlikte value nın-nin -255 -e +255, görüntüye parlaklık filtresi eklenir.

9 kontrast (değer)

Kontrast filtresini görüntüye uygulamak için -100 ile +100 arasındaki değer kullanılır.

10 gri tonlamalı ()

Görüntüyü işlemek için gri tonlama filtresi kullanılır.

11 kabartma ()

Kabartma filtresi, görüntüyü işlemek için de kullanılır.

12 pürüzsüz (değer)

Yumuşatma filtresi, -10 ile +10 arasında değer ayarlanarak görüntülere uygulanır.

13 keskin()

Görüntüye netleştirme filtresi eklenir.

14 kenar ()

Görüntüye kenar bulma filtresi eklenir.

15 renklendirmek (kırmızı, yeşil, mavi)

Kırmızı, yeşil ve mavi renkleri ayarlayarak görüntüyü renklendirir.

16 sepya()

Sepya filtre, vintage bir görünüm vermek için eklenmiştir.

Animasyon ve Vektörizasyon Resimleri ve Videoları

Resimler ve videolar üzerinde animasyonlu ve vektörleştirilmiş işlemler yapılır. Görüntüler ve videolar üzerinde gerçekleşen eylem aşağıdadır.

Sr.No. Eylem ve Açıklama
1 yeniden boyutlandır (genişlik, yükseklik)

Yeniden boyutlandırma işlemi ayarlanacak width, height, data-width ve data-height Öznitellikler.

Kombinasyonlar

Grav, görüntülerle çalışmayı kolaylaştıran görüntü işleme işlevine sahiptir.

![My New Image](/images/maxresdefault.jpg?negate&cropZoom = 500, 500&lightbox & cropZoom = 600,
200&contrast = -100&sharp&sepia)

Yukarıdaki kod, aşağıda gösterildiği gibi bir çıktı üretecektir -

Duyarlı görüntüler

Aşağıdaki tablo birkaç tür duyarlı görüntüyü listelemektedir.

Sr.No. Eylem ve Açıklama
1 Daha yüksek yoğunluklu ekranlar

Dosya adına bir sonek eklediğinizde sayfaya daha yüksek yoğunluklu bir resim ekleyebilirsiniz.

2 Medya sorguları olan boyutlar

Dosya adına bir sonek eklediğinizde sayfaya daha yüksek yoğunluklu bir resim ekleyebilirsiniz.

Meta dosyaları

image1.jpg, archive.zipveya başka herhangi bir referans, değişkenleri ayarlama yeteneğine sahiptir veya bir meta dosyası tarafından geçersiz kılınabilir. Bu dosyalar daha sonra biçimini alır<filename>.meta.yaml. Örneğin, bir görüntünüz varsaimage2.jpg, ardından meta dosyanız şu şekilde oluşturulabilir: image2.jpg.meta.yaml. İçerik yaml sözdiziminde olmalıdır. Bu yöntemi kullanarak istediğiniz herhangi bir dosya veya meta veriyi ekleyebilirsiniz.

Modüler sayfaların anlaşılması ilk başta zordur, ancak bir kez öğrendikten sonra üzerinde çalışmak çok kolay olacaktır. Alt sayfalarından tek bir sayfa oluşturmayı sağlar. Modüler içerik sayfalarından karmaşık tek sayfa düzenleri oluşturma yeteneğine sahiptir.

Modüler sayfalar, doğrudan bir URL üzerinden erişilemediğinden yönlendirilemez olarak ayarlanır. Klasör adından önce _ (alt çizgi) ile tanımlanırlar. Tek bir sayfa elde etmek için her birinin üzerinde görüntülenen bir sayfa koleksiyonudur. Örneğin, kullanıcı / sayfalar / ev / _header. .

Klasör Yapısı

Tek sayfalık iskelet olması durumunda bu sayfayı 01.home klasöründe bulabilirsiniz. Bunda tek bir modüler elde edersiniz.mdhangi sayfaların dahil edilmesi gerektiğini ve görüntülenecek sayfaların sırasını söyleyen dosya. modular.html.twig mevcut tema klasörünüzde bulunabilir.

Aşağıdaki görselde modüler sayfalar için oluşturulmuş bir klasör yapısını görebilirsiniz.

Her alt klasör, bir markdown dosyasını tanımlayan bir .md dosyası içermelidir .

Öncelikle, içinde alt klasörler oluşturmanız gerekir. /users/pages/01.homeKlasör. Daha sonra, her klasör bir .md dosyası ve bir modüler.md dosyası içermelidir .

Alt klasörü oluşturduğunuzda, hem görüntü hem de dosya aynı klasörde olmalıdır.

Modüler Sayfa Nasıl Oluşturulur

Modüler sayfalar oluşturmak için verilen adımları izlemelisiniz.

Step 1 - içinde birkaç sayfa oluşturun /user/pages/01.home/. Klasör. Aşağıdaki görselde modular.md dosyası ile birlikte iki klasör oluşturduğumuzu görebilirsiniz.

Step 2 - Modüler bir sayfa oluşturmak için her klasörde bir dosya oluşturmalı ve bunu şu şekilde adlandırmalısınız: text.md.

Step 3- Ardından, kodunuzu text.md dosyasına ekleyin , kaydedin ve aynısını çalıştırın.

Example

Dört sayfayı da .md dosyası olarak kaydedin . Burada text.md, text1.md, text2.md ve text3.md olarak 4 sayfa oluşturduk.

---
title: Bio-diversity
---

## Bio-diversity

Biodiversity refers to the variety of life. It is seen in the number of species in an 
[ecosystem](https://simple.wikipedia.org/wiki/Ecosystem) or on the entire [Earth]
(https://simple.wikipedia.org/wiki/Earth). Biodiversity gets used as a measure of the
health of biological systems, and to see if there is a danger that too many species
become[extinct](https://simple.wikipedia.org/wiki/Extinct).

Şimdi, 4 sayfa oluşturun, bunları \templates\modular klasörü aşağıda gösterildiği gibi.

Ardından, ana sayfaya gidin ve yenileyin, değişiklikleri görebilirsiniz.

Yeni gezinme çubuğunda, dört dosya bağlantısını görebilirsiniz.

Çoklu Dil, web sitenizde farklı dillerin kullanılması olarak tanımlanır. Grav sitenizde çoklu dilleri kullanmanıza yardımcı olacak farklı prosedürleri öğreneceğiz.

Çoklu Dil Temelleri

Temel olarak Grav , herhangi bir sayfanın gösterimi için bir .md dosyasına ihtiyaç duyar . Çoklu dil desteğini etkinleştirdiğinizde, aşağıdaki gibi bir dosya arayacaktır.default.en.md veya default.fr.md..

Dil Yapılandırması

Öncelikle, cihazınızda bazı temel dil yapılandırması kurmalısınız. user/config/system.yamldosya. dosya.

Language:
   Supported:
      - en
      - Fr

Bunu yaparak, Grav'da çoklu dil desteğini etkinleştirmiş oldunuz. Yukarıdaki kodda,en İngilizce anlamına gelir ve frFransızca anlamına gelir. Bu, sitenizin bu iki dili destekleyeceği anlamına gelir. Burada varsayılan dil en (İngilizce) 'dir . Önce Fr (Fransızca) yazarsanız , bu varsayılan diliniz olur.

Çoklu Dil Sayfaları

Varsayılan diliniz olarak ayarlanmışsa English, sonra Grav arayacak default.en.mddosya. Bu dosya bulunamazsa, Grav ayarladığınız başka bir dili arar. Her iki dil de bulunamazsa, o zamandefault.md dosya.

Example

default.en.md dosyası

---
title: Home
---

# Grav is Running!
## You have installed **Grav** successfully

Yukarıdaki kod aşağıdaki çıktıyı üretecektir -

Varsayılan dil olarak Fransızca için default.fr.md dosyası -

---
titre: Accueil
---

# Grav est en marche!
## Vous avez installé ** ** Grav succès

Yukarıdaki kod aşağıdaki çıktıyı üretecektir -

URL aracılığıyla Aktif Dil

Web sitenizin URL'sini bir dil koduyla güncellemek istiyorsanız, şu adımları izleyin -

Example

Sitenizin İngilizce olmasını istiyorsanız, tarayıcınıza aşağıdaki satırı yazın -

http://www.mysite.com/en

Sitenizin Fransızca olmasını istiyorsanız, tarayıcınıza aşağıdaki satırı yazın -

http://www.mysite.com/fr

Tarayıcı Üzerinden Aktif Dil

Grav, http_accept_languagebunları değerleyin ve desteklenen dili sunmak için karşılaştırın. Bunun çalışmasını istiyorsanız,user/system.yaml dil bölümünde dosya -

language :
   http_accept_language : true

Dil Bazlı Ana Sayfa

Dil tabanlı bir ana sayfaya sahip olmak için, aşağıdaki kodu sayfanızda etkinleştirmelisiniz: site.yaml dosya -

home:
   aliases:
      en: /homepage
      fr: /page-d-accueil

Bu şekilde Grav, aktif dillerden hangi dili kullanacağını bulacaktır.

Aşağıdaki kod, Grav'ı sizi varsayılan dil rotanıza yönlendirmeye zorlayacaktır. İnclude_route seçeneği , URL'nize aşağıdaki gibi dil kodunu eklemeye zorlar:http://www.mysite.com/en/home

languages:
   home_redirect:
      include_lang: true
      include_route: false

Dil Tabanlı Twig Şablonları

Dosyanız default.en.md ise , Grav default.html.twig olarak bir twig dosyası arayacaktır . Dile özgü bir dal dosyasına ihtiyacınız olduğunda, bunu dil klasörünün kök düzeyinde yüklemeniz gerekir. Mevcut temanıztemplates/default.html.twig bir tane yaratmalısın templates/en/ klasörünü açın ve İngilizce'ye özgü klasörünüzü şu şekilde yerleştirin: templates/en/default.html.twig

Dil Değiştirici

Dil değiştirici eklentisi Grav Package Manager'da (GPM) mevcuttur .

Twig üzerinden çeviriler

Dal filtresi ve t () işlevini kullanın. Her ikisi de benzer şekilde çalışır. Başka bir dal dosyanız varsa, bir diziden çeviri yapmanıza izin verir.

Eklenti ve Tema Dili Çevirileri

Çevirilerinizi eklentilerde ve temalarda sağlayın languages.yaml dosya temanızın veya eklentinizin (/user/plugins/error/languages.yaml) kök dizininde yer almalı ve desteklenen tüm dilleri içermelidir.

Çeviri Geçersiz Kılmaları

Çeviriyi geçersiz kılmak istiyorsanız, değer çiftini kullanıcı / diller / klasörünüzdeki dil dosyasına koymalısınız .

ileri

Environment – Based Language Handling

Kullanıcıları URL'ye göre sitenizin doğru sürümüne yönlendirmek mümkündür. Sitenizin url’sihttp://english.yoursite.com, standardınız için bir takma ad http://www.yoursite.com, daha sonra olarak bir konfigürasyon oluşturabilirsiniz /user/english.yoursite.com/config/system.yaml..

languages:
   supported:
      - fr
      - en

Tersine çevrilmiş dil düzeni kullanır. Yukarıdaki kodda, fr varsayılan dildir. Eğer tutarak sıralamayı değiştirin tr üst ve en fr altta, o zaman en tr varsayılan dil haline gelir.

Dilin Takma Adlı Yolları

Aynı sayfanın farklı dil sürümleri arasında geçiş yapmak çok zordur, Page.rawRoute()sayfa nesnenizdeki yöntem. Tek bir sayfanın farklı dil çevirileri için aynı ham yolu alır. Doğru bir rota elde etmek için dil kodunu öne koyun.

Özel bir rotayla Fransızca sayfasındaysanız -

/ma-page-francaise-personnalisee

İngilizce sayfada özel rota var -

/my-custom-french-page

Fransızca sayfanın ham sayfasını elde edersiniz ve bu -

/blog/custom/my-page

Ardından, yeni URL'niz olacak istediğiniz dili eklemeniz yeterlidir.

/en/blog/custom/my-page

Çeviri Desteği

Grav, temalarda ve eklentilerde kullanılmak üzere Twig'de PHP aracılığıyla çeviriler sağlamak için basit bir mekanizma sağlar. Varsayılan olarak etkindir ve kullanırenbelirli bir dil tanımlanmamışsa dil. Etkinleştirmek veya devre dışı bırakmak için system.yaml dosyasına gidin ve değişiklikleri yapın.

languages:
   translations: true

Birçok şekilde ve farklı yerlerde çeviri sağlayabilirsiniz. İlk yer sistem / diller klasörüdür. Dosyalar şurada oluşturulmalıdır:en.yaml, fr.yamlvb. format. Her yaml dosyası bir dizi veya iç içe geçmiş anahtar çiftlerinden oluşmalıdır.

SITE_NAME: My Blog Site
HEADER:
   MAIN_TEXT: Welcome to my new blog site
   SUB_TEXT: Check back daily for the latest news

Session Based Active Language

Etkin dilin oturuma dayalı depolamasını etkinleştirebilirsiniz. Etkinleştirmek için sahip olmanız gerekirsession : enables : true system.yaml'de ve dil ayarını etkinleştirin.

languages:
   session_store_active: true

Language Switcher

GPM'den bir dil değiştirme eklentisi yükleyin.

Setup with language specific domains

Varsayılan dilleri atamak için Ortam tabanlı dil işleme yapılandırmasına sahip olun. Bu seçeneği system.yaml dosyanıza ekleyin; true olarak ayarlanmalıdır.

pages.redirect_default_route: true

Aşağıdakileri ekleyin: .htaccess dosyalayın ve ihtiyaçlarınıza göre dil sümüklü böceklerini ve alan adlarını seçin.

# http://www.cheat-sheets.org/saved-copy/mod_rewrite_cheat_sheet.pdf
# http://www.workingwith.me.uk/articles/scripting/mod_rewrite

# handle top level e.g. http://Grav-site.com/de
RewriteRule ^en/?$ "http://Grav-site.com" [R = 301, L] RewriteRule ^de/?$ "http://Grav-site.de" [R = 301, L]

# handle sub pages, exclude admin path
RewriteCond %{REQUEST_URI} !(admin) [NC]
RewriteRule ^en/(.*)$ "http://Grav-site.com/$1" [R = 301, L]
RewriteCond %{REQUEST_URI} !(admin) [NC]
RewriteRule ^de/(.*)$ "http://Grav-site.de/$1" [R = 301, L]

Temalar, Grav sitenizin görünümünü kontrol eder. Grav'daki temalar, güçlü Twig Şablonlama motoruyla oluşturulmuştur .

İçerik Sayfaları ve Twig Şablonları

Oluşturduğunuz sayfalar, ada göre veya sayfa için şablon başlık değişkenini ayarlayarak belirli bir şablon dosyasına başvurur. Daha basit bakım için sayfa adının kullanılması önerilir.

Grav Base paketini kurduktan sonra, defauld.mduser / pages / 01.home klasöründeki dosya. Dosyanın adı, yanidefault Grav'a bu sayfanın twig şablonuyla oluşturulması gerektiğini söyler default.html.twig içine yerleştirilmiş themes/<mytheme>/templates Klasör.

Örneğin, adında bir dosyanız varsa contact.md, twig şablonuyla şu şekilde oluşturulacaktır: themes/<mytheme>/templates/contact.html.twig.

Tema Organizasyonu

Aşağıdaki bölümlerde, tema organizasyonu, yani tanımı, yapılandırması ve daha fazlası hakkında tartışacağız.

Tanım ve Yapılandırma

Tema ile ilgili bilgiler şurada tanımlanacaktır: user/themes/antimatter/blueprints.yamlYönetim panelinde kullanılacak dosya ve form tanımları isteğe bağlı olarak verilmektedir. Aşağıdaki içeriği göreceksinizuser/themes/antimatter/blueprints.yaml Dosya için Antimatter theme.

name: Antimatter
version: 1.6.0
description: "Antimatter is the default theme included with **Grav**"
icon: empire
author:
   name: Team Grav
   email: [email protected]
   url: http://getgrav.org
homepage: https://github.com/getgrav/grav-theme-antimatter
demo: http://demo.getgrav.org/blog-skeleton
keywords: antimatter, theme, core, modern, fast, responsive, html5, css3
bugs: https://github.com/getgrav/grav-theme-antimatter/issues
license: MIT

form:
   validation: loose
   fields:
      dropdown.enabled:
         type: toggle
         label: Dropdown in navbar
         highlight: 1
         default: 1
         options:
            1: Enabled
            0: Disabled
         validate:
            type: bool

Tema yapılandırma seçeneklerini kullanmak için, varsayılan ayarları adlı bir dosyada sağlamanız gerekir. user/themes/<mytheme>/<mytheme>.yaml.

Example

enable: true

Tema ve Eklenti Etkinlikleri

Temanın, Grav ile eklenti mimarisi aracılığıyla etkileşime girme yeteneği, Grav'ın bir başka güçlü özelliğidir. Bunu başarmak için basitçe oluşturunuser/themes/<mytheme>/<mytheme>.php (Örneğin, antimatter.php varsayılan Antimadde teması için) dosyası ve aşağıdaki biçimi kullanın.

<?php
namespace Grav\Theme;

use Grav\Common\Theme;

class MyTheme extends Theme {
   public static function getSubscribedEvents() {
      return [
         'onThemeInitialized' => ['onThemeInitialized', 0]
      ];
   }
   public function onThemeInitialized() {
      if ($this->isAdmin()) { $this->active = false;
         return;
      }
      
      $this->enable([ 'onTwigSiteVariables' => ['onTwigSiteVariables', 0] ]); } public function onTwigSiteVariables() { $this->grav['assets']
         ->addCss('plugin://css/mytheme-core.css')
         ->addCss('plugin://css/mytheme-custom.css');

      $this->grav['assets']
         ->add('jquery', 101)
         ->addJs('theme://js/jquery.myscript.min.js');
   }
}

Şablonlar

Grav temasının yapısının, her bir sayfa türü içeriği için şablonlarda / klasörde ilişkili dal şablonlarının olması gerekliliği dışında belirlenmiş kuralları yoktur.

Sayfa içeriği ve dal şablonu arasındaki bu sıkı bağlantı nedeniyle, indirmeler sayfasında bulunan Skeleton paketlerine dayalı genel temalar oluşturmak iyidir .

Temanızdaki modüler şablonu desteklemek istediğinizi varsayalım, modular/klasör ve içinde twig şablonları dosyalarını saklayın. Formları desteklemek istiyorsanız, o zaman oluşturmalısınızform/ klasör ve form şablonlarını içinde saklayın.

Taslaklar

Her bir şablon dosyası için seçenekler ve konfigürasyon için formlar tanımlamak için blueprints/klasör kullanılır. Bunlar, aracılığıyla düzenlenemezAdministrator Panelve isteğe bağlı olarak kullanılır. Tema olmadan tamamen işlevseldirblueprints Klasör.

SCSS / DAHA AZ / CSS

SASS veya LESS ile site geliştirmek istiyorsanız, o zaman alt klasörler oluşturmanız gerekir. user/themes/<mytheme>/scss/veya less/ Bir css / klasör ile birlikte DAHA AZ isterseniz.

SASS veya LESS'ten derlenen otomatik olarak oluşturulan dosyalar için, css-compiled/klasör kullanılır. Antimadde temasında,scss SASS varyantı kullanılır.

Makinenize SASS'yi kurmak için aşağıdaki adımları izleyin.

  • Scss kabuk betiğini çalıştırmak için temanın köküne aşağıda verilen komutu yazın.

$ ./scss.sh
  • Doğrudan çalıştırmak için aşağıdaki komutu yazın.
$ scss --sourcemap --watch scss:css-compiled

css-compiled/ tüm derlenmiş scss dosyalarını içerecek ve css dosyası temanızın içinde oluşturulacaktır.

Diğer Klasörler

Ayrı oluşturmanız tavsiye edilir images/, fonts/ ve js/ klasörler user/themes/<mytheme>/ temanızda kullanılan tüm resimler, yazı tipleri ve JavaScript dosyaları için klasör.

Tema Örneği

Genel klasör yapısı Antimatter Şimdiye kadar tartıştığımız tema aşağıda gösterilmiştir.

Bu bölümde, kavramı anlamak için bir Grav teması oluşturalım.

Antimadde

Grav temel paketini kurduğunuzda, varsayılan Antimatter tema yüklü Nucleus(basit bir CSS stil temel seti). Nucleus, benzersiz bir görünüm ve his veren temel CSS stilini ve HTML işaretlemesini içeren hafif bir CSS çerçevesidir.

Önyükleme

Popüler Bootstrap çerçevesini kullanan bir tema oluşturalım . Bootstrap, ön uç web geliştirmeyi daha hızlı ve daha kolay hale getiren açık kaynaklı ve en popüler HTML, CSS ve JS çerçevesidir.

Aşağıdaki adımlar temanın oluşturulmasını açıklamaktadır -

Adım 1: Temel Tema kurulumu

Tema Temelleri bölümünde çalıştığımız gibi, Grav temasının yeni tema oluşturmak için takip edilmesi gereken bazı temel unsurları var .

  • Grav temel paketini kurduktan sonra, altta bootstrap adlı bir klasör oluşturun. user/themes klasörü aşağıda gösterildiği gibi.

  • İçinde user/themes/bootstrap klasör oluştur css/, fonts/, images/, js/ ve templates/ Aşağıda gösterildiği gibi.

  • Adlı bir tema dosyası oluşturun bootstrap.php senin içinde user/themes/bootstrap klasörünü açın ve aşağıdaki içeriği içine yapıştırın.

<?php
namespace Grav\Theme;
use Grav\Common\Theme;
class Bootstrap extends Theme {}
  • Şimdi bir tema yapılandırma dosyası oluşturun bootstrap.yaml içinde themes/bootstrap klasörünü açın ve aşağıdaki içeriği içine yazın.

enable: true
  • Atlayacağız blueprints hiçbir yapılandırma seçeneğimiz olmadığından ve bu bölüm için normal CSS kullanacağımızdan.

Adım 2: Bootstrap ekleyin

Bir bootstrap teması oluşturmak için, temanıza Bootstrap'ı eklemelisiniz. Bu nedenle, aşağıda gösterildiği gibi bu bağlantıya tıklayarak en son Bootstrap paketini indirmeniz gerekir .

Paketi açın ve css, fonts ve js olmak üzere üç klasör göreceksiniz. Şimdi bu 3 klasörün içeriğini benzer şekilde adlandırılmış klasörlere kopyalayın.user/themes/bootstrap daha önce oluşturulmuş.

3. Adım: Temel Şablon

Önceki bölümde çalıştığımız gibi içerik, default.md Grav'a adı verilen işleme şablonunu aramasını söyleyen dosya default.html.twig. Bu dosya, bir sayfayı görüntülemek için ihtiyacınız olan her şeyi içerir.

Temel düzeni bloklarla tanımlamanıza izin veren Twig Extends etiketini kullanan daha iyi bir çözüm var . Bu, dal şablonunun temel şablonu genişletmesine ve temelde tanımlanan bloklar için tanımlamalar sağlamasına izin verecektir.

Basit bir Bootstrap temel şablonu oluşturmak için şu adımları izleyin -

  • Adlı bir klasör oluşturun partials içinde user/themes/bootstrap/templatesKlasör. Bu, temel şablonumuzu saklamak için kullanılır.

  • İçinde partials klasör oluştur base.html.twig aşağıdaki içeriğe sahip dosya.

<!DOCTYPE html>
<html lang = "en">
   <head>
      {% block head %}
      <meta charset = "utf-8">
      <meta http-equiv = "X-UA-Compatible" content = "IE = edge">
      <meta name = "viewport" content = "width = device-width, initial-scale = 1">
      {% if header.description %}
      <meta name = "description" content = "{{ header.description }}">
      {% else %}
      <meta name = "description" content = "{{ site.description }}">
      {% endif %}
      {% if header.robots %}
      <meta name = "robots" content = "{{ header.robots }}">
      {% endif %}
      <link rel = "icon" type = "image/png" href="{{ theme_url }}/images/favicon.png">

      <title>{% if header.title %}{{ header.title }} | {% endif %}{{ site.title }}</title>

      {% block stylesheets %}
         {# Bootstrap core CSS #}
         {% do assets.add('theme://css/bootstrap.min.css',101) %}

      {# Custom styles for this theme #}
         {% do assets.add('theme://css/bootstrap-custom.css',100) %}

         {{ assets.css() }}
      {% endblock %}

      {% block javascripts %}
         {% do assets.add('https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js', 101) %}
         {% do assets.add('theme://js/bootstrap.min.js') %}

         {% if browser.getBrowser == 'msie' and browser.getVersion >= 8 and browser.getVersion <= 9 %}
            {% do assets.add('https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js') %}
            {% do assets.add('https://oss.maxcdn.com/respond/1.4.2/respond.min.js') %}
         {% endif %}

         {{ assets.js() }}
      {% endblock %}

      {% endblock head %}
   </head>
      <body>
         {# include the header + navigation #}
         {% include 'partials/header.html.twig' %}

         <div class = "container">
            {% block content %}{% endblock %}
         </div>

         <div class = "footer">
            <div class = "container">
               <p class = "text-muted">Bootstrap Theme for <a href = "http://getgrav.org">Grav</a></p>
            </div>
         </div>
      </body>
   {% block bottom %}{% endblock %}
</html>

4. Adım: Parçalama

Bakalım kodun nasıl çalıştığını base.html.twig dosya aşağıda gösterildiği gibi.

  • {% block head %}{% endblock head %}sözdizimi, temel Twig şablonunda bir alanı tanımlamak için kullanılır. İçindeki kafa{% endblock head %} İsteğe bağlı.

  • İf ifadesi, bir meta descriptionsayfa başlıklarında ayarlansın veya ayarlanmasın. Ayarlanmazsa, şablon kullanılarak oluşturulmalıdırsite.description tanımlandığı gibi user/config/site.yaml dosya.

  • Mevcut temanın yolu, theme_url değişken.

  • Sözdizimi {% do assets.add('theme://css/bootstrap.min.css',101) %} kullanmak için kullanılır Asset Manager. theme://mevcut tema yolunu temsil eder ve 101, daha yüksek değerin önce geldiği sırayı ve ardından daha düşük değeri gösterir. CDN bağlantılarını açıkça şu şekilde de sağlayabiliriz:

{% do assets.addCss('http://fonts.googleapis.com/css?family = Open + Sans') %}

or,

{% do assets.addJs(' https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js') %}
  • Tüm JavaScript etiketleri ve CSS bağlantı etiketleri, çağrıldığında şablon tarafından oluşturulur. {{ assets.css() }} veya {{ assets.js() }} sırasıyla yapılır.

  • Sözdizimi {# ... #} Twig'de yorum yazmak için kullanılır.

  • Başka bir Twig şablonu eklemek için {% include 'partials/header.html.twig' %} etiketi kullanılır.

  • Bir şablondaki içerik, {% block content %}{% endblock %} etiket.

  • Özel JavaScript başlatma veya analitik kodlar eklemek için, {% block bottom %}{% endblock %} etiketi, şablonlar için yer tutucu olarak kullanılır.

Adım 5: Başlık Şablonu

Ne zaman {% include 'partials/header.html.twig' %}çalıştırıldığında, Twig oluşturma motoru Twig şablonunu arar. Öyleyse yaratheader.html.twig şablon dosyası içinde user/themes/bootstrap/templates/partials aşağıdaki içeriğe sahip klasör.

<nav class = "navbar navbar-default navbar-inverse navbar-static-top" role = "navigation">
   <div class = "container">
      <div class = "navbar-header">
         <button type = "button" class = "navbar-toggle"
            data-toggle = "collapse" data-target = ".navbar-collapse">
               <span class = "sr-only">Toggle navigation</span>
               <span class = "icon-bar"></span>
               <span class = "icon-bar"></span>
               <span class = "icon-bar"></span>
         </button>
         <a class = "navbar-brand" href = "#">Grav</a>
      </div>
      
      <div class = "navbar-collapse collapse">
         <ul class = "nav navbar-nav navbar-right">
            {% for page in pages.children %}
            {% if page.visible %}
            {% set current_page = (page.active or page.activeChild) ? 'active' : '' %}
            <li class = "{{ current_page }}"><a href = "{{ page.url }}">{{ page.menu }}</a></li>
            {% endif %}
            {% endfor %}
         </ul>
      </div>
      
   </div>
</nav>

Yukarıdaki kod bir gezinti çubuğu oluşturur ve her yeni sayfa oluşturulduğunda tüm menü öğelerini otomatik olarak görüntüler. user/pages Klasör.

Step 6 − Default Template

İçeriğin her bir öğesinin belirli bir dosya adı vardır. default.md bu, Grav'a adı verilen bir şablon dosyasını aramasını söyler default.html.twig. Şimdi oluşturalımdefault.html.twig dosyanda user/themes/bootstrap/templates/ aşağıdaki içeriğe sahip klasör.

{% extends 'partials/base.html.twig' %}
{% block content %}
   {{ page.content }}
{% endblock %}

Yukarıdaki default.html.twig dosya uzatır partials/base.html.twig ve temel şablona kullanmasını söyler {{ page.content }} için content blok.

7. Adım: Tema CSS

İçinde partials/base.html.twig kullanarak özel bir tema css'ine başvurduğumuz dosya assets.add('theme://css/bootstrap-custom.css',100), sitenizde kullanılan herhangi bir özel CSS'yi depolayan.

Şimdi user / themes / bootstrap / css klasöründe aşağıdaki içeriğe sahip bir bootstrap-custom.css dosyası oluşturalım -

/* Restrict the width */
.container {
   width: auto;
   max-width: 960px;
   padding: 0 12px;
}

/* Place footer text center */
.container .text-muted {
   margin: 18px 0;
   text-align: center;
}

/* Sticky footer styles
-------------------------------------------------- */
html {
   position: relative;
   min-height: 80%;
}

body {
   /* Margin bottom by footer height */
   margin-bottom: 60px;
}

.footer {
   position: absolute;
   bottom: 0;
   width: 100%;
   /* Set the fixed height of the footer here */
   height: 50px;
   background-color: #dcdcdc;
}

/* Typography */
/* Tables */
table {
   width: 100%;
   border: 1px solid #f0f0f0;
   margin: 30px 0;
}

th {
   font-weight: bold;
   background: #f9f9f9;
   padding: 5px;
}

td {
   padding: 5px;
   border: 1px solid #f0f0f0;
}

/* Notice Styles */
blockquote {
   padding: 0 0 0 20px !important;
   font-size: 16px;
   color: #666;
}

blockquote > blockquote > blockquote {
   margin: 0;
}

blockquote > blockquote > blockquote p {
   padding: 15px;
   display: block;
   margin-top: 0rem;
   margin-bottom: 0rem;
   border: 1px solid #f0f0f0;
}

blockquote > blockquote > blockquote > p {
   /* Yellow */
   margin-left: -75px;
   color: #8a6d3b;
   background-color: #fcf8e3;
   border-color: #faebcc;
}

blockquote > blockquote > blockquote > blockquote > p {
   /* Red */
   margin-left: -100px;
   color: #a94442;
   background-color: #f2dede;
   border-color: #ebccd1;
}

blockquote > blockquote > blockquote > blockquote > blockquote > p {
   /* Blue */
   margin-left: -125px;
   color: #31708f;
   background-color: #d9edf7;
   border-color: #bce8f1;
}

blockquote > blockquote > blockquote > blockquote > blockquote > blockquote > p {
   /* Green */
   margin-left: -150px;
   color: #3c763d;
   background-color: #dff0d8;
   border-color: #d6e9c6;
}

8. Adım: Test Etme

Varsayılan temanızı yenisiyle değiştirin bootstraptema. Açuser/config/system.yaml dosyalayın ve içeren satırı düzenleyin -

pages:
   themes: antimatter

ve yukarıdaki kodu şu şekilde değiştirin -

pages:
   theme: bootstrap

Şimdi Grav sitenizi yeniden yükleyin ve yeni yüklenen temayı aşağıda gösterildiği gibi göreceksiniz.

Bu bölümde, bunun hakkında çalışalım Twig Filters and Functions. Filtreler, verileri gerekli çıktıyla istediğiniz şekilde biçimlendirmek için de kullanılır. Fonksiyonlar içerik oluşturmak için kullanılır.

Twig şablonları, değerlerle değiştirilen ifadeleri ve değişkenleri içeren metin dosyalarıdır. Twig, üç tür etiket kullanır.

  • Output tags - Aşağıdaki sözdizimi, değerlendirilen ifadelerin sonucunu burada görüntülemek için kullanılır.

{{  Place Your Output Here  }}
  • Action Tags - Buradaki ifadeleri yürütmek için aşağıdaki sözdizimi kullanılır.

{%  executable statements are placed here  %}
  • Comment tags - Aşağıdaki sözdizimi, Twig şablon dosyasına yorum yazmak için kullanılır.

{#  write your comment here  #}

Twig Filtreleri

Twig Filters, |Twig değişkenine filtre uygulamak için karakter ve ardından filtre adı. Argümanlar, Twig fonksiyonlarına benzer şekilde parantez içinde iletilebilir.

Aşağıdaki tablo Grav'da kullanılan Twig Filtrelerini göstermektedir -

Sr.No. Filtre ve Açıklama Misal
1

Absolute URL

Göreli yolu alır ve onu mutlak bir URL'ye dönüştürür.

'<img src="/some/path/img.jpg"/>' |absolute_url

dönüşür -

<img src="http://learn.getGrav.org/some/path/img.jpg" />
2

Camelize

Bir dizeyi CamelCase biçimine dönüştürür.

'contact_us'| camelize

dönüşür -

ContactUs
3

Contains

dizeyi bulursa.

'This is some string' | contains('some')

çıktı -

1
4

Defined

Bazı değişkenlerin tanımlı olup olmadığını kontrol edebilirsiniz. Değişken tanımlanmamışsa, varsayılan bir değer sağlayabilirsiniz.

set header_image_width = 
page.header.header_image_width|defined(900)

Ayarlar header_image_width tanımlanmamışsa 900 değeriyle.

5

Ends-With

Bitiş-İle filtresini kullanarak bir dizenin belirli bir dizeyle bitip bitmediğini belirleyebilirsiniz.

'this is an example for ends-with filter' | ends_with('filter')

olarak görüntülenir -

True
6

FieldName

Alan adını, noktayı dizi gösterimine dönüştürerek filtreler.

'field.name'|fieldName

olarak görüntülenir -

field[name]
7

Humanize

Bir dizeyi okunabilir biçime dönüştürmek için kullanılır.

'some_text_to_read'|humanize

olarak görüntülenir -

Some text to read
8

Ksort

Key kullanarak bir dizi haritasını sıralar.

{% set ritems = {'orange':1, 'apple':2, 'peach':3}|ksort %}
{% for key, value in ritems %}{{ key }}:{{ value }}, {% endfor %}

olarak görüntülenir -

apple:2, orange:1, peach:3,
9

Left Trim

Bir dizenin başındaki beyaz boşlukları kaldırmak için kullanılır ve dizenin sol tarafından verilen eşleşen karakteri kaldırır.

'/strip/leading/slash/'|ltrim('/')

olarak görüntülenir -

strip/leading/slash/
10

Markdown

Grav'ın markdown ayrıştırıcısını kullanarak markdown içeren dizeyi HTML'ye dönüştürmek için kullanılır.

'## some text with markdown'|markdown

olarak görüntülenir -

some text with markdown

11

MD5

Dize için md5 hash değeri bu filtre kullanılarak oluşturulabilir.

'something'|md5

olarak görüntülenir -

437b930db84b8079c2dd804a71936b5f
12

Monthize

Monthize filtresi kullanarak, bir tamsayı gün sayısını ay sayısına dönüştürebiliriz.

'61'|monthize

olarak görüntülenir -

2
13

Nice Time

Nice Time filtresini kullanarak, insan tarafından okunabilir güzel zaman biçiminde çıktı olarak bir tarih alabiliriz.

page.date|nicetime(false)

olarak görüntülenir -

3 hrs ago
14

Ordinalize

Sıra (1 gibi st , 2 nci , 3 üncü ) Ordinalize filtresini kullanarak tamsayılar için verilebilir.

'78'| ordinalize

olarak görüntülenir -

78th
15

Pluralize

Bir dizge, Çoğullaştır filtresi kullanılarak çoğul İngilizce biçimine dönüştürülebilir.

'child'|pluralize

olarak görüntülenir -

children
16

Randomize

Bu filtre, sağlanan listenin rastgele seçilmesine yardımcı olur. Parametre herhangi bir değer içeriyorsa, bu değerler rasgele dağıtılmadan atlanır.

{% set ritems = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten']|randomize(3) %}
{% for ritem in ritems %}{{ ritem }}, {% endfor %}

olarak görüntülenir -

one, two, three, eight, six, five, nine, seven, ten, four,
17

Right Trim

Beyaz boşlukları ve eşleşen karakteri dizenin sağ tarafından kaldırması dışında sol kırpmaya oldukça benzer.

'/strip/leading/slash/'|rtrim('/')

olarak görüntülenir -

/strip/leading/slash
18

Singularize

Bir dizge, Tekil filtre kullanılarak İngilizce tekil sürüme dönüştürülebilir.

'vehicles'|singularize

olarak görüntülenir -

vehicle
19

Safe Email

Güvenli E-posta filtresi, bir e-posta adresini ASCII karakterlerine dönüştürmek için kullanılır, böylece bir e-postanın spam gönderilmesini zorlaştırır.

"[email protected]"|safe_email

çıktı -

[email protected]
20

SortByKey

Anahtarları kullanarak dizi haritasını sıralamak için kullanılır.

{% set people = [{'email':'[email protected]', 'id':3}, {'email':'[email protected]', 'id':1}, {'email':'[email protected]', 'id':7}]|sort_by_key('id') %}
{% for person in people %}{{ person.email }}:{{ person.id }}, {% endfor %}

görüntülenir -

[email protected]:1, [email protected]:3, [email protected]:7,
21

Starts-With

Bir dizenin belirli bir dizeyle başlayıp başlamadığını Başlayanlar-İle filtresini kullanarak belirleyebilirsiniz.

'this is an example for starts-with filter' |starts_with('this')

çıktı -

true
22

Translate

daha detaylı bilgi için.

MY_LANGUAGE_KEY_STRING

görüntülenir -

'Some text in English'
23

Translate Admin

Bir dizeyi, içinde ayarlanmış olan geçerli dile çevirir. user.yaml dosya.

24

Titleize

Bir dize, Titleize kullanılarak Title Case formatına dönüştürülür.

'welcome page'|titleize

olarak görüntülenir -

Welcome Page
25

UnderScoreize

UnderScoreize filtresini kullanarak biçimlendirin.

'ContactUs'|underscorize

dönüştürülür -

contact_us
26

Truncate a string

Bir dizeyi kesmek veya dizeyi kısaltmak için Kes'i kullanabilirsiniz, karakter sayısını belirtmelisiniz.

'one sentence. two sentences'|truncate(5)

kısalır -

one s...

Kullanabilirsiniz true dizeyi verilen karakter sayısından sonra en yakın cümle sonuna kesmek istemiyorsanız parametre olarak.

'one sentence. two sentences'|truncate(5, true)

kısalır -

one sentence
Ayrıca HTML metnini de çıkarabilirsin, ancak kullanmalısın striptags önce filtrele truncate filtre.
'<p>one <strong>sentence<strong>. two sentences</p>'|striptags|truncate(5)

olarak görüntülenir -

one s

Twig İşlevleri

Twig Fonksiyonları doğrudan parametre geçilerek çağrılır. Aşağıdaki tablo fonksiyonları listeler -

Sr.No. İşlev ve Açıklama Misal
1

Array

Bu işlev diziye bir değer atar.

array(value)
2

Authorize

Bu işlev, kimliği doğrulanmış bir kullanıcının bir kaynağı görme yetkisine sahip olmasını sağlar ve izin dizesini veya izin dizeleri dizisini kabul eder.

authorize(['admin.statistics', 'admin.super'])
3

Dump

Geçerli bir dal değişkeni kabul eder ve bunu Grav hata ayıklayıcı paneline döker. Ancak, hata ayıklayıcı, ileti sekmesi değerlerini görmek için etkinleştirilmelidir.

dump(page.header)
4

Debug

Bu, dump () işleviyle aynı şekilde çalışır.

5

Gist

Bu işlev, Github Gist kimliğine dayalı olarak Gist yerleştirme kodunu oluşturur.

6

Random String Generation

Bu işlev, belirtilen sayıda karakterle rastgele bir dizge oluşturacaktır. Bu dizeler benzersiz kimlik veya anahtar olarak kullanılabilir.

generate_random_string(10)
7

Repeat

Bu işlev dizeyi belirli bir süre boyunca tekrarlayacaktır.

repeat('Grav ', 10) will repeat Grav 10 times.
8

String

Belirtilen karakter uzunluğunda rastgele bir dize oluşturur.

ta (23)
9

Translate Array

İle bağlantılı bir işlevdir |ta filtre.

10

Url

Bu filtre bir URL oluşturur ve ayrıca PHP URL akışlarını geçerli HTML kaynaklarına dönüştürür. URL çözülemezse, varsayılan bir değer geçilebilir.

url('theme://images/logo.png') | default('http://www.placehold.it/150x100/f4f4f4')
11

Translate

Çevir filtresini kullanarak bir dize, |t filtre.

t('SITE_NAME')

tercüme edildi -

Site Name

Bu bölümde anlayalım Theme VariablesGrav. Temanız tasarlanırken nesnelere ve değişkenlere twig şablonlarından erişilir ve bu nesneler ve değişkenler Twig Templating Framework tarafından okunur ve manipüle edilir.

Çekirdek Nesneler

Twig şablonunda birçok core objects; her nesnenin bir dizi variables ve functions.

Aşağıdaki tablo, kısa açıklamalı değişkenleri göstermektedir.

Sr.No. Değişken ve Açıklama
1

{{ base_dir }}

Bu değişkeni kullanarak Grav kurulumlarının temel dosya dizinini alabiliriz.

2

{{ base_url }}

Grav sitesinin temel url'sine bu değişken kullanılarak erişilebilir.

3

{{ base_url_relative }}

Temel url'nin göreli yolunu Grav sitesine döndürür.

4

{{ base_url_absolute }}

Temel url'nin mutlak yolunu Grav sitesine döndürür.

5

{{ theme_dir }}

Mevcut temanın dosya dizini klasörünü döndürmek için kullanılır.

6

{{ theme_url }}

Mevcut temanın göreli URL'sini döndürmek için kullanılır.

yapılandırma nesnesi

İçinde configuration.yaml dosyasında, yapılandırma nesnesi herhangi bir Grav yapılandırma ayarına erişecek şekilde ayarlanır.

{{ config.pages.theme }}

Mevcut yapılandırılmış temayı döndürür.

site nesnesi

Bir takma ad sağlar config.site nesnede ayarlanan konfigürasyonları temsil eden site.yaml dosya.

stil sayfaları nesnesi

Bu nesneler, CSS stil sayfası varlıklarının depolanması için bir dizi sağlar; bu, şablonlara CSS eklemek için döngülenebilir.

komut dosyaları nesnesi

Bu nesneler, üzerinde döngü oluşturulmuş ve şablonlara JavaScripts eklenmiş JavaScript varlıklarından oluşan bir dizi sağlar.

sayfa nesnesi

Grav yapısı şu şekilde tanımlandığından pages/ klasör, page objecther sayfanın temsil edilmesinden sorumludur. page object şu anda üzerinde çalıştığınız sayfayla ilgili tüm bilgileri içerir.

Aşağıdaki tablo, sayfa nesnesinin yöntemlerini göstermektedir.

Sr.No. Yöntem ve Açıklama Misal
1

summary([size])

Parametre olarak sağlanan belirtilen boyutta sayfa içeriğinin bir özetini verir.

Boyut belirtilmezse değer şuradan alınır: summary.size değişken system/config/site.yaml dosya.

Ayrıca sınırlandırabilirsiniz ===içeriğinizde. Sınırlayıcıdan önceki içerik özet için kullanılacaktır.

{{ page.summary }}

Veya

{{ page.summary(80) }}
2

content()

Sayfanın tüm HTML içeriğini almak için kullanılır.

{{ page.content }}
3

headers()

Sayfanın YAML ön kısmında tanımlanan sayfa başlıklarını döndürür.

title: About Us
author: Johnson
Yukarıdaki başlıklara şu şekilde erişilebilir:
The author of this page is:  {{ page.header.author }}
4

media()

Görüntüler, videolar ve diğer dosyalar gibi tüm medya dosyalarına erişmek için kullanılır. Bir sayfayla ilişkili tüm medyayı içeren bir dizi döndürür.

{% set first_image = page.media|first %}
{% set my_pdf = page.media['myfile.pdf'] %}
{% for image in page.media.images  %}
   {{ image.html }}
{% endfor %}
5

title()

Sayfa için YAML başlıklarında tanımlanan sayfanın başlığını döndürecek şekilde ayarlanmıştır.

title: My Page
6

menu()

Değeri menusayfanın YAML başlıklarında belirtilen değişken döndürülür. Eğertitle değişken ayarlanmazsa, varsayılan olarak title.

title: My Blog
menu: my blog page
7

visible()

Sayfanın görünürlüğünü ayarlamak için kullanılır. Genellikle sayısal değerin ardından nokta (ör. 01. klasör adı) içeren sayfalar menüde görüntülenir ve sayısal değer içermeyen klasör adı (örn. Klasör adı) görünmez. Bunu sayfa başlığında geçersiz kılabiliriz.

title: About Us
visible: true
8

routable()

Bunu kullanarak bir sayfanın routable veya not routableTarayıcınızı sayfaya işaret ederken içeriği geri alıp alamayacağınız anlamına gelir. Yönlendirilemeyen sayfalar eklentilerde, şablonlarda vb. Kullanılabilir ve bu sayfalara doğrudan erişilemez. Bu, sayfa başlıklarında belirlenir.

title: My Page
routable: true
9

slug()

Bu değişkeni kullanarak, sayfanın URL'sinde görüntülendiği gibi doğrudan adı alabiliriz.

my-page
10

url([include_host = false])

Sayfanın URL'sini döndürmek için kullanılır

{{ page.url }}  { # could return /myfolder/mypage #}

Veya

{{ page.url(true) }}  {# could return http: //mysite.com/ myfolder/mypage #}
11

route()

Sayfanın dahili yönlendirmesini döndürmek için kullanılır.

12

home()

Bu değişkeni kullanarak sayfanın şu şekilde yapılandırılıp yapılandırılmadığını belirleyebilirsiniz: homesayfa ya da değil. Bu, bir sayfa ana sayfa olarak yapılandırıldığında doğru ve yapılandırılmadığında yanlış döndürür. Bu ayarı şurada bulabilirsiniz:system.yaml dosya.

13

root()

Geçerli sayfanın hiyerarşinin kök sayfası olup olmadığını belirler. Dönertrue bir kök sayfaysa veya false kök sayfa değilse.

14

active()

Bu değişkeni kullanarak tarayıcının mevcut sayfaya erişip erişmediğini belirleyebilirsiniz. Dönertrue tarayıcı bu sayfaya erişiyorsa veya false değilse.

15

modular()

Bu değişkeni kullanarak bu sayfanın modüler olup olmadığını belirleyebiliriz. Bu modüler bir sayfaysa geri dönertrue ve false değilse.

16

activeChild()

Bu değişken, bu URI'nin URL'sinin etkin sayfanın URL'sine sahip olup olmadığını belirleyebilir; veya basit bir deyişle, bu sayfanın mevcut URL’deki URL’si. Bu, gezinmeler üzerinde çalışırken ve sayfaların aynı ana sayfa üzerinde yinelenip yinelenmediğini bilmek istediğinizde çok kullanışlıdır.

17

find(url)

Yol URL'si tarafından belirtildiği gibi, sayfa nesnesi bu değişken tarafından döndürülür.

{% include 'modular/author-detail.html.twig' with {'page': page.find('/authors/ john-bloggs')} %}
18

collection()

Bu değişken, koleksiyon sayfa başlıkları tarafından belirlenen bir bağlam için sayfa grubunu döndürmek için kullanılır.

{% for child in page.collection %}
   {% include 'partials /blog_item.html.twig' with {'page':child, 'truncate':true} %}
{% endfor %}
19

isFirst()

Mevcut sayfa, kardeş sayfasının ilkiyse, o zaman geri döner true yoksa geri döner false.

20

isLast()

Mevcut sayfa, kardeş sayfasının sonuncusuysa, o zaman geri döner true yoksa geri döner false.

21

nextSibling()

Geçerli konuma referansla, diziden sonraki kardeş sayfayı döndürür.

22

prevSibling()

Geçerli konuma referansla, diziden önceki kardeş sayfayı döndürür.

23

children()

Sayfaların içerik yapısında tanımlandığı gibi, alt sayfalar dizisi bu değişken tarafından döndürülür.

24

orderBy()

Sıralanan çocuk sipariş türü bu yöntemle döndürülür. Dahil edilebilecek değerler şunlardırdefault, title, date ve folder ve bu değerler sayfa başlıklarında yapılandırılır.

25

orderDir()

Sıralanan alt sayfaların sıra yönü bu yöntemle döndürülür. Ve değerler şunlar olabilir:asc(artan) veya desc(descending). Genellikle bu değerler sayfa başlıklarında yapılandırılır.

26

orderManual()

Bu yöntem, manuel sayfa sıralaması içeren bir dizi döndürür ve bu sıralama, sayfanın tüm alt öğeleri için olacaktır. Bu değer tipik olarak sayfa başlıklarında ayarlanacaktır.

27

maxCount()

Bu değişken, en fazla kaç alt sayfanın döndürülmesine izin verildiğini söyler. Değer genellikle sayfa başlıklarında belirtilir.

28

children.count()

Bu değişken, bir sayfa için kaç tane alt sayfanın olduğunu döndürür.

29

children.current()

Bu değişken mevcut alt öğeyi döndürecektir.

30

children.next()

Bu, bir alt sayfa dizisinden sonraki alt öğeyi döndürür.

31

children.prev()

Bu, bir dizi alt sayfadan önceki alt öğeyi döndürür.

32

children.nth(position)

Bu, çocuk dizisindeki çocuğun konumunu döndürecektir.

33

parent()

İç içe geçmiş bir ağaç yapısında üst sayfaya geri gitmek istediğinizde, bu değişkeni kullanabilirsiniz. Geçerli sayfanın üst sayfa nesnesini döndürecektir.

34

isPage()

Bu değişkeni kullanarak, bu sayfanın gerçek bir .md dosya veya sadece yönlendirme için bir klasör.

35

isDir()

Bu değişkeni kullanarak, geçerli sayfanın yalnızca yönlendirme için bir klasör olup olmadığını belirleyebilirsiniz. Dönertrue veya false buna göre.

36

id()

Bu, sayfa için benzersiz bir kimlik döndürecektir.

37

modified()

Sayfanın en son değiştirildiği zamanın zaman damgasını döndürür.

38

date()

Sayfa için tarih zaman damgası bu yöntemle döndürülür. Genellikle bu, sayfanın veya gönderinin tarihini temsil eden başlıklarda yapılandırılır. Varsayılan olarak hiçbir değer sağlanmazsa, değiştirilen zaman damgası kullanılır.

39

filePath()

Bunu kullanarak, sayfanın tam dosya yolunu alabilirsiniz.

/Users/yourname/sites/ Grav/user/pages/ 01.home/default.md
40

filePathClean()

Bu, göreceli yolu döndürecektir.

user/pages/ 01.home/default.md
41

path()

Bu, geçerli sayfanın bulunduğu dizine tam bir yol döndürecektir.

/Users/yourname /sites/ Grav/user/pages /01.home
42

folder()

Bu, sayfanın klasör adını döndürecektir.

43

taxonomy()

Bu, sayfayla bağlantılı bir sınıflandırma dizisi döndürecektir.

sayfalar nesnesi

Pages nesnesi, sayfa nesnelerinin yuvalanmış bir ağacı olarak temsil edilir. Bu iç içe geçmiş ağaç, oluştururken çok kullanışlıdırnavigations, sitemap veya finding a particular page.

çocuk yöntemi

Bu, alt sayfalardan oluşan bir dizi sayfa nesnesi döndürür. Ağaç benzeri yapıya sahip sayfa nesnesi, klasördeki her sayfada yinelenebilir.

Menü için en üst düzey sayfalara ulaşmak için aşağıdaki kodu kullanın.

<ul class = "navigation">
   {% for page in pages.children %}
      {% if page.visible %}
         <li><a href = "{{ page.url }}">{{ page.menu }}</a></li>
      {% endif %}
   {% endfor %}
</ul>

uri nesnesi

Geçerli URI'nin bir kısmına, Uri nesnesinin çeşitli yöntemleri kullanılarak erişilebilir.

http://mysite.com/Grav/section/category/page.json/param1:foo/param2:bar/?query1 = baz&query2 = qux:

Aşağıdaki tablo, Uri nesnesinin yöntemlerini gösterir.

Sr.No. Yöntem ve Açıklama Misal
1

path()

Mevcut url'nin bir kısmına bu yöntem kullanılarak erişilebilir.

uri.path = /section/category/page
2

paths()

Yol öğeleri dizisi bu yöntem kullanılarak döndürülür.

uri.paths = [section, category, page])
3

route([absolute = false][, domain = false])

Bu yöntem, rotayı mutlak veya göreli URL ile döndürür.

uri.route(true) = http://mysite.com/Grav/ section/category/page

Veya,

uri.route() = /section/category/page)
4

params()

Bu, URL'deki parametre bölümünü döndürür.

uri.params = /param1:foo/param2:bar
5

param(id)

Bu, parametrenin değerini döndürür.

uri.param('param1') = foo
6

query()

URL'nin sorgu kısmına bu yöntem kullanılarak erişilebilir.

uri.query = query1=bar&query2=qux
7

query(id)

Bunu kullanarak belirli sorgu öğesine erişebilirsiniz.

uri.query('query1') = bar
8

url([include_host = true])

Bu, ana bilgisayar içerebilen veya içermeyen tam URL'yi döndürür.

uri.url(false) = Grav/section/ category/page/param:foo?query = bar
9

extension()

Bu, uzantıyı döndürür veya sağlanmazsa, html'yi döndürür.

uri.extension = json)
10

host()

Bu, URL'nin ana bilgisayarını döndürür.

uri.host = mysite.com
11

base()

Bu, URL'nin temel kısmını döndürür.

uri.base = http://mysite.com
12

rootUrl([include_host = true])

Bu Grav örneğinin kök URL'sini döndürecektir.

uri.rootUrl() = http://mysite.com/Grav
13

referrer()

Sayfanın yönlendiren bilgileri bu yöntemle döndürülür.

başlık nesnesi

İçin bir alternatiftir page.header()orijinal sayfanın. Alt sayfalarda döngü yaparken orijinal sayfa üstbilgisini kullanmak daha uygundur.

içerik nesnesi

İçin bir alternatiftir page.content() orijinal sayfanın.

sınıflandırma nesnesi

Sitenin tüm sınıflandırma bilgileri global taksonomi nesnesinde yer almaktadır.

tarayıcı nesnesi

Grav, yerleşik desteği kullanarak kullanıcının platformunu, tarayıcısını ve sürümünü programlı olarak belirler.

{{ browser.platform}}   # windows
{{ browser.browser}}    # chrome
{{ browser.version}}    # 24

Özel Değişkenler Ekleme

Özel değişkenler birkaç şekilde eklenir. Site çapında değişken kullanıyorsanız,user/config/site.yaml dosya ve aşağıda gösterildiği gibi erişebilirsiniz.

{{ site.my_variable }}

Değişken yalnızca belirli bir sayfa içinse, onu YAML ön maddesine ekleyebilir ve page.header nesne.

For example -

title: My Page
author: John

Yazar adına şu şekilde erişilebilir -

The author of this page is: {{ page.header.author }}

Özel Nesneler Ekleme

Eklentileri kullanarak Twig nesnesine özel nesneler ekleyebilirsiniz. Bu ileri düzey bir konudur ve eklentiler bölümünde daha fazla bilgi göreceğiz .

Bu bölümde şunun hakkında çalışalım Asset Manager. Asset Manager, benzer varlıkları eklemek ve yönetmek için arayüzü birleştirmek için Grav 0.9.0'da tanıtıldı.JavaScript ve CSS. Bu varlıkları temalardan ve eklentilerden eklemek, aşağıdaki gibi gelişmiş yetenekler sağlayacaktır:ordering ve Asset Pipeline. Asset Pipeline varlıkları küçültmek ve sıkıştırmak için kullanılır, böylece tarayıcının gereksinimlerini azaltır ve ayrıca varlıkların boyutunu azaltır.

Asset Manager bir sınıftır ve Grav'da eklenti olay kancaları aracılığıyla kullanılabilir. Twig çağrılarını kullanarak Asset Manager sınıfını doğrudan temalarda da kullanabilirsiniz.

Yapılandırma

Varlık Yöneticisi, bir dizi yapılandırma seçeneğinden oluşur. system.yamldosya varsayılan değerleri içerir; bu değerleri geçersiz kılabilirsiniz.user/config/system.yaml dosya.

assets:                     # Configuration for Assets Manager (JS, CSS)
   css_pipeline: false      # The CSS pipeline is the unification of multiple CSS resources into one file
   css_minify: true         # Minify the CSS during pipelining
   css_rewrite: true        # Rewrite any CSS relative URLs during pipelining
   js_pipeline: false       # The JS pipeline is the unification of multiple JS resources into one file
   js_minify: true          # Minify the JS during pipelining

Temalardaki Varlıklar

Grav'ı yüklediğinizde antimadde teması varsayılan tema olarak gelir. CSS dosyalarının nasıl ekleneceğine dair bir örnek gösterir.base.html.twig Bu temada bulunan dosya.

{% block stylesheets %}
   {% do assets.addCss('theme://css/pure-0.5.0/grids-min.css', 103) %}
   {% do assets.addCss('theme://css-compiled/nucleus.css',102) %}
   {% do assets.addCss('theme://css-compiled/template.css',101) %}
   {% do assets.addCss('theme://css/custom.css',100) %}
   {% do assets.addCss('theme://css/font-awesome.min.css',100) %}
   {% do assets.addCss('theme://css/slidebars.min.css') %}

   {% if browser.getBrowser == 'msie' and browser.getVersion == 10 %}
      {% do assets.addCss('theme://css/nucleus-ie10.css') %}
   {% endif %}
   {% if browser.getBrowser == 'msie' and browser.getVersion >= 8 and browser.getVersion <= 9 %}
      {% do assets.addCss('theme://css/nucleus-ie9.css') %}
      {% do assets.addJs('theme://js/html5shiv-printshiv.min.js') %}
   {% endif %}
{% endblock %}
{{ assets.css() }}

Yukarıdaki kod aşağıda kısaca açıklanmıştır.

  • İçinde tanımlanan bölge block twig etiketi, birini genişleten şablonlarda değiştirilebilir veya eklenebilir ve sayısını görebilirsiniz. do assets.addCss() bu bloğun içindeki çağrılar.

  • {% do %} etiketi, Twig'in kendisinde yerleşik olan herhangi bir çıktı olmadan değişkenleri işlemenizi sağlar.

  • CSS varlıkları kullanılarak Varlık Yöneticisine eklenebilir addCss()yöntem. İkinci parametre olarak sayısal bir değer ileterek stil sayfalarının önceliğini ayarlayabilirsiniz. ÇağrıaddCss() yöntemi, HTML etiketlerini CSS öğelerinden oluşturur.

JavaScript varlıkları, CSS varlıkları ile aynı şekilde kullanılır. İçindeki JavaScript varlıklarıblock etiketleri aşağıda gösterildiği gibi daldırın.

{% block javascripts %}
   {% do assets.addJs('jquery',101) %}
   {% do assets.addJs('theme://js/modernizr.custom.71422.js',100) %}
   {% do assets.addJs('theme://js/antimatter.js') %}
   {% do assets.addJs('theme://js/slidebars.min.js') %}
   {% do assets.addInineJs('alert(\'This is inline!\')') %}
{% endblock %}
{{ assets.js() }}

Varlık Ekleme

Aşağıdaki tablo, farklı ekleme yöntemlerini listeler -

Sr.No. Yöntem ve Açıklama
1

add(asset, [options])

Dosya uzantısına bağlı olarak, addyöntem varlıkla eşleşir. CSS veya JS için doğrudan yöntemlerden birini çağırmak için uygun bir yöntemdir. Kullanabilirsinizoptionsönceliği ayarlamak için. Bir varlığın kombinasyon / küçültme ardışık düzenine dahil edilip edilmeyeceği, ardışık düzen özelliği tarafından kontrol edilir.

2

addCss(asset, [options])

Bu yöntemi kullanarak CSS varlıklarına varlıklar ekleyebilirsiniz. İkinci parametrede belirlenen önceliğe göre, varlık listede sıralanır. Öncelik ayarlanmadıysa, varsayılan olarak 10 ayarlanır. Bir varlığın kombinasyon / küçültme ardışık düzenine dahil edilip edilmeyeceği, ardışık düzen özelliği tarafından kontrol edilir.

3

addDirCss(directory)

Bu yöntemi kullanarak, alfabetik sıraya göre düzenlenecek CSS varlıklarından oluşan bir varlık dizini ekleyebilirsiniz.

4

addInlineCss(css, [options])

Bu yöntemi kullanarak satır içi stil etiketinin içinde bir CSS dizisi sağlayabilirsiniz.

5

addJs(asset, [options])

Bu yöntemi kullanarak, JS varlıklarına varlıklar ekleyebilirsiniz. Öncelik ayarlanmadıysa, varsayılan önceliği 10 olarak ayarlar. Ardışık düzen özniteliği, bir varlığın birleşim / küçültme ardışık düzenine dahil edilip edilmeyeceğini belirler.

6

addInlineJs(javascript, [options])

Bu yöntem, satır içi komut dosyası etiketinin içine bir JS dizesi eklemenize olanak tanır.

7

addDirJs(directory)

Bu yöntemi kullanarak, alfabetik sıraya göre düzenlenecek olan JS varlıklarından oluşan bir varlık dizini ekleyebilirsiniz.

8

registerCollection(name, array)

Bu yöntem, bir adla CSS veya JS varlıklarından oluşan bir diziyi kaydetmenize olanak tanır, böylece daha sonra add()yöntem. Birden fazla tema veya eklenti kullanıyorsanız, bu yöntem çok kullanışlıdır.

Seçenekler

Aşağıda gösterildiği gibi açıklanan varlık dizisini geçirmek için birçok seçenek vardır -

CSS için

  • priority - Bir tamsayı değeri alır ve varsayılan değer 100 olacaktır.

  • pipeline - Bir varlık boru hattına dahil edilmediğinde, şu şekilde ayarlanır: falsedeğer. Ve varsayılan değer şu şekilde ayarlanmıştır:true.

JS için

  • priority - Tamsayı değeri alır ve varsayılan değer 100 olur.

  • pipeline - Bir varlık boru hattına dahil edilmediğinde, falseayarlandı. Ve varsayılan değer şu şekilde ayarlanmıştır:true.

  • loading - Bu seçenek aşağıdaki gibi 3 değeri destekler empty, async ve defer.

  • group- Bir grup için benzersiz ad belirten bir dizeden oluşur. Ve varsayılan değer şu şekilde ayarlanmıştır:true.

Example

{% do assets.addJs('theme://js/example.js', 
{'priority':101, 'pipeline':true, 'loading':'async', 'group':'top'}) %}

Varlıkları Oluşturma

CSS ve JS varlıklarının mevcut durumu aşağıdakiler kullanılarak oluşturulabilir -

css ()

Varlık Yöneticisine eklenen tüm CSS varlıklarına bağlı olarak, css()yöntemi, HTML CSS bağlantı etiketlerinden oluşan bir liste oluşturur. Ardışık düzen özniteliğine bağlı olarak liste, küçültülmüş dosya ve tekil / birleşik varlık içerebilir.

js ()

Varlık Yöneticisine gönderilen tüm JS varlıklarına göre, js()yöntemi, HTML JS bağlantı etiketlerinden oluşan bir liste oluşturur. Ardışık düzen özniteliğine bağlı olarak liste, küçültülmüş dosya ve tekil / birleşik varlık içerebilir.

Adlandırılmış Varlıklar

Grav, bir adla birlikte CSS ve JS varlıklarından oluşan bir koleksiyon kaydetmenize olanak tanır, böylece addvarlıkları kayıtlı adı kullanarak Varlık Yöneticisine. Bu, Grav'da adı verilen bir özellik kullanılarak gerçekleştirilebilir.named assets. Bu özel koleksiyonlar şurada tanımlanır:system.yaml; koleksiyonlar herhangi bir tema veya eklenti tarafından kullanılabilir.

assets:
   collections:
      jquery: system://assets/jquery/jquery-2.1.3.min.js
      bootstrap:
         - https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css
         - https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css
         - https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js

registerCollection() yöntem, aşağıdaki kodla programlı olarak kullanılabilir -

$assets = $this->Grav['assets']; $bootstrapper_bits = [https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css,
      https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css,
      https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js];
   $assets->registerCollection('bootstrap', $bootstrap_bits);
$assets->add('bootstrap', 100);

Gruplanmış Varlıklar

Grav 0.9.43 adında yeni bir özellikle tanıtıldı Grouped Assetsisteğe bağlı seçeneklerden oluşan seçenekler dizisini geçmenizi sağlar groupVarlıklar eklerken. Bu özellik, sayfanın belirli bir bölümünde bazı JS dosyalarına veya satır içi JS'ye ihtiyacınız olduğunda çok kullanışlıdır.

Seçenekler sözdizimini kullanarak, varlığı eklerken aşağıda gösterildiği gibi grubu belirtmeniz gerekir.

{% do assets.addJs('theme://js/example.js', {'priority':102, 'group':'bottom'}) %}

Bir varlık için grup ayarlanmadıysa, o zaman headvarsayılan grup olarak ayarlanmıştır. Bu varlıkların alt grupta görüntülenmesini istiyorsanız, temanıza aşağıdakileri eklemelisiniz.

{{ assets.js('bottom') }}

Statik Varlıklar

Varlık Yöneticisi'ni kullanmadan varlıkları önermek istediğinizde, o zaman url()yardımcı yöntem. Örneğin, temadan bir resme başvurmak istediğinizde, aşağıdaki sözdizimini kullanabilirsiniz.

<img src = "{{ url("theme://" ~ widget.image) }}" alt = "{{ widget.text|e }}" />

url() helper method isteğe bağlı olarak ikinci parametreyi kullanarak URL'nin etki alanını ve şemayı içermesini sağlar. true veya falsedeğerler. Varsayılan olarak değer şu şekilde ayarlanmıştır:false yalnızca göreli URL'yi görüntüleyen.

Example

url("theme://somepath/mycss.css", true)

Bu bölümde, bunun hakkında çalışalım Theme Customization. Temanızı özelleştirmenin birkaç yolu vardır. Grav, temanızı kolayca özelleştirmek için birçok özellik ve birkaç işlev sunar.

Özel CSS

Kendiniz temin edebilirsiniz custom.csstemanızı özelleştirmek için dosya. Antimadde teması,css/custom.css kullanarak dosya Asset Manager. CSS dosyasına herhangi bir referans bulunmazsa,Asset Managerreferansı HTML'ye eklemeyecektir. CSS dosyasını Antimadde'de oluşturmacss/klasörü varsayılan CSS'yi geçersiz kılar. Örneğin -

custom.css

body a {
   color: #FFFF00;
}

Varsayılan bağlantı rengi geçersiz kılınır ve sarıya ayarlanır.

Özel SCSS / LESS

Özel CSS dosyası sağlamanın başka bir yolu da custom.scssdosya. SCSS (Sözdizimsel Müthiş Style Sheets) Eğer operatörler, değişkenler, iç içe yapılar, ithalat, partials kullanımı yoluyla verimli CSS inşa etmek ve karıştırmak-ins sağlayan bir CSS önişlemci olduğunu. Antimadde SCSS kullanılarak yazılmıştır.

SCSS'yi kullanmak için SCSS derleyicisine ihtiyacınız vardır. SCSS derleyicilerini herhangi bir platforma yüklemek için komut satırı araçlarını ve GUI uygulamalarını kullanabilirsiniz. Antimadde,scss/ tüm yerleştirmek için klasör .scssDosyalar. Derlenen dosyalar şurada saklanır:css-compiled/ Klasör.

SCSS dosyalar aşağıdaki komut kullanılarak yapılabilecek herhangi bir güncelleme için izlenmelidir -

scss --watch scss:css-compiled

Yukarıdaki komut, SCSS derleyicisine scss adlı dizini ve her ne zaman css-compiled klasör güncellenir, SCSS derleyicisinin derlemesi gerekir.

Özel SCSS kodunuzu şurada tutabilirsiniz: scss/template/_custom.scssdosya. Kodunuzu bu dosyada tutmanın birçok avantajı vardır.

  • SCSS dosyalarından ve diğer CSS dosyalarından yapılan herhangi bir güncelleme şu şekilde derlenir: css-compiled/template.css dosya

  • Temanızda kullanılan herhangi bir SCSS'ye erişebilir ve bunun için mevcut tüm değişkenleri ve karışımları kullanabilirsiniz.

  • Daha kolay geliştirme için, standart SCSS'nin tüm özelliklerine ve işlevlerine erişim sağlanır.

Bir örnek _custom.scss dosya aşağıda gösterilmektedir -

body {
   a {
      color: darken($core-accent, 20%);
   }
}

Temanızı yükselttiğinizde, tüm özel css geçersiz kılınacaktır. Bu, bir temayı özelleştirmek için bu yolu seçmenin en büyük dezavantajıdır. Bu, tema kalıtımı kullanılarak çözülebilir.

Tema Kalıtımı

Theme Inheritancebir temayı değiştirmenin veya özelleştirmenin en iyi yoludur ve birkaç kurulumla gerçekleştirilebilir. Temel fikir, temanın miras aldığınız temel tema olarak tanımlanması ve yalnızca bazı bitlerin değiştirilebilmesi ve geri kalan şeylerin temel tema tarafından ele alınmasıdır. Tema kalıtımını kullanmanın avantajı, özelleştirilmiş miras alınan temanın, temel tema her güncellendiğinde doğrudan etkilenmemesidir. Bunu başarmak için aşağıdaki adımları izlemeniz gerekir.

  • Yeni temanızı saklamak için adlı yeni bir klasör oluşturun. mytheme/ içeride /user/themes/ Klasör.

  • Ardından, adında yeni bir tema YAML dosyası oluşturmanız gerekir. mytheme.yaml yeni oluşturulan altında /user/themes/mytheme/ aşağıdaki içeriğe sahip klasör.

streams:
   schemes:
      theme:
         type: ReadOnlyStream
         prefixes:
            '':
               - user/themes/mytheme
               - user/themes/antimatter
  • Adlı bir YAML dosyası oluşturun blueprints.yaml altında /user/themes/mytheme/ aşağıdaki içeriğe sahip klasör.

name: MyTheme
version: 1.0.0
description: "Extending Antimatter"
icon: crosshairs
author:
   name: Team Grav
   email: [email protected]
   url: http://getgrav.org

Şimdi bir temanın nasıl tanımlanacağını anlayacağız blueprints.yamltemel unsurlardan oluşur. Form işlevlerinizi kontrol etmek için form tanımları için daha fazla ayrıntı sağlanabilir. blueprints.yaml dosya bununla ilgili daha fazla ayrıntı için incelenebilir.

  • Senin içinde user/config/system.yaml dosya düzenleme pages: theme: Varsayılan temanızı aşağıda gösterildiği gibi yeni temayla değiştirme seçeneği.

pages:
   theme: mytheme

Şimdi yeni tema oluşturuldu ve Antimadde bu yeni için temel tema olacak mythemetema. Belirli SCSS'yi değiştirmek istiyorsanız, SCSS derleyicisini sizinmytheme tema ilk ve ikinci olarak Antimadde teması.

Aşağıdaki ayarları kullanır -

  • İlk önce template.scss yerleştirilen dosya antimatter/scss/ klasörüne yapıştırın ve mytheme/scss/Klasör. Bu dosya tüm@import gibi çeşitli dosyalar için çağrılar template/_custom.scss ve alt dosyalar.

  • load-path noktalar antimatter/scss/çok sayıda SCSS dosyası içeren klasör. SCSS derleyicisini çalıştırmak için şunları sağlamanız gerekir:load-path to it as shown below.

scss --load-path ../antimatter/scss --watch scss:css-compiled
  • Şimdi adlı bir dosya oluşturun _custom.scss altında mytheme/scss/template/. Bu dosya tüm değişikliklerinizi içerecektir.

Özel SCSS dosyası değiştirildiğinde, tüm SCSS dosyaları otomatik olarak yeniden derlenecektir. template.css altında bulunan mytheme/css-compiled/ klasör ve daha sonra Grav bunu doğru bir şekilde referans verir.

Bu bölümde, bir eklentinin Grav'da ek bir işlevsellik olarak nasıl çalıştığını anlayacağız. Eklenti, başlangıçta Grav'ın temel işlevi tarafından tamamlanmayan ek işlevsellik sağlayan bir yazılım parçasıdır.

Sitenin işlevselliğini genişletmek için Grav Plugin yüklenebilir. İşinizi kolaylaştırmak için eklentiler kullanılır. Dependency Injection ContainerGrav'daki temel nesnelere erişmeye yardımcı olur. Tüm yaşam döngüsü boyuncaGrav's event hooks, Grav'ı ihtiyacımıza göre manipüle edebiliriz ve ayrıca Grav'ın bildiği her şeye erişebiliriz. Grav olay kancalarını Bölüm Grav - Event Hooks'ta detaylı olarak inceleyeceğiz .

Dependency Injection bileşenlerin içinde kodlamak yerine bileşenlerin bağımlılıklarının verildiği bir yazılım tasarım modelidir.

Grav için blog arşivini, site haritasını, arama motorunu, formu, hafif kaydırıcıyı ve daha fazlasını görüntülemek için kullanılan birçok ücretsiz eklenti vardır. Şunlar arasından eklentileri indirebilirsiniz burada . Eklenti klasöründe, eklentileri benzersiz bir adla saklayabilirsiniz; isim eklentinin işleviyle ilgili olmalı ve herhangi bir büyük harf, alt çizgi veya boşluk içermemelidir. Eklentinin nasıl kullanılacağını Bölüm Grav - Eklenti Öğreticilerinde inceleyeceğiz .

Güçlü

Eklentilerin yazılması kolay, esnek ve güçlüdür. 46 eklenti var ve aşağıdakileri içeren özelliklere sahip:displaying a sitemap, provides breadcrumbs, display blog archives vb.

Essentials

Grav sisteminize kurulduğunda, içinde iki eklenti olduğunu görebilirsiniz. <your_folder_name>/user/plugins Klasör.

  • Hata eklentisi

  • Eklenti sorunu

Error Plugin - Bunu görüntülemek için kullanılır. HTTP hatalar yani 404 Page Not Found verilen URI için herhangi bir istek sayfası olmadığında.

Problem Plugin- İzinler, barındırma ayarları ve eksik klasörlerle ilgili sorunları tespit etmek için kullanılır. Bu tür sorunları tanımlamak için yeni Grav kurduğunuzda kullanışlıdır.

Bu bölümde, bir eklentinin nasıl kurulup yapılandırılabileceğini inceleyeceğiz. Ek olarak, bir eklentinin yapısını ve rastgele bir sayfanın nasıl görüntüleneceğini de anlayacağız. Eklenti, başlangıçta Grav'ın temel işlevi tarafından tamamlanmayan ek işlevsellik sağlayan bir yazılım parçasıdır.

Bu yazıda, rastgele eklentiyi kullanarak rastgele bir sayfa görüntüleyeceğiz. Bu eklentiyi kullanmadan önce, rastgele eklentinin bazı önemli noktalarını göreceğiz.

  • URI'yi kullanarak rastgele sayfayı görüntülemek için bu eklentiyi kullanabilirsiniz. /random.

  • Sayfalarda belirtilen sınıflandırmadan yararlanmak için filtre oluşturun. Olarak oluşturabilirsinizcategory : blog.

  • Filtre seçeneğini kullanarak rastgele bir sayfa görüntüleyebilirsiniz; bu, Grav'a rastgele sayfada görüntülenecek içeriğin aynısını kullanmasını bildirir.

Kurulum Eklentisi

Eklentiyi kullanmadan önce eklenti için temel bir kurulum oluşturmak üzere bu adımları izleyin.

  • Adlı klasör oluştur random altında user/plugins Klasör.

  • Altında user/plugins/random klasör, yani iki dosya oluşturun -

    • random.php eklenti kodu için kullanılır

    • random.yaml konfigürasyon için kullanılır

Eklenti Yapılandırması

Rastgele eklentiyi kullanmak için bazı yapılandırma seçeneklerine ihtiyacımız var. Aşağıdaki satırları aşağıdaki satırların altına yazacağız:random.yaml dosya.

enabled:true
route:/random
filters:
   category:blog

Rastgele, tanımladığınız bir rota oluşturur. Sınıflandırma filtrelerine göre rastgele bir öğe seçer. Filtrenin varsayılan değeri'category: blog' rastgele seçim için kullanılır.

Eklenti Yapısı

Eklenti yapısında aşağıdaki kod kullanılabilir.

<?php
   namespace Grav\Plugin;
   use Grav\Common\Page\Collection;
   use Grav\Common\Plugin;
   use Grav\Common\Uri;
   use Grav\Common\Taxonomy;
   
   class RandomPlugin extends Plugin {
   }
?>

Eklentide bir grup sınıf kullanıyoruz. usedaha okunabilir kılan ve yerden tasarruf sağlayan ifadeler. namespace Grav\PluginPHP dosyasının en üstüne yazılmalıdır. Eklenti adı yazılmalıdırtitlecase ve kullanılarak genişletilmelidir Plugin.

İşleve abone olabilirsiniz getSubscribedEvents() için onPluginsInitializedEtkinlik; bu, eklentinin hangi olaylara abone olduğunu belirler. Bunun gibi, diğer etkinliklere abone olmak için etkinliği kullanabilirsiniz.

public static function getSubscribedEvents() {
   return [
      'onPluginsInitialized' => ['onPluginsInitialized', 0],
   ];
}

Şimdi kullanalım onPluginInitialized altında olay RandomPlugin içinde yapılandırılan sayfayı yönlendirmek için kullanılan sınıf random.yaml dosya.

Yöntem onPluginInitialized() aşağıdaki kodu içerir -

public function onPluginsInitialized() {
   $uri = $this->grav['uri'];
   $route = $this->config->get('plugins.random.route');
   
   if ($route && $route == $uri->path()) { $this->enable([
         'onPageInitialized' => ['onPageInitialized', 0]
      ]);
   }
}

Uri nesne rota hakkında güncel uri, bilgileri içerir. Yapılandırma amacı da, rastgele eklenti yönlendirme ve yol nesnesi içinde depolamak için yapılandırma değerini belirtir.

Şimdi yapılandırılmış yolu, eklentiyi dinlemesi için bilgilendiren mevcut URI yolu ile karşılaştıracağız. onPageInitialized Etkinlik.

Rastgele Sayfa Görüntüleme

Aşağıdaki yöntemle kodu kullanarak rastgele sayfayı görüntüleyebilirsiniz -

public function onPageInitialized() {
   $taxonomy_map = $this->grav['taxonomy'];
   $filters = (array) $this->config->get('plugins.random.filters');
   $operator = $this->config->get('plugins.random.filter_combinator', 'and');
   
   if (count($filters)) { $collection = new Collection();
      $collection->append($taxonomy_map->findTaxonomy($filters, $operator)->toArray());
      
      if (count($collection)) { unset($this->grav['page']);
         $this->grav['page'] = $collection->random()->current();
      }
   }
}

Kodda gösterildiği gibi,

  • Taksonomi nesnesini değişkene atayın $taxonomy_map.

  • Eklenti yapılandırmasından yapılandırılmış sınıflandırmayı kullanan filtre dizisini alın confignesne. Öğeyi şu şekilde kullanıyoruzcategory : blog.

  • Kullanıyoruz collection rastgele sayfayı $collection. Filtreyle eşleşen sayfayı ekle$collection değişken.

  • Geçerli sayfa nesnesinin ayarını kaldırın ve geçerli sayfayı koleksiyonda rastgele sayfa olarak görüntülenecek şekilde ayarlayın.

Son olarak, aşağıda gösterildiği gibi rastgele bir sayfa görüntülemek için eklentinin tam kodunu göreceğiz -

<?php
namespace Grav\Plugin;
use Grav\Common\Page\Collection;
use Grav\Common\Plugin;
use Grav\Common\Uri;
use Grav\Common\Taxonomy;

class RandomPlugin extends Plugin {
   public static function getSubscribedEvents() {
      return [
         'onPluginsInitialized' => ['onPluginsInitialized', 0],
      ];
   }
   public function onPluginsInitialized() {
      $uri = $this->grav['uri']; $route = $this->config->get('plugins.random.route'); if ($route && $route == $uri->path()) {
         $this->enable([ 'onPageInitialized' => ['onPageInitialized', 0] ]); } } public function onPageInitialized() { $taxonomy_map = $this->grav['taxonomy']; $filters = (array) $this->config->get('plugins.random.filters'); $operator = $this->config->get('plugins.random.filter_combinator', 'and'); if (count($filters)) {
         $collection = new Collection(); $collection->append($taxonomy_map->findTaxonomy($filters, $operator)->toArray()); if (count($collection)) {
            unset($this->grav['page']); $this->grav['page'] = $collection->random()->current();
         }
      }
   }
}

Tarayıcınızı açın ve aşağıdaki ekran görüntüsünde gösterildiği gibi rastgele sayfayı görmek için localhost / klasör_adı / random yazın -

Bu bölümde, aşağıdakiler hakkında çalışacağız Event HooksGrav. Gelen Eklentiler göreceksiniz bölüm, eklenti mantığı iki yöntemden dahil edilmiştir. YöntemleronPluginsInitialized ve onPageInitialized; bu yöntemler olay kancalarına benzer. Grav eklentilerinin gücünü daha fazla bilmek ve kontrol etmek için olay kancalarının kullanılabilirliğini kontrol etmeniz gerekir. Olay kancalarının Grav ile baştan sona doğrudan bir ilişkisi vardır. Kancaların hangi sırayla çağrıldığını ve bu çağrılar sırasında neyin kullanılabilir olduğunu bilmelisiniz.

Aşağıdaki tablo, çekirdek Gravür event hooks bir sayfanın işlenmesi sırasında etkinleştirilen.

Sr.No. Etkinlik Açıklaması
1

onFatalException

Bu etkinliği her an ateşleyebilirsiniz, eğer PHPölümcül bir istisna verir. Problem Eklenti bunu, Grav'ın neden ölümcül hatayı verdiğine dair tam bir açıklama listesini görüntülemeyi yönetmek için kullanır.

2

onPluginsInitialized

Bu, Grav'da kullanılabilen ilk eklenti olayıdır. Aşağıdaki nesneler aşağıda belirtildiği gibi tanıtılmıştır -

  • Uri
  • Config
  • Debugger
  • Cache
  • Plugins
3

onAssetsInitialized

Bu, assets yönetici yüklenir ve kullanıma ve yönetilmeye hazırdır.

4

onPageNotFound

Beklenmeyen bir sayfa bulduysanız, bu olayı reddedebilirsiniz. Halihazırda, hata eklentisi bir404 error sayfa.

5

onPageInitialized

Bu, istenen sayfayı bir URL Sayfa nesnesine yüklenir.

6

onOutputGenerated

Bu, çıktı sürecini, Twig templatingmotor. Şu anda, bu sadece bir diziHTML.

7

onOutputRendered

Bu, ekrana gönderilen bir çıktı işlemidir.

8

onShutdown

Bu, eylemleri gerçekleştirmenize izin veren yeni ve çok güçlü bir olaydır. Bu Grav işleminden sonra yapılır.completed processingve müşteriyle olan bağlantı kapatılır. Bu bireysel eylem, kullanıcı ile herhangi bir etkileşim gerektirmez, sonuç olarak performansı etkileyebilir. Kullanıcı takibini ve işlerin işlenmesini içerir.

9

onBeforeDownload

Bu yeni bir olaydır ve passesbir dosya içeren olay nesnesine. Kullanıcıların günlüğe kaydetme, söz konusu dosyayı indirme izni vermesi ve yok saymasına olanak tanır.

Twig Olay Kancaları

Twig, aşağıda belirtildiği gibi kullanmak üzere kendi olay kancalarına sahiptir.

Sr.No. Etkinlik Açıklaması
1

onTwigTemplatePaths

Şablon yolunun temel konumu, Twig object. Bu olay, Twig'in şablon yollarını arayacağı diğer konumları eklemek için kullanılır.

2

onTwiglnitialized

O initialize Twig şablonlama motoru.

3

onTwigExtensions

Çekirdek dal uzantılarının kullanıma hazır olduğunu belirtir. Bu olay kancası, kendi Twig uzantınızı eklemenizi sağlar.

4

onTwigPageVariables

Bu Twig işlemi size doğrudan bir sayfa sağlar, yani process:twig:truYAML başlıkları sayfasında. Burada Twig'e herhangi bir değişken ekleyebilirsiniz ve bu işlem sırasında twig için erişilebilir olmalıdır.

5

onTwigSiteVariables

Bu süreçte, tam site şablonunu şurada göreceksiniz: order wiseTwig yöntemleriyle. Ayrıca, bu işlem sırasında Twig'e herhangi bir değişken ekleyebilirsiniz.

Koleksiyon Etkinlik Kancaları

Aşağıdaki tablo bir toplama olay kancasını listelemektedir.

Sr.No. Etkinlik Açıklaması
1

onCollectionProcessed

Bu bölümde işlem tamamlandıktan sonra şunları yapabilirsiniz: control bir koleksiyon.

Sayfa Olay Kancaları

Aşağıdaki tablo, sayfa olay kancalarının bir koleksiyonunu listeler.

Sr.No. Etkinlik Açıklaması
1

onBuildPagesInitialized

Bu olay, eklentilerin içeriği kontrol etmesi ve sonuçları önbelleğe alması için yararlıdır. Bu olay etkinleştirildiğinde sayfalar geri dönüştürülecektir. Bu, önbellekteexpired veya ihtiyaçlar refreshing.

2

onBlueprintCreated

Bu olay, formların işlenmesine ve yönetilmesine yardımcı olur.

3

onPageContentRaw

Bu süreçte bir sayfa bulunduğunda, headers düzeltildi, ancak contentdüzeltilmeyecek. Grav sisteminde her sayfanın ateşlendiğini göreceksiniz. Önbelleği temizlediyseniz veya önbelleği temizlediyseniz, bu olay meydana gelir.

4

onPageProcessed

Bir sayfa olduğunda testedve düzeltildi, Grav sisteminde her sayfa kapatıldı. Önbelleğe alınmış bir sayfada oynamayacağı için bu durumda performans önemli değildir.

5

onPageContentProcessed

Sayfanın content () tekniği sayfa içeriğini düzelttikten sonra bu etkinliğin kapatıldığını görebilirsiniz. Bu olay, sonradan düzeltilmiş içerik üzerinde eylemler gerçekleştirmek, ancak sonuçlarıncached.

6

onFolderProcessed

Birkez folderTest edildi ve düzeltildi, Grav sisteminde her klasör atıldı. Önbelleğe alınmış bir sayfada oynamayacağı için bu durumda performans önemli değildir.

Grav Administration Paneleklenti Grav için bir web grafik kullanıcı arayüzüdür (GUI). Sayfaları kolayca oluşturabilir ve değiştirebilir. İsteğe bağlı bir eklentidir ve etkili bir şekilde çalışmak için Grav buna tamamen bağlı değildir. Yönetici, Grav'ın kolay kullanımı için sınırlı görünümler sağlar.

Özellikleri

Yönetim panelinin özellikleri aşağıdadır -

  • Eklenti yöneticisi listesinde bulunan eklentileri etkinleştirin veya devre dışı bırakın.

  • Sayfaları kolayca oluşturabilir, düzenleyebilir, kopyalayabilir ve silebilirsiniz.

  • Panoda en son sayfa güncellemelerinin listesi görüntülenir.

  • Mevcut en son güncellemeler tek bir tıklama ile kolayca görüntülenebilir.

  • Arama kutusunu kullanarak listeden belirli sayfaları bulun.

  • Şifre unutmanın işlevselliğinden oluşur.

  • Medya dosyaları sürükle bırak yöntemi ile yüklenebilir.

  • Normal ve uzman modlarda yaml veya formlar aracılığıyla düzenlemeye izin verir.

  • Gösterge panosu site etkinliği, en son sayfa güncellemeleri ve bakım durumundan oluşur.

  • Ajax destekli yedekleme ve önbellek temizleme yeteneklerinden oluşur.

  • Site ve sistem konfigürasyon yönetiminden oluşur.

  • GPM tarafından desteklenen yeni eklentiler ve temalar kurulumu.

  • Kullanıcı girişi sırasında otomatik şifre şifreleme özelliği sağlanır.

  • Anında Grav-powered önizleme ile güçlü sözdizimini vurgulayan kod düzenleyici sağlar.

  • Yüklenen tema listesi ve yapılandırmaları Tema yöneticisi kullanılarak yapılabilir.

  • Ayrıca oturum açmış kullanıcıları da yönetir.

Kurulum

Yönetici eklentisine erişmek için, latest Grav. Aşağıdaki komutu CLI'de (komut satırı arayüzü) çalıştırabilirsiniz.

$ bin/gpm selfupgrade -f

selfupgrade Grav'ı mevcut en son sürüme güncellemek için kullanılır. -f GPM (Grav Package Manager) dizinini yenilemek için kullanılır.

Yüklememiz gerekiyor admin, form, email ve loginyönetici eklentinizin düzgün çalışmasını sağlamak için eklentiler. Tüm eklentilerin bağımlılıkları olduğundan, yönetici eklentisini kurarken diğer eklentileri yüklemenizi istediğinde bunu kabul etmeniz gerekir; bu eklentiler GPM (Grav Package Manager) aracılığıyla kullanılabilir. Grav - GPM bölümünde GPM hakkında daha fazla çalışacağız .

Aşağıdaki komut, komut istemini kullanarak yönetici eklentisini kurmak için kullanılır.

$ bin/gpm install admin

Manuel Kurulum

Aşağıdaki eklentileri tek tek indirerek yönetim panelini manuel olarak kurabiliriz -

  • admin
  • form
  • login
  • email

Tüm eklentileri indirdikten sonra, tüm zip dosyalarını çıkarın ve <your_folder_name>/user/pluginsKlasör. Eklenti klasöründe, eklentileri benzersiz bir adla saklayabilirsiniz; isim eklentinin işlevi ile ilgili olmalıdır. Klasör şu şekilde yeniden adlandırılabilir:admin/, email/, form/ ve login/. Eklenti klasöründeki dört eklentinin tümünü birlikte saklamak gerekir; aksi takdirde yönetici paneli düzgün çalışmayacaktır.

Kullanıcı Oluşturma

Kullanıcı hesabını komut satırı arayüzünü kullanarak oluşturabiliriz. Bir kullanıcı hesabı oluşturmak için aşağıdaki komutu kullanın.

$bin/grav newuser

Aksi takdirde, aşağıdaki kod satırlarını yazarak manuel olarak da kullanıcı hesabı oluşturabilirsiniz -

email: [email protected]
access:
   admin:
      login: true
      super: true
   site:
      login: true
fullname: 'Tutorials Point'
title: tp
password: 'Password'

Yukarıdaki satırları <your_folder_name>/user/account/admin.yamldosya. Yukarıdaki kodu kaydetmek için kullandığınız isim,usernamegirişiniz için, yani yönetici. Düzenleyebilirsinizemail, fullname, title ve password ihtiyaçlarınıza göre.

Kullanım

Tarayıcınızı şuraya yönlendirerek yönetim paneline erişebilirsiniz. localhost/<your_folder_name>/adminve aşağıda gösterildiği gibi bir ekran göreceksiniz. Sen ayarlayabilirsinizusername ve password yaml dosyasında belirtildiği gibi creating user Bölüm.

Bu bölümde, Administrative Panel DashboardGrav. Dashboard, Grav Administration Panel eklentisi için bir bilgi merkezi görevi görür. İnceleyebilirsintraffic statistics, create new backups, Grav updates, maintenance information, en son sayfa güncellemelerini görüntüleyin ve bu tek sayfa yardımı ile Grav'ın önbelleğini temizleyebilirsiniz.

Step 1 - Kullanıcıya izinleri belirleyebilir ve içeriğin içeriğini değiştirebilirsiniz. Dashboardtalebe göre. Kontrol panelinin ekranı bir şekilde aşağıdaki ekran görüntüsü gibi olacaktır.

Step 2 - Şimdi özelliklerini göreceksiniz Cache and Updates Checking kontrol panelinde.

Gösterge Tablosu menüsünün üst kısmında iki sekme göreceksiniz.

  • Önbelleği temizle
  • Güncellemeleri kontrol et

Önbelleği temizle

Görüntülerin ve varlıkların önbelleği dahil tüm önbellek içeriğinin silineceğini belirtir.

Aşağıda belirtildiği gibi açılır menüde daha fazla özellik görebilirsiniz.

  • All cache - Tüm önbelleğin silinmesini belirtir

  • Assets only - Yalnızca varlıkların önbelleğinin silinmesini belirtir.

  • Images only - Yalnızca görüntülerin önbelleğinin silinmesini belirtir.

  • Cache only - Sadece önbelleğin silinmesini tanımlar.

Güncellemeleri kontrol et

Bu sekme, siteniz için güncellemeleri kontrol etmeyi belirtir. Yeni güncellemeler mevcutsa, Kontrol Panelinde bir bildirim alacaksınız. Desteklenen eklentiler, temalar ve hatta Grav için güncellemeler alacaksınız.

Bakım ve İstatistik

Bu bölüm, siteniz hakkında önemli bilgileri bilmenizi sağlar.

Bakım

Bu bölüm size tamamen güncel Grav özellikleri için bir yüzde grafiği sağlar. Bakım ve İstatistikler bölümünün üstünde gerekli güncellemenin bildirimini göreceksiniz.

  • Update- Yeni bir güncelleme mevcut olduğu anda bir Güncelle düğmesi görünecektir. Ardından, tıklayıp eklentilerinizi ve temalarınızı güncelleyebilirsiniz. GöreceksinUpdate Grav Now Grav'ün çekirdek bölümünü güncelleyen bildirim çubuğundaki düğme.

  • Backup- Bu bölümde sitenizi ne kadar süredir yedeklemediğinizi gösteren grafiği görebilirsiniz. Bu, bir zip dosyası oluşturarak ve indirerek yürütülebilir, sitenizin verileri için yedek olarak kaydedin.

İstatistik

Sitenizde geçen gün, hafta ve ayda alınan ziyaretçi trafiğinin basit ve hızlı bir görünüm grafiğini görüntüler. Haftanın günlerine ayrılmış çubuk grafiği gösterir.

Step 3 - Ardından, aşağıda gösterildiği gibi En Son Sayfa Güncellemelerinin ayrıntılı bilgilerini göreceksiniz.

Bu bölüm, Grav sitesindeki sayfalarınızın en son değiştirilmiş içeriği hakkında daha fazla bilgi sahibi olmanızı sağlar. Daha sonra, sayfayı her yenilediğinizde, sizin için son güncellenen listeyi oluşturacaktır.

Tıklayabilirsiniz titlelistedeki bir sayfanın; bu sizi yönetici bölümündeki sayfa düzenleyicisine yönlendirecektir.

Manage Pages düğmesi sizi yönetim panelinin sayfalarına yönlendirir.

Bu bölümde, Configuration SystemGrav'ın Yönetim Panelinde. Yapılandırma sayfası yardımıyla sitenizin sistem ayarlarını doğrudan yapılandırabilirsiniz. Ayrıca, PHP, sunucu ortamı ve sitenizin nasıl performans gösterdiğini düzenleyen diğer birkaç bileşen dahil olmak üzere sunucunuzun özelliklerinin kısa bir açıklamasını göreceksiniz.

Sistem sekmesi, içindeki ayarları değiştirmenize olanak sağlar. /user/config/system.yamldosya. Bu, Grav'ın çalışmasının birçok temel sistemle ilgili özelliğini etkiler. Ayarlar, size Grav performansının farklı özelliklerini gösteren farklı bölümlere ayrılabilir.

Aşağıda ayrıntılı bir liste configuration sections sistemler sekmesinde görüntülenen -

İçerik

Bu bölümde, temel özellikleri düzeltebilirsiniz. Content aşağıda gösterildiği gibi sitenizin işlenmesi.

  • Home Page - Siteniz için görüntülemek istediğiniz ana sayfayı belirtir.

  • Default Theme - Siteniz için birincil varsayılan temayı görüntüler.

  • Process- Sayfaların nasıl işlendiğini kontrol eder. Genel yerine sayfa başına ayarlanabilir.

  • TimeZone - Sunucudaki varsayılan saat dilimini ayarlar.

  • Short Date Format - Kısa tarih formatını görüntüler.

  • Long Date Format - Uzun tarih formatını görüntüler.

  • Default Ordering - Sayfalar bu sırayı kullanan bir listede görüntülenir.

  • Default Order Direction - Listedeki sayfaların yönünü belirtir.

  • Default Page Count - Bir listedeki maksimum varsayılan sayfa sayısını tanımlar.

  • Date Based Publishing - Gönderileri tarihe göre otomatik olarak yayınlar.

  • Events- Olayları etkinleştirmeyi veya devre dışı bırakmayı belirtir. Devre dışı bırakmak, eklentiye zarar verir.

  • Redirect Default Route - Varsayılan bir yol tanımlar ve otomatik olarak bir sayfaya yönlendirir.

Diller

Sen ayarlayabilirsiniz Multi language features bu alanda aşağıda gösterildiği gibi.

  • Supported - Virgülle ayrılmış iki harfli dil kodlarının listesini, yani en, fr, de belirtir.

  • Translations Enabled - Grav, eklentiler ve uzantılarda çevirileri etkinleştirir.

  • Translations Fallback - Etkin dil yoksa yedek desteklenen çevirileri belirtir.

  • Active Language in Section - Aktif dili bölgede saklayabilirsiniz.

  • Home Redirect Include Language - Talebe göre ev yönlendirmesindeki (/ en) dili içerir.

  • Home redirect Include Route - Yönlendirme yönetici ana sayfa kökünü belirtir.

  • Set language from browser - Tarayıcıdan dili belirtir.

  • Override locale - Yerel ayarın geçersiz kılınacağını belirtir.

HTTP Başlıkları

Bu bölüm, HTTP Headersseçenekler. Bu ayar, tarayıcı tabanlı önbelleğe alma ve optimizasyona yardımcı olur.

  • Expires - Son kullanma süresini tanımlar ve değeri saniye cinsinden ayarlar.

  • Last Modified - Proxy ve tarayıcı önbelleğini optimize etmeye yardımcı olan son değiştirilen başlık ayarlanır.

  • ETag - tanımlar e tag header değiştirilmiş bir sayfayı tanımlamak için.

  • Vary Accept Encoding- Vary: HTTP başlığını Kabul et olarak düzenlemelisiniz. Bu, proxy'lerdeki önbelleğe fayda sağlayacaktır.

Markdown

Bu bölümde Grav'ın nasıl yönettiğini inceleyeceğiz. Markdownve Markdown Extra'yı etkinleştirme özellikleri. Kullanıcıya yardımcı olur ve Grav'ın sayfa içeriğinin büyük bir kısmını oluşturur.

  • Markdown Extra - Markdown Extra için varsayılan bir destek belirtir.

  • Auto Line Breaks - Markdown'daki satır sonlarını belirtir.

  • Auto URL Links - URL'lerin HTML köprülerine dönüştürülmesini belirtir.

  • Escape Markup - HTML nesnelerine biçimlendirme sekmelerini belirtir.

Önbelleğe almak

Bu bölümde, sitenizin birincil Cachingfonksiyonlar. Grav, kullanıcılar için en hızlı düz dosya CMS seçeneklerini oluşturmaya yardımcı olan önbelleğe alma özelliğini birleştirdi.

  • Caching - Bu, geçiş yapılacağını belirtir ON/OFF küresel olarak enable/disable Yerleşik önbelleğe alma.

  • Cache Check Method - Bu, Dosya, Klasör ve Hiçbiri için önbellek kontrol yöntemlerini tanımlar.

  • Cache Driver- Bu, kullanıcılara önbellek sürücüsünü seçmeyi belirtir. Otomatik Algılama önbellek sürücüsü en iyiyi bulur.

  • Cache Prefix- Bu, Grav tuşunun bir kısmı için bir tanımlayıcı belirtir. Yalnızca gerekirse değiştirin ya da değiştirmeyin.

  • Lifetime - Bu, önbellek ömrünü saniye cinsinden tanımlar, 0=infinite.

  • Gzip Compression - Performansı artırmak için Grav sayfasının Gzip sıkıştırmasını etkinleştirin.

Twig Şablonlama

Bu bölümde Grav, Twig templatingözellikleri. Twig önbelleğe almayı yapılandırabilir, hata ayıklayabilir ve izleme ayarını buradan değiştirebilirsiniz.

  • Twig Caching- Bu, Twig önbelleğe alma sistemini kontrol etmeyi belirtir. Etkinleştirildiğinde en iyi performansı verir.

  • Twig Debug - Bu, Twig Debugger uzantısını yüklememe seçeneğini tanımlar.

  • Detect Changes - Twig şablonlarında yapılan herhangi bir değişiklik, bu Twig önbelleğini otomatik olarak yeniden derleyecektir.

  • Autoescape Variables - Tüm değişkenler autoescapes; bu sitenize zarar verebilir.

Varlıklar

Bu bölüm, aşağıda gösterildiği gibi CSS ve JavaScript varlıkları dahil varlıkları işlemek için kullanılır.

  • CSS Pipeline - Birden fazla CSS kaynağının tek bir dosyaya entegrasyonu.

  • CSS Minify - Ardışık düzen sırasında CSS küçültülür.

  • CSS Minify Windows Override - Varsayılan olarak False olarak ayarlanmıştır ve Windows platformları için Minify Override'ı tanımlar.

  • CSS Rewrite - CSS ile ilgili URL'ler ardışık düzen sırasında yeniden yazılır.

  • JavaScript Pipeline - Birden çok JavaScript kaynağının tek bir dosyaya entegrasyonu.

  • JavaScript Minify - Ardışık düzen sırasında JS küçültülür.

  • Enable Timestamps on Assets - Varlıklar üzerindeki zaman damgaları etkinleştirilir.

  • Collections - Varlık koleksiyonu ayrı ayrı eklenir.

Hata İşleyici

Site geliştirme sırasında, bu bölüm Grav hata raporlamasını yönetmek için çok kullanışlıdır.

  • Display Error - Tam geri izleme tarzı hata sayfası görüntülenir.

  • Log Errors - Günlük hataları, /logs Klasör.

Hata ayıklayıcı

Bu, hata işlemeye benzer, hata ayıklama araçları hataları bulmak ve gidermek için Grav'a entegre edilmiştir.

  • Debugger - Hata Ayıklayıcı ve ayarları etkinleştirilir.

  • Debug Twig - Twig şablonları hata ayıklayıcı etkinleştirildi.

  • Shutdown Close Connection - Aramadan önce onShutdown(), bağlantıyı kapatmanız gerekir.

Medya

Bu bölüm, mediaGrav içeriği. Görüntü kalitesini, dosya yükleme boyutunu ve birçok ortam işleme seçeneğini burada yapılandırabilirsiniz.

  • Default Image Quality - Görüntüleri önbelleğe alırken veya yeniden örneklerken varsayılan görüntü kalitesini kullanın.

  • Cache all Images - Tüm görüntüler, medya manipülasyonları içermese bile Grav'ın önbellek sistemi üzerinden çalıştırılır.

  • Image Debug Watermark - Görüntünün piksel derinliğini, görüntülerin üzerinde bir kaplama gösterirken, yani retina ile çalışırken belirtebilirsiniz.

  • File Upload Limit - Maksimum yükleme boyutunu bayt cinsinden tanımlar (0 sonsuzdur).

  • Enable Timestamps on Media - Son değiştirilme tarihine göre her medya öğesine zaman damgası ekleyin.

Oturum, toplantı, celse

Aşağıda belirtilen özellikler etkinleştirmenize yardımcı olur session destek.

  • Enable - Bu, Grav içindeki oturum desteğini belirtir.

  • Timeout - Bu, saniye cinsinden oturum zaman aşımını belirtir.

  • Name - Bu, bir tanımlayıcı tarafından geliştirilen ve uygulanan oturum çerezinin adını belirtir.

ileri

Bu bölümde göreceksiniz advanced sistem seçenekleri.

  • Absolute URLs - Bu, için mutlak veya göreceli URL'leri belirtir base_url.

  • Parameter Separate - Windows'ta Apache'yi parametre ayırıcı yardımıyla değiştirebilirsiniz.

Bu bölümde, nasıl yapılacağını inceleyeceğiz. Configure SiteGrav'ın Yönetim Panelinde. Yapılandırma sayfası yardımıyla sitenizin Sistem ayarlarını doğrudan yapılandırabilirsiniz. Sitesi sekmesi ayarları değiştirmenizi sağlar/user/config/system.yamldosya. Bu sekme, sitenizde kullanılan ad, varsayılan yazar vb. Gibi siteyle ilgili özellikleri etkileyen seçenekleri ve alanları değiştirmenize olanak tanır.

Site sekmesinde görebileceğiniz farklı yapılandırma ayarları aşağıda verilmiştir .

Varsayılan

Bu alanda, sitenizin içeriğini yönetmek için temel özellikleri ayarlayabilirsiniz. Burada, ana sayfa, varsayılan tema ve diğerleri gibi çeşitli içerik görüntüleme seçeneklerini ayarlayabilirsiniz.

  • Site Title - Bu, sitenizin başlığını belirtir.

  • Default Author - Bu, temalarda veya sayfa içeriğinde kullanılan varsayılan bir yazar adını belirtir.

  • Default Email - Bu, temalarda veya sayfalarda varsayılan bir e-postayı belirtir.

  • Taxonomy Types - Bu, sayfalarda kullandığınız sınıflandırma türlerini belirtir.

Sayfa Özeti

Bir sayfa özeti, size bir sayfanın içeriğinin küçük bir önizlemesini sunma yeteneğine sahiptir. Sayfada, özet içerik arasında sınırlayıcı yardımıyla bir "kesme" noktası tanımlayabilirsiniz.

  • Enabled - Bu, sayfa özetinin etkinleştirilip etkinleştirilmediğini belirtir.

  • Summary Size - Bu, sayfada içerik özeti olarak kullanılacak karakter sayısını tanımlar.

  • Format- Kısa , sınırlayıcının ilk oluşumunu kullanır, Uzun , özet sınırlayıcıyı yok sayar.

  • Delimiter- Bu, özet sınırlayıcıyı belirtir. Varsayılan değer varsayılan '==='dir. Bunu sayfa özetinde kullanabilir ve bunu bir paragrafı açtıktan sonra gönderebilirsiniz.

Meta veriler

Meta veriler, sayfalarda önemli bir rol oynar ve SEO'nuzu geliştirir. Burada birkaç meta veri özelliğini ayarlayabilirsiniz, böylece bağlantılarınız talebe göre çeşitli arama motorlarında ve sosyal beslemelerde görünebilir.

Bu, varsayılan meta veri değerini belirtir, daha sonra değişiklikleri yapabilirsiniz.

Yönlendirmeler ve Rotalar

Bu, sitenizin diğer sayfalarına yönlendirmeler ve rotalar ayarlamanıza olanak tanır.

  • Custom Redirects- Bu, diğer sayfalara yönlendirilecek yolları tanımlar. Standart normal ifadenin değiştirilmesi geçerlidir.

  • Custom Routes- Diğer sayfalara rota takma adı. Standart normal ifadenin değiştirilmesi geçerlidir.

Bu bölümde, Yönetim Paneli Sayfalarının Grav'da nasıl çalıştığını anlayacağız. Sayfalar, sitenizin içeriğini oluşturmak, düzenlemek veya silmek için kolay erişim sağlar. Yönetim paneli sayfalarında, siteniz için oluşturulan sayfaların listesini görüntüleyebilir ve ayrıca siteniz için modüler veya modüler olmayan yeni bir sayfa oluşturabilirsiniz.

Yeni Sayfalar Ekleme

Ekranın üst kısmında üç düğme olduğunu görebilirsiniz. pages aşağıdaki ekran görüntüsünde gösterildiği gibi yönetim paneli.

  • Back - Bu, yönetim sayfasının gösterge tablosuna geri döner.

  • Add Page - Bu, modüler olmayan yeni bir içerik oluşturur.

  • Add Modular - Bu, yeni modüler içerik oluşturur.

Sayfa ekle

Sitenize sayfa eklerken çeşitli alanlardan oluşan modüler olmayan sayfa oluşturur. Title, Folder Name, Parent root vb.

Tıkladığınızda Add Page düğmesi, aşağıda gösterildiği gibi bir açılır pencere görünür -

Aşağıdaki alanları içerir -

  • Page Title - Buraya sayfanın başlığını girersiniz.

  • Folder Name - Bu, sayfa için klasör adını girmek içindir; aksi takdirde, başlığı girdiğinizde ad otomatik olarak oluşturulur.

  • Parent Page - Bu, yeni oluşturulan sayfanız için ana sayfayı ayarlar.

  • Page File - Bu, seçilen tema şablonunu sayfaya görüntüler.

  • Visible- Bu, sayfayı otomatik, evet veya hayır olarak ayarlayarak gezinme çubuğunda görünür hale getirir .

Alanlardaki tüm bilgileri doldurduktan sonra, Continuebuton. Sizi sayfa düzenleyiciye yönlendirecektir.

Modüler Sayfa Ekle

Modüler sayfa, alt sayfalarından tek bir sayfa oluşturmayı sağlar. Modüler içerik sayfalarından karmaşık tek sayfa düzenleri oluşturma yeteneğine sahiptir.

Tıkladığınızda Add Modular düğmesi, aşağıda gösterildiği gibi bir açılır pencere görünür -

Pencere aşağıdaki alanları içerir -

  • Page Title - Burada modüler sayfanın başlığını giriyoruz.

  • Folder Name - Bu, sayfa için klasör adını girmek içindir veya başlığı girdiğinizde ad otomatik olarak oluşturulur.

  • Page - Bu, yeni oluşturduğunuz modüler alt sayfanızın ana sayfasını ayarlar.

  • Modular Template - Bu, modüler sayfalarınız için görüntülenecek belirli şablonu seçer.

Alanlardaki tüm bilgileri doldurduktan sonra, Continuebuton. Sizi sayfa düzenleyiciye yönlendirecektir.

Sayfa Listesi

Bu site için oluşturulan sayfaların listesini görüntüler.

Burada oluşturduğunuz sayfalara kolayca erişebilir ve düzenleyebilirsiniz.

  • Sayfanın herhangi bir başlığına tıkladığınızda, sizi düzenleme amacıyla sayfa düzenleyiciye yönlendirecektir.

  • Sayfanın sağ tarafındaki X simgesi sayfayı silmek için kullanılır.

  • Filtre kutusu, aradığınız sayfayı bulmak için kullanılır. Sayfaları türlerine göre filtreler, böylece yalnızcamodular, visible ve / veya routable listede görüntülenir.

  • Arama kutusu, o sayfanın tam adını bildiğiniz sayfayı bulmak için kullanılır.

  • Doğrudan sayfanın sol tarafındaki simgelerin üzerine geldiğinizde, size mevcut durumu gösterecektir, yani, Page . Routable . Visible . Published, sayfanın URL aracılığıyla görülebileceği ve gezinme menülerinde görüntüleneceği anlamına gelir.

Listede görüntülenen sayfaya tıkladığınızda aşağıdaki ekranı göreceksiniz.

Yukarıdaki ekranda, sayfayı düzenleme, içerik ekleme veya sayfanıza resim ekleme seçenekleriniz vardır. Optionssekmesi, Sayfa Düzenleyici Seçenekleri bölümünde incelediğimiz yayınlama, taksonomiler ve site haritası seçeneklerinden oluşur . Advancedsekmesi, Sayfa Editörü Gelişmiş bölümünde ele alınacak olan ayar, sıralama ve geçersiz kılma gibi gelişmiş sayfa seçeneklerini içerir .

Bu bölümde, Page Editor optionsGrav yönetim panelinde. Bu, sayfanızın içeriğini oluşturmanıza izin veren dinamik bir metin düzenleyicidir. Ek olarak, sayfalara medya dosyaları ekleyebilirsiniz. Özelliklerini görebilirsiniz.options sekmesi aşağıda gösterildiği gibi.

Options sekmesi iki bölüm içerir -

  • Publishing
  • Taxonomies

Yayıncılık

Bu bölüm, sayfanın yayınlanması ve yayından kaldırılması için tarih ve saati ayarlamak için kullanılır. Yayınlanacak veya yayından kaldırılacak içerik üzerinde tam kontrole sahip olacaksınız ve belirli bir sayfa için meta veri değerlerini oluşturabilirsiniz.

Yayın bölümünde aşağıdaki alanlar mevcuttur -

  • Published - Varsayılan olarak, sayfa şu şekilde ayarlanmıştır: Yes, yani yayınlandı. SeçerekNo sayfayı yayından kaldırabilirsiniz.

  • Date - Sayfa için tarih ve saati ayarlayın.

  • Published Date - Sayfayı otomatik olarak yayınlamak için tarih ve saati ayarlayın.

  • Unpublished Date - Sayfayı otomatik olarak yayından kaldırmak için tarih ve saati ayarlayın.

  • Metadata - Tüm sayfalarda görüntülenecek meta veri değerlerini ayarlayın.

Sınıflandırmalar

Bu bölümde, sayfada kategorileri görüntüleyebilir, sayfanızı ve yapısal özelliklerini yapılandırabilirsiniz.

Taksonomiler bölümünde aşağıdaki alanlar mevcuttur.

  • Category- Sayfa için kategorileri belirler. İçeriğin sıralanmasına ve filtrelenmesine yardımcı olur.

  • Tag- Sayfanızın neyle ilgili olduğu hakkında bilgi sağlar. İçeriğin organizasyonuna ve filtrelenmesine yardımcı olur.

Sayfa düzenleyici bir metin düzenleyicidir ve ayrıca sayfaları yönetir; bu, medya dosyaları, yayınlama ve sınıflandırma seçenekleri, ayarlar ve temaya özel seçenekler dahil olmak üzere içerik oluşturmanıza olanak tanır. Aşağıdaki ekran görüntüsü, editör sayfasının Gelişmiş sekmesini göstermektedir.

Gelişmiş sekmesi üç bölüm içerir -

  • Settings

  • Ordering

  • Overrides

Ayarlar

Settingsbölümü, sayfanın çeşitli seçenekleriyle ilgilenir. Burada sayfanın şablonunu ayarlayabilir, sayfanın üstünü ayarlayabilir, sayfanın yerleştirildiği klasör adını değiştirebilirsiniz.

Ayarlar bölümünde aşağıdaki alanlar mevcuttur -

  • Folder Numeric Prefix - Numara, manuel sipariş sağlayacak şekilde ayarlanmıştır.

  • Folder Name - Sayfalarınızın bulunduğu klasör adını girin.

  • Parent - Sayfalarınız için kök ayarlayın veya birkaç sayfa alt sayfa olarak görünür.

  • Page File - Tema şablonunu görüntülenecek sayfaya ayarlayın.

  • Body Classes - Sayfanın gövdesine uygulanan sınıf adını girin.

Sipariş verme

Bu bölüm, numaralandırılmamış klasörleri belirli bir sıraya göre ayarlamak içindir.

Dört uçlu oka basın ve basılı tutun ve sayfalarınızı belirli bir sırada yeniden düzenlemek için o konuma hareket ettirin.

Geçersiz kılmalar

Overrides seçenekler, sayfaya önbelleğe alma, gezinme görünürlüğü, slug'ı klasör adına göre ayarlanan varsayılandan farklı bir şeye ayarlama gibi ekstra işlevsellik sağlar.

Geçersiz Kılmalar bölümünde aşağıdaki alanlar mevcuttur.

  • Menu- Menü olarak kullanılacak adı ayarlar. Hiçbir şey ayarlanmadıysaTitle kullanılacak.

  • Slug - URL'nin sayfanın kısmı bu bilgi değişkeni tarafından ayarlanabilir.

  • Page redirect - Bir sayfa URL'sini farklı bir URL'ye yönlendirecek şekilde ayarlar.

  • Process - Sayfa içeriğinde mevcut olmasını istediğiniz işlem.

  • Default Child Type - Alt sayfalar için sayfa türü varsayılan olarak ayarlanmıştır.

  • Routable - URL ile ulaşılıp ulaşılamayacağını kontrol etmek için sayfayı buna göre ayarlar.

  • Caching - Sayfanın önbelleğe alınmasını ayarlar.

  • Visible - Sayfanın gezinmede görünür olup olmadığını belirtir.

  • Display Template - Şablonu görüntülenecek sayfaya ayarlar.

Blueprintskaynakla ilgili meta veri bilgileridir (bilgi kaynağı). İki amaca hizmet eder -

  • Birincisi, kaynak kimliğinin kendisidir.
  • İkincisi formlarla ilgili.

Bu eksiksiz bilgiler, her bir eklenti veya temada bulunan blueprints.yaml dosyasına kaydedilir .

Kaynak Kimliği

Gelen blueprints.yaml dosya kimliği her temalar ve eklentiler için tanımlanır. Planlar mükemmel şekilde biçimlendirilip derlenene kadar kaynak Grav deposunda eklenmeyecektir.

Taslak Örneği

name: plugin name
version: 0.6.0
description: Adds an advanced plugin to manage your site
icon: empire
author:
   name: Team Grav
   email: [email protected]
   url: http://getGrav.org
homepage: https://github.com/getGrav/Grav-plugin-assets
keywords: assets, plugin, manager, panel
bugs: https://github.com/getGrav/Grav-plugin-assets/issues
readme: https://github.com/getGrav/Grav-plugin-assets/blob/develop/README.md
license: MIT

dependencies:
   - form
   - email
   - login

form:
   validation: loose
   fields:
      Basics:
         type: section
         title: Basics
         underline: false
      enabled:
         type: hidden
         label: Plugin status
         highlight: 1
         default: 0
         options:
            1: Enabled
            0: Disabled
         validate:
            type: bool

Aşağıdaki birkaç özellik isteğe bağlıdır ve bazıları kimliğinizi ve kaynağınızı vermek için kullanılır.

Sr.No. Özellikler ve Açıklama
1

name*

Kaynağın adını belirtin.

2

version*

Kaynağın sürümünü belirtir.

3

description*

Kaynak hakkında kısa açıklama verir. 200 karakteri geçmemelidir.

4

icon*

Yeni bir tema veya eklenti geliştirmek için bir simge kitaplığı belirtir.

5

author.name*

Geliştiricinin adını belirtir.

6

author.email (optional)

Geliştiricinin e-posta adresini belirtir.

7

author.url (optional)

Geliştiricinin URL ana sayfasını belirtir.

8

homepage (optional)

Kaynağınız için ana sayfa için ayrılan URL'yi belirtir.

9

docs (optional)

Kaynağınız için yazmış olduğunuz dokümantasyon bağlantısını belirtir.

10

demo (optional)

Demo kaynağının bağlantısını belirtir.

11

guide (optional)

Kaynağınız için nasıl rehberlik edeceğiniz veya öğreticilerle ilgili bağlantıyı belirtir.

12

keywords (optional)

Kaynağınızla ilgili anahtar kelimelerin listesini belirtir.

13

bugs (optional)

Sorunların veya hataların bildirilebileceği URL'yi belirtir.

14

license (optional)

Kaynak lisansınızı, yani MIT, GPL vb. Belirtir.

15

dependencies (optional)

Eklentiler veya temalar için gerekli olan bağımlılıkların adını belirtir.

Aşağıda, giriş eklenti planına bir örnek verilmiştir -

name: Login
version: 0.3.3
description: Enables user authentication and login screen.
icon: sign-in
author:
   name: Team Grav
   email: [email protected]
   url: http://getGrav.org
keywords: admin, plugin, login
homepage: https://github.com/getGrav/Grav-plugin-login
keywords: login, authentication, admin, security
bugs: https://github.com/Getgrav/Grav-plugin-login/issues
license: MIT

Formlar

Temaların veya eklentilerin doğrudan yönetici arayüzünden yapılandırılabilen seçeneklere sahip olmasını istiyorsanız , blueprints.yaml dosyasını formlarla doldurabilirsiniz . Bu kaynağın parçası,Admin Plugintarafından tanımlanan Forms meta veriler.

Aşağıda, Arşiv Eklentisi arşivleri.yaml dosyasının bir örneği verilmiştir .

enabled: true
built_in_css: true
date_display_format: 'F Y'
show_count: true
limit: 12
order:
   by: date
   dir: desc
filter_combinator: and
filters:
   category: blog

Bunlar eklentinin varsayılan ayarlarıdır. Yönetici eklentisi kullanmadan bunları yapılandırmak için, kullanıcının bu dosyayı/user/config/plugins/archives.yamlklasörüne gidin ve değişiklikleri yapın. Archives.yaml dosyasını doğru şekilde sağlayabilirsiniz ; yönetici arayüzündeki ayarları kullanıcılardan değiştirmeyi seçebilirsiniz.

Değişiklikleri kaydettikten sonra, otomatik olarak <your_folder_name>/user/config/plugins/archives.yaml.

Blueprint.yaml aşağıda gösterildiği gibi Arşiv tapa dosya yapısını içerir -

name: Archives
version: 1.3.0
description: The **Archives** plugin creates links for pages grouped by month/year
icon: university
author:
   name: Team Grav
   email: [email protected]
   url: http://getGrav.org
homepage: https://github.com/getGrav/Grav-plugin-archives
demo: http://demo.getGrav.org/blog-skeleton
keywords: archives, plugin, blog, month, year, date, navigation, history
bugs: https://github.com/getGrav/Grav-plugin-archives/issues
license: MIT

form:
   validation: strict
   fields:
      enabled:
         type: toggle
         label: Plugin status
         highlight: 1
         default: 1
         options:
            1: Enabled
            0: Disabled
         validate:
            type: bool

      date_display_format:
         type: select
         size: medium
         classes: fancy
         label: Date Format
         default: 'jS M Y'
         options:
            'F jS Y': "January 1st 2014"
            'l jS of F': "Monday 1st of January"
            'D, m M Y': "Mon, 01 Jan 2014"
            'd-m-y': "01-01-14"
            'jS M Y': "10th Feb 2014"

      limit:
         type: text
         size: x-small
         label: Count Limit
         validate:
            type: number
            min: 1

      order.dir:
         type: toggle
         label: Order Direction
         highlight: asc
         default: desc
         options:
            asc: Ascending
            desc: Descending

Archive.yaml'de bulunan form öğeleri aşağıdadır .

Toggle

enabled:
   type: toggle
   label: Plugin status
   highlight: 1
   default: 1
   options:
      1: Enabled
      0: Disabled
   validate:
      type: bool

Select

date_display_format:
   type: select
   size: medium
   classes: fancy
   label: Date Format
   default: 'jS M Y'
   options:
      'F jS Y': "January 1st 2014"
      'l jS of F': "Monday 1st of January"
      'D, m M Y': "Mon, 01 Jan 2014"
      'd-m-y': "01-01-14"
      'jS M Y': "10th Feb 2014"

Text

limit:
   type: text
   size: x-small
   label: Count Limit
   validate:
      type: number
      min: 1

Enabled kök öğesi , date_display_format ve limit seçeneklerdir. Bu kök öğede bulunan alan, türü, boyutu, etiketi, varsayılanı ve seçenekleri belirler. Alan türüne bağlı olarak diğer alanlar değişebilir; örneğin, seçim alanı seçenekler listesi gerektirir.

Order direction

order.dir:
   type: toggle
   label: Order Direction
   highlight: asc
   default: desc
   options:
      asc: Ascending
      desc: Descending

Bu alan iç içe geçmiş seçeneklerden oluşur. Eklentiler / admin / temalar / Grav / şablonlar / formlar / alanlarda kullanılabilecek birçok alan türü vardır . Archive.yaml dosyasında görebileceğimiz gibi , form doğrulama katı olarak ayarlanmıştır. Doğrulama katı olarak ayarlandığında, tüm seçenekler için plan formunu eklemeniz gerekir, aksi takdirde kaydederken bir hata ortaya çıkar. Form.validation yönetici arayüzüne sadece iki alan özelleştirmek istediğinizde gevşek olarak ayarlanabilir.

Aşağıdaki tablo, yukarıdaki form öğeleriyle ilgili alanların kısa bir açıklamasını verir.

Sr.No. Alan tasviri
1

Type

Alan türünü gösterir.

2

Size

Alanın boyutunu belirtir.

3

Label

Alanın etiketini belirtir.

4

Validate

Alanın türünü ve alana girilen minimum uzunluğu doğrular.

5

Default

Varsayılan alanları ayarlar.

6

Options

Seçeneklerin listesini belirtir.

7

Classes

Alanın sınıfını belirtir.

Yöneticide bulunan Form Alanları

Eklentiler ve temalar tarafından kullanılan veya kendi form alanlarını oluşturabilen birçok yerleşik form alanı vardır. Aşağıdaki tablo, mevcut form alanlarını listeler -

Ortak form alanları

Sr.No. Alan tasviri
1

Checkbox

Tek onay kutusunu görüntüler.

2

Checkboxes

Onay kutularının bir listesini görüntüler.

3

Date

Tarih alanını içerir.

4

Datetime

Tarih ve saat alanını içerir.

5

Email

Doğrulamalı bir e-posta adresi alanı içerir.

6

Password

Nokta biçiminde görüntülenen bir parola alanı içerir.

7

Hidden

Gizli giriş alanı içerir.

8

Radio

Listeden yalnızca bir seçeneği seçmeye izin verir.

9

Select

Bu alan birkaç seçenek içerir.

10

Spacer

Forma başlık, metin veya yatay çizgi ekler.

11

Text

Normal metin alanı içerir.

12

Textarea

Çok satırlı metin girişleri içerir.

Özel form alanları

Sr.No. Alan tasviri
1

Array

Birden çok anahtar değeri satırı ekler.

2

Ignore

Kullanılmayan alanlar kaldırılır.

3

Columns

Formu birden çok sütuna böler.

4

Column

Tek bir sütun görüntüler.

5

Dateformat

Tarih ve saat formatını ayarlar.

6

Display

Herhangi bir giriş değeri olmadan metin değerini görüntüler.

7

Frontmatter

Sayfa, ham formatta görüntülenir.

8

List

Anahtarsız bir öğe listesi görüntüler.

9

Markdown

Markdown düzenleyicisini görüntüler.

10

Pages

Sayfaların listesini görüntüler.

11

Section

Ayar sayfası bölümlere ayrılmıştır ve her bölümün bir başlığı vardır.

12

Selectize

Kutuları seçmek için kullanılır.

13

Tabs

Ayarlar, sekme listesine bölünmüştür.

14

Tab

Sekmeler alanı, bir sekme sağlamak için kullanılır.

15

Taxonomy

Sınıflandırmayı seçmek için önceden yapılandırılmış bir seçmedir.

16

Toggle

Girişin açık veya kapalı türünü belirten geçiş efektini temsil eder.

Bu bölümde, Grav'da performans ve önbelleğe alma kavramlarını anlayacağız.

Verim

Performans terimi, sistemdeki daha yüksek yükü kaldırıp kaldıramayacağı ve sistemi daha yüksek bir yükü kaldıracak şekilde değiştirip değiştiremeyeceği şekilde sistem performansını ifade eder.

Grav performansıyla ilgili aşağıdaki noktaları göz önünde bulundurun -

  • Grav'ın daha iyi performansına sahip olmak için PHP'yi kullanabilirsiniz. opcache ve usercache. Opcache PHP 5.4 ile iyi çalışır ve usercache PHP 5.5, PHP 5.6 ve Zend opcache ile daha hızlı çalışır.

  • SSDFlash bellek kullanan ve hareketli parçası olmayan (Katı Hal Sürücüsü). Bazen önbellek kullanıcı önbelleğinde saklanır veya dosyalar olarak depolanır. Böylece SSD sürücüler daha iyi performans sağlayabilir.

  • Sanal makineler, bulut bilişim teknolojisi altında sağlayıcıları barındırmanın en iyi yoludur. Kaynakları fiziksel ekipmanla etkileşime girmeden belirleyebilirsiniz.Native hostingsanal makineden daha hızlıdır. Grav, sanal makinelerde daha iyi çalışır, ancak optimum performans için yerel barındırma seçeneğini kullanabilirsiniz.

  • Grav var faster memoryönbelleğinin sunucunuzda daha iyi performans sağlayan ağır bellek kullandığı. Diğer platformlarla karşılaştırıldığında daha az bellek kullanır.

  • Grav kullanır shared hostingPaylaşılan sunucuda şeyleri paylaşmak için. Paylaşım barındırma düşük bir maliyetle mevcuttur ve bazen sunucudaki işleri yavaşlatabilir.

  • Çok çekirdekli işlemciler, birden çok görevi daha hızlı gerçekleştirmek için kullanılır. Gelişmiş işlemciler bu işlemcilerden daha iyidir ve kullanıcının görevi yerine getirmesine yardımcı olur.

Önbelleğe almak

Genel olarak önbellek, önbellekte saklanan bir veridir. Önbellek mekanizması, Grav'ı daha hızlı hale getirerek, tarayıcının dosyaları orijinal sunucudan ziyade önbellekten alabilmesini sağlayarak zamandan ve ek ağ trafiğinden tasarruf sağlar.

Grav, aşağıdakileri destekleyen Doctrine Cache kütüphanesini kullanır -

  • Otomatik (Varsayılan) - Varsayılan seçeneği otomatik olarak kullanır.

  • Dosya - Dosyada bulunan önbellek dosyalarını belirtir. cache/ Klasör.

  • APC

  • XCache

  • Memcache

  • Redis

  • WinCache

Varsayılan olarak, Grav otomatik ayarı kullanır. APC'yi deneyecek, ardından WinCache, XCache ve son olarak da File'ı kullanacaktır.

Önbelleğe Alma Türleri

5 tür önbelleğe alma vardır -

  • YAML konfigürasyonunun PHP'ye önbelleğe alınması.

  • Sayfa nesneleri için Core Grav önbelleğe alma.

  • Şablon dosyalarının PHP sınıfları olarak önbelleğe alınması.

  • Medya kaynakları için görüntü önbelleğe alma.

  • Ardışık düzen ile CSS ve jQuery'nin varlık önbelleğe alınması.

YAML yapılandırmasının önbelleğe alınması /cacheKlasör. Görüntü önbelleğe alma, görüntülerini/imagesKlasör. Çekirdek Grav önbelleğe alma için yapılandırma seçeneği şurada saklanır:user/config/system.yml dosya aşağıda gösterildiği gibi -

cache:
   enabled: true
   check:
      method: file
   driver: auto
   prefix: 'g'
  • enabled seçeneği true olarak ayarlayarak önbelleğe almayı etkinleştirir.

  • method seçeneği, dosyalar veya klasörler gibi sayfalardaki güncellemeleri kontrol eder.

  • driver seçeneği, Otomatik, Dosya, APC, XCache, Memcache, Redis veya WinCache gibi farklı önbelleğe alma seçeneklerini belirtir.

  • prefix seçenek önbellek önek dizesini tanımlar.

Memcache Seçenekleri

Eğer kullanıyorsanız memcached server, ardından bazı ekstra yapılandırma seçenekleri eklemeniz gerekir. memcache sürücü user/config/system.yml file. Bu seçenekler altında tanımlanabilircache: grubu.

cache:
...
...
   memcache:
      server:localhost
      port: 8080

Redis Seçenekleri

Eğer kullanıyorsanız redis, daha sonra kullanarak bazı ekstra yapılandırma seçenekleri eklemeniz gerekir redis sürücü user/config/system.yml file. Bu seçenekler altında tanımlanabilircache: grubu.

cache:
...
...
   redis:
   	server:localhost
      port: 8080

Twig şablonu, twig sürücüsünü kullanarak kendi önbelleğe alma mekanizmasını kullanır. user/config/system.yml dosya.

twig:
   cache: true
   debug: true
   auto_reload: true
   autoescape: false

Gibi bazı seçenekleri vardır -

  • cache seçeneği, twig önbelleğe almayı true olarak ayarlayarak etkinleştirir.

  • debug seçeneği dal hata ayıklamasını etkinleştirir.

  • auto_reload seçeneği, değişiklikleri true olarak ayarlayarak yeniden yüklemek için kullanılır.

  • autoescape seçeneği, dal değişkenlerinden otomatik olarak çıkmak için kullanılır.

Önbelleğe Alma ve Olaylar

Önbelleğe alma etkinleştirildiğinde olaylar kullanılabilir. Bu, dışındaki tüm etkinlikler için etkinleştirilebilir:OnPageContentRaw, OnPageProcessed, OnPageContentProcessed, OnTwigPageVariables ve OnFolderProcessedEtkinlikler. Bu olaylar tüm sayfalarda ve klasörlerde kullanılabilir ve yalnızca olaylar işlenirken çalıştırılabilir. Bu olaylar, sayfa önbelleğe alındıktan sonra çalıştırılamaz.

Temaları ve eklentileri geliştirirken hata ayıklama ve günlüğe kaydetme bilgileri çok gereklidir. Grav, aşağıda açıklanan bazı özellikleri kullanarak hata ayıklama bilgilerini kullanır.

PHP Hata Ayıklama Çubuğu

Grav adı verilen bir araçla gelir Debug Barhata ayıklama bilgilerini görüntülemek için. Varsayılan olarak bu özellik devre dışı bırakılmıştır. Global olarak açabilir veya geliştirme ortamınız için system.yaml'yi kullanabilirsiniz .

debugger:
   enabled: true
   twig: true
   shutdown:
      close_connection: true

Hata ayıklayıcıyı etkinleştirdikten sonra true, aşağıdaki hata ayıklama çubuğunu aşağıda gösterildiği gibi görüntüleyebilirsiniz. Köşenin sol tarafında bulunan G sembolüne tıklayın.

İçinde debugçubuğunda, genel bellek kullanımını ve işlem için kullanılan süreyi sağ köşede görüntüleyebilirsiniz. Ayrıca ayrıntılı bilgi sağlayan birkaç sekmeden oluşur.

Mesajlar sekmesinde, Grav geliştirme sürecinizde hata ayıklamanıza yardımcı olacak mesajları görüntüleyebilirsiniz ve bilgiler bu sekmeye koddan gönderilecektir. $Grav['debugger']→addMessage($my_var) .

Zaman Çizelgesi sekmesinde, Yerçekimi zamanlamasının dökümünü görüntüleyebilirsiniz.

Hata Ekranı

Bir çalışma zamanında blok veya sayfayla ilgili hata mesajlarını görüntüler. Grav'da hatayı kolayca belirleyebilir ve hataları çok hızlı bir şekilde çözebilirsiniz. Aşağıdaki ekran görüntüsünde gösterildiği gibi ekranınızda görüntülenecek hata mesajları aşağıdadır.

In kullanıcı / config / system.yaml dosya, false olarak ayarlayarak hata sayfası devre dışı bırakabilir.

errors:
   display: false
   log: true

Kerestecilik

Günlük kaydı, kütüphanelerden ve uygulamalardan hataları ve durum bilgilerini bildirmek için kullanılır. Grav'da, aşağıda belirtildiği gibi birkaç önemli kayıt özelliği vardır.

$Grav['log']->info('My informational message'); $Grav['log']->notice('My notice message');
$Grav['log']->debug('My debug message'); $Grav['log']->warning('My warning message');
$Grav['log']->error('My error message'); $Grav['log']->critical('My critical message');
$Grav['log']->alert('My alert message'); $Grav['log']->emergency('Emergency, emergency, there is an emergency here!');

Tüm günlük mesajları, <klasör_adınız> /logs/Grav.log klasörü altında bulunan Grav.log dosyasında görüntülenecektir.

Bu bölümde, CLI'nin Grav'da nasıl çalıştığını anlayacağız. CLI içinde depolanan komut satırı arayüzü anlamına gelir bin/Grav. Gibi bazı görevleri yerine getirirclearing cache, oluşturma backup kopya vb.

CLI'ye erişim, farklı platformlarda farklıdır. Windows'ta şu yolla erişebilirsiniz:cmdMac'te şunlardan erişebilirsiniz: Terminalve Linux'ta kabuk kullanabilirsiniz. Windows'ta UNIX tarzı komutları kullanamazsınız. Bunları kullanmak için GIT ve GIT BASH sağlayan ve Windows'ta UNIX tarzı komutlar sağlayan msysgit paketini kurun .

Aşağıdaki komutu kullanarak Grav'daki mevcut komutları listeleyebilirsiniz -

$ bin/Grav list

Mevcut komutları aşağıdaki ekran görüntüsünde gösterildiği gibi görebilirsiniz -

Yeni Proje Oluşturma

Grav ile yeni proje oluşturmak çok basit. Grav örneğiyle yeni bir proje oluşturabilirsiniz.

  • Açın terminal veya console ve Grav klasörünüze gidin.

$ cd ../ProjectFolder/grav
  • Grav'unuz web sunucunuzun kök dizinine kurulacaktır. Grav'unuzun kök klasöründe kişi adlı bir klasör oluşturmak istiyorsanız, şu komutu kullanın -

$ bin/Grav  project-name  ../webroot/ contact

Gerekli tüm bağımlılıkları indirecek ve yeni bir Grav örneği oluşturacaktır.

Grav Bağımlılıklarını Yükleme

Bağımlılıkları kurarken Grav, eklentileri otomatik olarak kurar. error Eklenti, problems eklenti ve antimattertema. Bunları terminalinizde veya konsolunuzda aşağıdaki komutu kullanarak kurabilirsiniz -

$ cd ../webroot/myproject
$ bin/Grav install

Şimdi indirilen eklentileri ilgili klasörlerinde şu şekilde göreceksiniz:

  • ../webroot/ myproject/user/plugins/error

  • ../webroot/ myproject/user/plugins/problems

  • ../webroot/ myproject/user/themes/antimatter

Clearing Grav Cache

You can delete files and folders to clear the cache which are stored in the cache/ folder. To clear cache, you can use below command −

$ cd ../webroot/myproject
$ bin/Grav clear-cache

Create Backup

In Grav, you can back up your project stored under the root folder. As it won't use the database so there is no difficulty to take a backup. If you want to create the backup of your project called myproject (../webroot/myproject), then use the following command −

$ cd ../webroot/myproject
$ bin/Grav backup

You will see a zip file of the backup created under the backup/ folder.

Updating Composer

You can update the Grav composer which was installed via Github and installed manually using composer based vendor packages. The command is −

$ bin/Grav composer

GPM stands for Grav Package Manager which is used to install, update, un install and list the available plugins on the Grav repository. GPM executes the commands using command line interface such as terminal or cmd.

You can access CLI very easily. On Windows, you can access through cmd, on Mac you can access through Terminal and on Linux you can use shell. In windows, you can't use UNIX style commands. To use these just install the msysgit package which provides GIT and GIT BASH and provides UNIX style commands on Windows.

To list the available commands on the Grav repository type the command as −

$ bin/gpm list

You will receive the following −

You can help the commands by adding help to the line as shown below −

$ bin/gpm help install

You can find the version of PHP on the command line interface by using the following command −

$ php -v

How Does it work?

When you run the commands on the command line interface, GPM automatically downloads the required data from the GetGrav.org site. It includes all the details of available packages and also determines the packages that need to be installed and which packages needs to be updated.

When you are downloading the packages from the repository, the Grav repository gets cached locally and no request will be able to contact the GetGrav.org server after the cache has been generated.

Some commands come with the --force (-f) option, which forces to re-fetch the repository. Using this option, there is no need to wait for 24 hours cycle before cache gets cleared.

Commands

You can download the available packages from the Grav repository using some commands. To make use of the command, open your terminal and navigate to your root of the Grav folder and type as bin/gpm <command>.

Index

The index command is used to list the available plugins, themes in the Grav repository. Use the below command in your terminal to list out the available resources.

$ bin/gpm index

Each line defines the name of the plugin or theme, slug, version of plugin or theme and also displays whether it is installed or not.

Info

The info command is used to display the information about package such as author, version, date and time of last updated, repository of package, download link of package, license information etc.

Install

As the name implies the install command installs the required resources for the package from the Grav repository.

You can use the following command to install the required package.

$ bin/gpm install package_name

If you try to install an already installed package, then it informs what to do next.

If you type Y, it will overwrite on an already installed package and if you type N, it will abort the installation process.

Update

The update command informs about the package that need to be updated. Suppose if all packages are up to date, then it will say nothing to update.

$ bin/gpm update

Self-upgrade

The self-upgrade command is used to upgrade the Grav to the latest version. Use the following command to upgrade the Grav.

$ bin/gpm self-upgrade

If you are using the latest version of Grav, then it will display a message saying "You are already running the latest version of Grav" along with the date of release and the time as shown in the screen.

You can build Grav with different types of Development such as Grav Core, Grav Plugins, Grav Skeleton and Grav Themes.

Grav Core

Grav is a modern CMS in which writing content is simple and building pages is more friendly and intuitive. The Grav core specially talks about the system folder which controls everything about Grav and represents the qualities of Grav workflow and life cycle. It focuses mainly on pages which can be written in good manner. It focuses on your content and turns your content into navigable site.

Grav Plugins

Plugin is a piece of software that provides enhanced functionality which was not originally completed by Grav's core functionality. There are many plugins available on the Grav repository which shows functionality on the site.

Consider the following points relating to Grav plugins −

  • Grav itself is super-lean which adds only needed plugins for your site.

  • There is no need to wait for adding extra functionality that you want. To achieve this, just create a plugin to extend Grav.

  • Plugins are so flexible and powerful which display site map, blog archives, search engine, provides breadcrumbs etc.

Grav Skeletons

The Grav skeleton describes a sample site which contains Grav Core, plugins, pages, theme all together. The initial idea behind Grav was to build site very easily. All that is needed to develop a site is placed in a user folder. The skeleton of Grav comes with various dependencies such as plugins, theme, etc. and stored in a package which can be unzipped.

Grav Themes

Grav supports different types of themes ehich form an integral part of a Grav site. When you install Grav on your system, it comes with Antimatter theme. Most of the themes come with skeleton package or with sample pages. You can see the sample pages under the user/pages folder which provides similar experience as the skeleton package.

The installed theme requires appropriate twig templates for your pages. A theme is combination of theme and content which is equal to the entire site design. You can create your own twig templating engine according to your design.

Theme/Plugin Release Process

You can notice some of the points for your created theme or plugin which is added in the Grav repository.

  • It is an open source which is licensed by MIT.

  • It has the README.md file which specifies installation process and configuration of the project.

  • It contains blueprints.yaml file which includes information about resource and can be found at the root of each plugin and theme.

  • Contains CHANGELOG.md file which includes version of the theme or plugin and displays the information whenever changes made to the file.

  • Creating releases are better ways to place your completed theme or plugin on the GitHub. If there is no release, then you won't find your plugin or theme.

  • Add the details about your plugin or theme and do a test to ensure its working functionality.

ChangeLog Format

The changelog format is written in the Markdown syntax which keeps the content and visual display separate. It uses simple CSS which is displayed in the following format.

# vX.Y.Z
## 01/01/2015
1. [](#new)
   * New features added
   * Another new feature
2. [](#improved)
   * Improvement made
   * Another improvement
3. [](#bugfix)
   * Bugfix implemented
   * Another bugfix
...repeat...

GitHub Setup

GitHub is a largest open community which shares your projects with the users, get feedback and contribute to the repositories hosted on GitHub.

Clone the URL of external repository into single project folder on your local system. You can clone the external Git repository to new repository as shown in the steps below.

Open the command line and create folder called "my_project".

$ mkdir my_project
$ cd my_project $ mkdir Grav
$ cd Grav $ git clone https://github.com/getGrav/Grav.git
$ git clone https://github.com/Grav_project/Grav-plugin-error.git $ git clone https://github.com/ Grav_project /Grav-plugin-problems.git
$ git clone https://github.com/ Grav_project /Grav-theme-antimatter.git

Here Grav_project is a repository where you will get all the files and folders related to this repository will be saved in the /my_project/Grav folder. Grav includes dependencies such as error plugin, problems plugin and Antimatter theme.

You can setup the test site for Grav by using the bin/Grav new-project command. We need to develop the cloned code from the web root. So we have to symbolically link the related parts using -s flag to the bin/Grav new-project command.

Create one configuration file in a new folder called .Grav/ to find the repository by using the command and you need to create this under the root directory.

$ cd
$ mkdir .Grav $ vi .Grav/config

Navigate to your Grav folder and setup the symbolically linked site using -s flag.

$ cd ~/Projects/Grav/Grav $ bin/Grav my-project -s ~/www/Grav

Here, www is a root folder and Grav is the location where you're going to create the test site.

In this chapter, we will understand the lifecycle of Grav. Grav Lifecycle determines how Grav processes in order to extend the Grav via Plugins. The following diagram shows the flow of Grav lifecycle process.

The following four steps from the Grav lifecycle −

  • PHP Version

  • Loader class is initialized

  • Obtain Grav Instance

  • Call Grav Process

PHP Version

It checks the version of PHP to make sure that we are running the PHP version above 5.4.0.

Loader class is initialized

In the second step, the class loader gets initialized.

Obtain Grav Instance

  • If no instance exists, then it calls the load() method and adds Grav.

  • It initializes the debugger value and adds to the debugger.

  • It registers the log and the error handler.

  • It adds the uri, task, events, cache, session, plugins, themes, twig, taxonomy, language, pages, assets and base url.

  • It registers the stream and the config handler.

Call Grav Process

  • It initializes the configuration, Uri object, error handler, debugger and session.

  • After initializing, it starts buffering the output.

  • It initializes the timezone and the plugins and fires the onPluginsInitialized event.

  • Next it initializes the theme and fires the onThemeInitialized and onTask[TASK] events.

  • It initializes the assets and fires the onAssetsInitialized event.

  • It initializes the twig with the following actions −

    • Based on the configuration, it sets the twig template paths.

    • Handles the available language templates.

    • Next it fires the onTwigTemplatePaths event.

    • Loader chain and twig configuration is loaded.

    • Fires onTwigInitialized event.

    • It loads the twig extensions and fires onTwigExtensions event.

    • It sets the standard twig variables.

  • Next it initializes the pages.

    • It calls the buildPages() method.

    • If cache is good, then it loads pages from cache. If cache is not good then the recurse() method is called.

    • onBuildPagesInitialized event is fired in the recurse() method.

    • If a file is found as .md, the following actions are performed −

      • To load the file details, the init() method is called.

      • It sets the filePath, modified and id.

      • The header() method is called to initialize header variables.

      • The slug() method is called to set the URL slug.

      • The visible() method is called to set the visible state.

      • Based on the folder that starts with _(underscore), modularTwig() is set.

    • It later fires the onPageProcessed event.

    • recurse() the children if a folder is found.

    • It fires the onFolderProcessed event.

    • calls the buildRoutes() method.

    • For all pages the taxonomy is initialized

    • The route table is built for fast lookup.

  • The events onPagesInitialized and onPageInitialized gets fired.

  • Debugger CSS/JS is added to the assets.

  • Using Twig's processSite() method, we get the output.

    • The event onTwigSiteVariables is fired.

    • Gets the output of the page.

    • When page is not found or not routable then the event onPageNotFound is fired.

    • All Twig variables are set on twig object.

    • Template name is set depending upon the file/header/extension information.

    • render() method is called.

    • Returns the file format in HTML

  • It fires the onOutputGenerated event.

  • Set the HTTP headers.

  • Displays the output

  • The output buffer is flushed to the page.

  • The event onOutputRendered will get fire.

  • Closes the connection to client.

  • Lastly, it fires the onShutDown event.

When the content() method is called on page, then the following lifecycle occurs.

  • The event onPageContentRaw will get fire.

  • According to the Markdown and Twig settings, it processes the page.

  • It fires the onPageContentProcessed event.

YAML stands for YAML Ain't Markup Language which includes human readable content and often used in configuration files, blueprints (metadata information about resource) and page settings.

Features

Following are the features of YAML −

  • Compared to XML or JSON, YAML is less complex and provides same features.

  • It provides configuration settings without the need to learn complex code types such as CSS, JavaScript or PHP.

  • YAML describes data and content of the YAML file which can be easily translated to multiple language types.

Basic Rules of YAML

There are some basic rules of YAML which are used to reduce the ambiguity in multiple languages and editable programs.

  • You must end the YAML files with .yaml extension.

  • YAML must be case-sensitive.

  • YAML doesn't support the use of tabs. Instead of tabs, it uses spaces which are not supported universally.

Basic Data Types of YAML

YAML supports some basic data types which can be used with programming languages such as −

  • Scalars − strings or numbers.

  • Sequences − arrays or lists.

  • Mappings − hashes or dictionaries.

Scalars

Scalars are the basic data types that use strings or numbers on the pages to work with the data. It may be a boolean property (either yes or no), integer value such as 2 or string of text such as word or sentence or title of the website.

For instance −

string: "Grav"
integer: 10
float: 10.5
boolean: true

Sometimes scalars come with unquoted values like integer, float or Boolean. The string value uses punctuation which comes with single or double quotation marks which uses escaping to specify ASCII and Unicode characters.

Sequences

YAML represent sequences in the form of arrays or lists. It defines each item with opening dash (-) placed in the list as shown below.

For instance −

- Apple
- Orange
- Grapes

Suppose if you want to define nested sequence with the sub items, and then place a single space before each dash in the sub items.

For instance −

-
   - Apple
   - Orange
   - Grapes

If you want nested sequence within the nested list, then add some levels as shown below −

For instance −

-
   -
      - Apple
      - Orange
      - Grapes

Mappings

It is a way of defining keys along with the values.

For example, you can assign some value to a specific element as −

Sports: cricket

Here the value is "cricket" that maps with the key called "Sports". You can use this mapping with the sequence to specify the list of items for cricket; for example, we will define some player names for the value "cricket" making names as child and Sports: cricket as parent.

Sports: cricket
- Sachin Tendulkar
- Rahul Dravid
- M S Dhoni

Kullanarak bir form oluşturabilirsiniz. formeklenti bu bağlantıda mevcuttur . Form eklentisini arayın ve Grav klasörünüze yükleyin.

Bu eklentiyi şu komutu kullanarak da yükleyebilirsiniz: $ bin/gpm install Form. Grav kök klasörünüze gidin ve bu komutu yazın. Form eklentisini otomatik olarak indirecek ve gerekli bağımlılıkları kuracaktır.

Basit Bir Form Oluşturmak

YAML frontmatter sayfasında tanımlanabilen basit bir form oluşturabilirsiniz. Aşağıdaki bir form örneğidir -

---
title: Contact Form

form:
   name: contact

   fields:
      - name: name
         label: Name
         placeholder: Enter your name
         autofocus: on
         autocomplete: on
         type: text
         validate:
            required: true

      - name: email
         label: Email
         placeholder: Enter your email address
         type: email
         validate:
            required: true

      - name: message
         label: Message
         placeholder: Enter your message
         type: textarea
         validate:
            required: true

      - name: g-recaptcha-response
         label: Captcha
         type: captcha
         recatpcha_site_key: 6LelOg4TAAAAALAt1CjjjVMxFLKY8rrnednYVbr8
         recaptcha_not_validated: 'Captcha not valid!'
         validate:
            required: true

   buttons:
      - type: submit
         value: Submit
      - type: reset
         value: Reset

   process:
      - email:
         subject: "[Site Contact Form] {{ form.value.name|e }}"
         body: "{% include 'forms/data.html.twig' %}"
      - save:
         fileprefix: contact-
         dateformat: Ymd-His-u
         extension: txt
         body: "{% include 'forms/data.txt.twig' %}"
      - message: Thank you for getting in touch!
      - display: thankyou
---

Yukarıdaki kod, ad, e-posta, mesaj ve Captcha alanlarını içeren basit form sayfasını gösterir. Formu doldurduktan sonra bilgileri gönderdiğinizde, form ekleyerek işleyecektir.process kodda gösterildiği gibi YAML ön maddesi alanına.

process alanı aşağıdaki bilgileri kullanır -

  • email seçeneği gibi iki alan kullanır from alanı e-postanın göndericisini belirtir ve to alanı postanın alıcısını belirtir.

  • subject kullanır [feedback][entered mail] E-postanın girilen e-postaya gönderileceği seçenek.

  • E-postanın gövdesi, forms/data.html.twig tema klasöründe bulunan dosya.

  • Form giriş verileri, user/dataKlasör. Şablon,forms/data.txt.twig tema klasöründe bulunan dosya.

  • Altında bir alt sayfa oluşturun thankyou/ Bir kullanıcı formu gönderdiğinde o sayfaya yeniden yönlendirilecek olan alt klasör.

Aşağıdaki tabloda gösterildiği gibi, form eklentisiyle bazı alanları kullanabilirsiniz -

Sr.No. Alan tasviri
1

Captcha

Kullanıcının insan olup olmadığını belirlemek için hesaplamada kullanılan bir antispam alanıdır.

2

Checkbox

Basit bir onay kutusu görüntüler.

3

Checkboxes

Birden çok onay kutusu görüntüler.

4

Date and Datetime

Her iki alan da tarih ve tarihi zamanla birlikte görüntülemek için kullanılır.

5

Email

Doğrulamalı bir e-posta alanıdır.

6

Hidden

Gizli alanı belirtir.

7

Password

Şifre alanını belirtir.

8

Radio

Basit radyo düğmelerini görüntüler.

9

Select

Seçme alanı sağlar.

10

Spacer

Forma başlık, metin veya yatay çizgi eklemeye izin verir.

11

Text

Basit metin alanını görüntüler.

12

Textarea

Basit metin alanı alanını görüntüler.

13

Display

Giriş alanını değil, metni veya talimat alanını görüntüler.

Alanlar Parametresi

Her alan, formdaki görünümü özelleştirmek için kullanılabilecek aşağıdaki parametreleri kabul eder.

Sr.No. Parametre ve Açıklama
1

label

Etiket alanını tanımlar.

2

validate.required

Elemanı gerekli kılar.

3

validate.pattern

Doğrulama modelini belirtir.

4

validate.message

Doğrulama başarısız olduğunda mesajı görüntüler.

5

type

Alan türünü tanımlar.

6

default

Varsayılan alan türünü tanımlar.

7

size

Büyük, x-küçük, orta, uzun, küçük gibi alan boyutunu görüntüler.

8

name

Alan adını tanımlar.

9

classes

Css sınıfları ile string kullanır.

10

id

Alan kimliğini tanımlar.

11

style

Alanın stilini belirtir.

12

title

Alanın başlığını tanımlar.

13

disabled

Alanın devre dışı durumda olup olmadığını belirler.

14

placeholder

Kullanıcı bir değer girmeden önce giriş alanında görüntülenen kısa bir ipucudur.

15

autofocus

Sayfa yüklendiğinde bir giriş öğesinin otomatik olarak odaklanması gerektiğini belirtir.

16

novalidate

Form verilerinin gönderildiğinde doğrulanmaması gerektiğini belirtir.

17

readonly

Alanı salt okunur durum olarak belirler.

18

autocomplete

Kullanıcı alana yazmaya başladığında alandaki seçenekleri görüntüler ve değerleri daha önce yazılan değerlere göre görüntüler.

Bazı alanlar, aşağıdakiler gibi belirli parametreler içerir:

Sr.No. Parametre ve Açıklama
1

date and datetime

Bu alanlar kullanır validate.min ve validate.max minimum ve maksimum değerleri ayarlamak için.

2

spacer

Kullanır underline eklemek <hr> etiket, kullanarak metin değerleri ekler text ve kullanır title <h3> etiketi olarak.

3

select

Kullanır multiple birden çok değer eklemek için parametre.

4

select and checkboxes

Kullanır options mevcut seçenekleri ayarlamak için alan.

5

display

Kullanır contentiçeriği görüntülemek için parametre. Ayarlarmarkdown içeriği göstermek için doğru.

6

captcha

Kullanır recatpcha_site_key ve recaptcha_not_validated parametreleri.

Captcha ile ilgili not

Adlı alanın altında captcha bilgisi kodumuz var g-recaptcha-response aşağıda gösterildiği gibi -

- name: g-recaptcha-response
   label: Captcha
   type: captcha
   recatpcha_site_key: 6LelOg4TAAAAALAt1CjjjVMxFLKY8rrnednYVbr8
   recaptcha_not_validated: 'Captcha not valid!'
   validate:
		required: true

ReCaptcha, web sitenizi spam ve kötüye kullanımdan korumak için kullanılır. Kullanırrecatpcha_site_keyseçeneği ve widget'ı sitenizde görüntüler. ReCaptcha'yı kullanmak için reCaptcha belgelerine başvurmanız yeterlidir . ReCaptcha yanlışsa, bunu kullanarak mesaj gösterecektir.recaptcha_not_validated seçeneği.

Form Eylemleri

Eposta

Altından belirli seçenekler içeren bir e-posta gönderebilirsiniz. process aşağıda gösterildiği gibi alan -

- email:
	from: "{{ config.plugins.email.from }}"
	to: "{{ config.plugins.email.to }}"
	subject: "Contact by {{ form.value.name|e }}"
	body: "{% include 'forms/data.html.twig' %}"

İki alan içeren e-posta seçeneğini kullanır; from alanı, e-posta adresinin göndericisini ve toalanı, E-posta eklentisi yapılandırmasını kullanarak e-posta adresinin alıcısını belirtir. E-posta alanı ayrıca kullanırsubject konuyla girilen e-postaya bir e-postanın gönderildiği seçenek [İletişim kuran] [ad girildi] ve e-posta gövdesi forms/data.html.twig temanın dosyası.

Diğer Sayfaya Yönlendirme

Kullanarak başka bir sayfaya yönlendirebilirsiniz message ve display altında tanımlanan seçenekler process alan.

process:
   - message: Thank you for getting in touch!
   - display: thankyou

messageseçeneği, kullanıcı gönder düğmesine tıkladığında görüntülenecek bir mesaj ayarlar. Bir kullanıcı formu gönderdiğinde, başka bir sayfaya yönlendirilmelidir. Altında bir alt sayfa oluşturunthankyou alt klasör nerede form.mddosya saklanır. Form gönderildikten sonra sayfaya yönlendirilecek ve yukarıdaki mesaj görüntülenecektir.

Alt sayfa aradı thankyou/formdata.md aşağıdaki içeriğe sahip olacak.

---
title: Email sent
cache_enable: false
process:
   twig: true
---

## Your email has been sent!

Formu gönderdiğinizde, eklenti kullanıcıya bir e-posta gönderecek ve veriler, data/folder.

Kayıt etmek

Verileri, altında kaydedilen bir dosyaya kaydetmek için kullanılır. user/data Klasör.

Örneğin -

process:
   - save:
      fileprefix: contact-
      dateformat: Ymd-His-u
      extension: txt
      body: "{% include 'forms/data.txt.twig' %}"

Veriler, txt uzantısıyla metin biçiminde saklanacaktır. Vücut,templates/forms/data.html.twig temanın dosyası.

Aşağıdaki ekran basit bir form göstermektedir -

Web sitesi barındırma olarak da bilinen barındırma, bir web sitesini koruma ve düzenleme sürecidir ve web sitelerine World Wide Web üzerinden erişim sağlar. Basit bir deyişle, İnternetteki web siteleri için bir hizmet sağlama platformudur.

Grav, farklı türde barındırma hizmetlerini destekler -

  • Rochen Web Hosting

  • WireNine

  • Crucial Web Hosting

  • Arvixe

  • SiteGround

  • Dreamhost

Rochen Web Hosting

İkisi için de kullanılabilir GetGrav.org ve RocketTheme.comuzun vadeli barındırma sağlayıcısı olarak. Grav performansını artırmak için SSD sürücüleri, Litespeed web sunucularını ve Intel XEON işlemcileri kullanır. İki tür seçenek sunar; BiriShared barındırma ve diğeri Burst barındırma.

Rochen Web Hosting hakkında daha fazla bilgi için bu bağlantıya tıklayın .

WireNine

WireNine, 665'ten fazla ülkedeki müşteriler için güvenilir web barındırma hizmetleri sunar. Sunucunun işlevselliğini geliştirmek için Intel Xeon E5 v3 CPU'lar, DDR4 ECC ram ve yedekli RAID SSD depolaması kullanır. % 100 çalışma süresi sağlamak için maksimum güvenilirlik ve kararlılık sağlar. CloudLinux, Litespeed, MariaDB, PHP, Ruby, Python, Perl gibi optimize edilmiş yazılımları içerir.

WireNine barındırma hakkında bilgi için bu bağlantıyı ziyaret edin .

Önemli Web Hosting

Daha çok hız ve desteğe odaklanan başka bir web barındırma türüdür. Grav performansını artırmak için SSD sürücüleri, Litespeed web sunucularını ve Intel XEON işlemcileri kullanır.

Bu bağlantıdan Crucial Web Hosting hakkında daha fazla bilgi edinebilirsiniz .

Arvixe

Arvixe, benzersiz güvenilirlik, kalite ve uygun fiyatın bir kombinasyonu ile web barındırma sağlayan bir web barındırma türüdür. Web barındırma alanında iyi işlevler sağladığı için çok sayıda web barındırma ödülü kazandı.

Arvixe Web Hosting hakkında daha fazla bilgi için bu bağlantıya tıklayın .

SiteGround

Joomla, WordPress, Magento ve diğer web uygulamaları için barındırma çözümleri sağlar. Sloganı varWeb Hosting Crafted With Care Web barındırma planlarını dikkatli bir şekilde yöneten ve web sitenizin daha hızlı çalışmasını sağlayan yeni teknikler sağlayan.

SiteGround barındırma hakkında bilgi için bu bağlantıyı ziyaret edin .

Dreamhost

Kişisel veya işle ilgili web barındırma ihtiyaçlarınıza daha fazla işlev sağlayarak özelliklerin listesini sağlar. Ultra hızlı SSD'lere ve 64GB RAM'e kadar yeni ayrılmış sunuculara sahiptir.

Dreamhost Web Hosting hakkında daha fazla bilgi için bu bağlantıya tıklayın .

Grav'ın yanlış yapılandırılması nedeniyle sunucu hatası oluşuyor. Sunucu dahili bir hatayla karşılaştığında veya beklenmedik bir şey olduğunda, Grav sayfayı sunamaz ve kurtaramaz.

Sunucu üretim modunda çalışıyorsa, bilgileri kullanıcıdan gizlemek için bir sunucu hata mesajı görüntülenir. Tüm hata mesajları <klasör_adınız> /logs/Grav.log klasörü altında bulunan Grav.log dosyasına kaydedilir .

Aşağıda, sunucu hatasına neden olabilecek nedenlerden bazıları verilmiştir -

  • Güncel olmayan yapılandırma
  • Yanlış dosya izni
  • Geçersiz biçimlendirilmiş yapılandırma dosyaları
  • Grav tarafından bilinmeyen dosya sistemindeki değişiklikler

Güncel olmayan yapılandırma

Yapılandırmanın güncel olup olmadığını kontrol etmek için önbelleği temizleyebilirsiniz. Önbelleği temizlemek için aşağıdaki komutu kullanın.

bin/Grav clear-cache

Kurulum ve yapılandırma sorunları

Kurulum ve yapılandırma ile ilgili sorunlar şunlardır:

  • Yapılandırma Sorunları
  • Yükleme Sorunları
  • Sistem gereksinimleri
  • Dosya İzinleri

Genel olarak, permissionbarındırma ortamınızda bir şeyler yapmaya izin verme sürecidir. İzin, sunucudaki dosyalara okuma veya yazma erişimini veya dosya sistemindeki dosyaları düzenlemeyi içerir. Grav, önbellek ve günlük dosyaları oluşturmak için dosya sistemine yazması gereken düz dosya tabanlı bir CMS'dir.

Grav üç ana senaryo altında gelir -

PHP / Webserver, dosyaları düzenleyen aynı kullanıcıyla çalışır

Bu senaryo, çoğu paylaşılan barındırma kurulumunda ve ayrıca yerel geliştirme için harika çalışıyor. Özel web barındırıcısında, bu yaklaşımın yeterince güvenli olduğunu düşünemiyoruz.

PHP / Web sunucusu farklı hesaplarla ancak aynı grupla çalışır

İle 775 ve 664 kullanıcı ve PHP / Websunucusu hesabı arasında paylaşılan grubunu kullanarak izinleri, iki farklı hesaplar var sağlayabilirsinizRead/Writedosyalara erişim. Kök üzerinde uygun izinlerle umask 0002'yi ayarlayarak yeni dosyalar oluşturabiliriz .

Farklı hesaplar, izinleri manuel olarak düzeltin

Bu yaklaşım farklı hesaplara sahip olacak ve dosyaların sahipliğini ve iznini güncelleyerek PHP / Web sunucusu kullanıcısının Read/Write dosyalara erişim.

Aşağıdaki basit koddur permissions-fixingkabuk betiği. Bu dosyayı kurulum için çalışan gruba göre düzenleyebilirsiniz.

#!/bin/sh
chown joeblow:staff .
chown -R joeblow:staff *
find . -type f ! -path "./bin/" | xargs chmod 664
find . -type f -path "./bin/" | xargs chmod 775
find . -type d | xargs chmod 775
find . -type d | xargs chmod +s
umask 0002
  • chown joeblow: staff dizinin grubunu ve kullanıcısını joeblow ve staff olarak değiştirmek için kullanılır.

  • chown -R joeblow: staff * satırı dosyaların ve alt klasörün sahipliğini joeblow ve personele değiştirir.

  • Hat bul. -tip f! -yol "./bin/" | xargs chmod 664 , dizindeki tüm dosyalar için diğerleri için Okuma ve grup ve kullanıcı için Okuma / Yazma olarak 664 izin ayarlar .

  • Hat bul. -tipi f -yol "./bin/" | xargs chmod 775 , dizinden diğerleri için RX'e ve grup ve kullanıcı için RWX'e kadar tüm dosyalar için 775 izin ayarlar .

  • umask 0002 , 664 ve 775 izinleriyle yeni dosyalar oluşturmak için kullanılır.