Bootstrap kullanan çok düzeyli MODX menüsü. PdoMenu - belirli sayfalarda MODX Modx menülerinde menüler oluşturma
Bugün Wayfinder snippet'ini (Wayfinder snippet dokümantasyonu) kullanarak blogumuz için bir menü yapacağız. Blogumuzdaki üst gezinme ve ana gezinme iki bölümden oluşur:
- Mobil
- Ova
Bu nedenle, navigasyonu iki kopya halinde yapacağız). Böylece, ana navigasyonumuzu parçalara ayıracağız. Belgelere göre 4 parça almalısınız (boşlukları kaldırmayı unutmayın):
&outerTpl=`wayOuterTpl` - ana listenin öbek sarmalayıcısı
&innerTpl=`wayInnerTpl` - açılır liste için yığın sarıcı
&rowTpl=`wayRowTpl` - liste öğelerini gösteren öbek
&parentRowTpl=`wayHasChildTpl` - Üst liste öğelerini gösteren yığın
Ve işte başlık yığınındaki snippet'e yapılan çağrı:
[ ]
&startId=`0` - pasaj geçişinin başlangıcını, bizim durumumuzda site kökünden ayarlayın.
&level=`2` - menümüzdeki seviye sayısı.
Bir sonraki adım, mobil menümüzü görüntülemektir. İlke yukarıda belirttiğim gibi, burada da 4 parçaya ihtiyacımız var.
&outerTpl=`wayOuterMobileTpl` - ana listenin sarıcı öbeği.
&innerTpl=`wayInnerMobileTpl` - dahili liste sarıcı yığın.
[ [+wf.sarmalayıcı] ]
&rowTpl=`wayRowMobileTpl` - Liste öğelerini gösteren yığın.
[ [+wf.sarmalayıcı] ]
&innerRowTpl=`wayInnerRowMobileTpl` - Dahili liste öğelerini görüntüleyen yığın.
[ [+wf.sarmalayıcı] ]
Wayfinder çağrısı şuna benzer:
[ ]
Her şey aynı, sadece parçalar değişti. Artık mobil navigasyonumuz var, Opera ve Chrome için Duyarlı Web Tasarım Test Cihazı aracıyla test edebilirsiniz.
İşte başlık öbeği için tam kod:
Büyük Şeyler... Küçük Paketler
Navigasyonumuz hazır! Videoda ayrıca bir blogda kategori menüsü oluşturmaya da baktık. Prensip aynı olduğu için burada dikkate almadım, videoyu izleyin) Sonraki derslerde görüşmek üzere!
Yeni başlayanlar için MODx Revolution ders 8'e başlayalım. MODx Devrimini öğrenmek için bir site yaptığımızı hatırlatırım. Son derste, web sitemize işlevsellik eklememizi sağlayan PHP kod parçaları olan snippet kavramına baktık. Bu eğitimde, özel bir pasaja - Wayfinder'a bakacağız ve onu sitemiz için dinamik bir menü oluşturmak için kullanacağız.
Yön Bulucu nedir?
Yön bulucu site ağacınızdaki kaynaklara giden bağlantıların sıralanmamış bir listesini görüntüleyen bir parçacıktır, liste çıktısının türü parçacık çağrısına ve bu çağrının parametrelerine bağlıdır. Genel anlamda bu, şablonunuzda Wayfinder'a bir çağrı yaptığınızda, şablon içinde verilen parametrelerle eşleşen kaynakları aramaya başlar ve bu kaynaklara yönelik bağlantıların bir listesini sıralanmamış bir liste biçiminde veya biçiminde döndürür. siz belirtin
Wayfinder'ı neden kullanmalısınız?
Wayfinder'ı genellikle dinamik site gezintisi, yani bir menü oluşturmak için kullanırım. Çoğu HTML şablonu menü oluşturmak için sırasız listeler kullandığından, Wayfinder bunun için mükemmel bir araçtır. Bir site oluştururken, daha önce statik bir HTML sitesinde yaptığınız gibi URL'lerinizi gezinme menüsüne özenle ekleyebilirsiniz. Aynı zamanda, her sayfa silmeniz veya oluşturmanız gerektiğinde, menünüzde uygun değişiklikleri yapmanız, URL'leri değiştirmeniz gerekir. Menülerinizi dinamik olarak oluşturmak için Wayfinder snippet'ini kullanmak, değişiklikleri otomatik olarak algılayıp menünüzü buna göre değiştirdiği için bu baş ağrısını önler.
Wayfinder oldukça esnektir ve menüye hangi kaynakları dahil edeceğinizi veya menüden çıkaracağınızı, menü şablonunun ne olduğunu, sitenizin menüsünün ne kadar derin olduğunu tanımlamanıza olanak tanır. Sınırlarınız HTML/CSS kodunuz tarafından belirlenir.
Wayfinder nasıl kullanılır?
Bir önceki derste bahsettiğimiz gibi, snippet'leri çağırmak için kullanılan sözdizimi şöyle görünür: [[!bazı snippet]]
Bu sadece basit bir çağrı ve yeterli değil, bunun dışında bu çağrının bazı özelliklerini tanımlamamız gerekiyor. Wayfinder söz konusu olduğunda, özelliklerde tanımlanması gereken minimum değer, Wayfinder'ın kaynak ağacında kaynaklar listesini oluşturmaya başlaması gereken yerdir. Bu nedenle, Wayfinder snippet çağrısında en az bir parametre belirtilmelidir - ilk kimlik. Bu durumda Wayfinder snippet'ine yapılan temel çağrı şöyle görünür:
Bu çağrı, Wayfinder'a ağacın kökünden başlamasını söyler ( İD 0, sitenin kökü anlamına gelir) ve yayınlanan ve onay kutusunda bir onay işareti olmayan tüm kaynakları gösterir. Menülerden Gizle (Menüden Gizle).
Kullandığımız şablona bakarsak, birkaç öğe ve açılır liste içeren bir üst menü görebiliriz.
Bu menüyü oluşturan şablona ve koda bir göz atalım:
Gördüğünüz gibi, bu iç içe sıralanmamış bir listedir. Bu kodu basit bir Wayfinder çağrısıyla değiştirelim ve ne olacağını görelim. Yukarıdaki kodu silin ve yerine yapıştırın:
[[!Yol Bulucu? &startId=`0` ]]
Benimle aynı şablonu kullanıyorsanız, kodunuz şuna benzer:
Şablonu kaydedin ve ana sayfaya bakın, şöyle görünmelidir:
Fantastik! Birkaç öğeye sahip olan önceki menümüzün yerini artık tek bir öğeden oluşan basit bir menüye bıraktığını görebilirsiniz - Ana Sayfa. Bu bize Wayfinder'ın beklendiği gibi çalıştığını ve sitemizden bir sayfa alıp başlığını bir menü öğesi olarak gösterdiğini söyler.
Birkaç kaynak daha oluşturalım. 3 alt sayfalı (MODx, Öğreticiler, İletişim ve SSS sayfaları) bir Hakkında sayfası ekleyeceğim. Siteniz için herhangi bir kaynak veya sayfa oluşturabilirsiniz. Bu alıştırmanın amacı, Wayfinder'ın gösterecek bir şeyi olması için bazı kaynaklar yaratmaktır.
Sayfa oluşturmayı bitirdim ve site kaynak ağacım şöyle görünüyor:
Şimdi birkaç sayfamız var, Wayfinder'ı çağırmanın sitemiz için nasıl bir menü oluşturacağını görelim:
İyi haber şu ki, tüm sayfalarımız menüde göründü ve her menü öğesine tıklayarak ilgili sayfaya ulaşıyoruz. (Bu öğeyi test etmek için her sayfaya biraz metin ekleyin, örneğin Hakkında sayfasında "Bu bir Hakkında sayfasıdır" ekleyebilirsiniz ve sayfa açıldığında bu mesaj görünecektir. Bunun için bir şablon tanımlamamız gerektiğini unutmayın. her sayfa, ama şu anda bunun için endişelenmeyeceğim).
Kötü haber şu ki, menü biçimlendirmesi bozuldu ama düzeltebiliriz. Web sayfasına sağ tıklayın ve kaynak koduna bakın (veya bunun için firebug kullanın), şimdi göreceksiniz Yön bulucu HTML'yi şu şekilde oluşturur:
- Ev
- Hakkında
- MODX İYS
- Kodlama Pedi
- Blog
- Hizmetler
- Bize Ulaşın
- Öğreticiler
- SSS
Gördüğünüz gibi, birkaç istisna dışında ilk statik kodumuza çok benziyor. İlk olarak, Wayfinder oluşturuldu
- sınıfsız öğe sf menüsü statik kodumuzda kullanıldı. Şablonun CSS ile çalışması için bu sınıfa ihtiyacı var. Şu da görülüyor ki
- öğelerin parametresi var açıklık, orijinal statik koddaki bağlantı metin öğelerine atıfta bulunur ve Wayfinder'ın oluşturduğu kodda yoktur. Ayrıca, statik HTML kodumuzun bir sınıfı vardır. acurrent-sayfa-öğesi, Wayfinder snippet kodumuzda bulunmayan. Tüm bu eksik parçalar menümüzün çirkin görünmesine neden olur.
Wayfinder snippet çıktı stili nasıl özelleştirilir
Wayfinder'ın nasıl kod ürettiğine baktığımızda tamamen doğal bir soruyla karşılaşıyoruz: "Menüyü ihtiyacımız olan biçimde görüntülemek için eksik kod parçalarını nasıl ekleyeceğiz?" Cevap çok kolay, Wayfinder snippet'inin çıktısını biçimlendirmek için şablon parçaları kullanıyoruz.
Wayfinder esnek bir araçtır ve parametrelerin yardımıyla çıktının görünümünü tanımlayabilirsiniz. Bazı genel seçenekler, menüyü hangi düzeyde oluşturmaya başlayacağınızı, hangi öğelerin menüden çıkarılacağını vb. belirlemenizi sağlar. Diğer seçenekler, menünüz vb. için şablon html kodunu ayarlamanıza izin veren şablon seçenekleridir. İkincisinin açıklamaları resmi belgelerde bulunabilir - http://rtfm.modx.com/display/ADDON/Wayfinder.
Not al: bazı Wayfinder seçeneklerinin varsayılan bir değeri vardır.
Bu, örneğin, Wayfinder tarafından oluşturulan menüde Ana sayfa öğesinin neden “ sınıf adına sahip olduğunu açıklar. ilk aktif". Bu varsayılan sınıftır, ancak şablon parçalarında kendi sınıflarımızı tanımlayarak onu geçersiz kılabiliriz.
Bu eğitimde birkaç Wayfinder seçeneği kullanacağız, ancak tüm potansiyellerini hissetmeniz için hepsini öğrenmenizi ve mümkün olduğunca çok pratik yapmanızı tavsiye ederim. Wayfinder'ın varsayılan parametreleri resmi web sitesinde açıkça belgelendiğinden, onlardan burada bahsetmek aptalca olur. Çeşitli menülerle çalışırken bunları daha fazla kullanacağız.
Menü şablonuna başlamak için bazı mini şablonlar oluşturalım ve bunları parçalar halinde saklayalım. Bu parçalarda HTML kodunu kullandığımızı ancak dinamik öğeleri değiştirdiğimizi göreceksiniz. yer tutucular(veya yer tutucular sözdizimi şuna benzeyen) olarak da adlandırılırlar: [[+yer tutucu]]. Kullandığımız yer tutucular Wayfinder snippet'ine özeldir ve tanımları adından bellidir, ancak daha eksiksiz yardım için her zaman MODx belgelerine başvurabilirsiniz.
İşte şablonumuzu oluşturmak için kullanacağım parçalar:
7'si 1 aradamenüDış- dış ul kabımız için HTML kodunu içerecektir.
Dış ul için bir sınıf eklediğimi görebilirsiniz. Bunu yapmanın alternatif bir yolu, wf.classes yer tutucusunu kullanmak ve ardından parametreyi kullanarak sınıf adını geçerli yol bulucu çağrısına eklemektir. dış sınıf. Ancak basit olması için birinci yolu kullanalım, ancak ikisi de iyi çalışacaktır...
7'si 1 aradamenüSıra– birinci seviye menü öğelerinin HTML kodunu içerecektir
- [[+wf.linktext]][[+wf.wrapper]]
- [[+wf.linktext]][[+wf.wrapper]]
- . Snippet'i yeniden yazmayacağız, ancak sınıfları stillerde değiştirmek sorun değil.
- Liste, tablo, resimler, simgeler vb. şeklinde menü.
- statik menüler
- Çeşitli efektlere sahip menüler (açılır menüler, açılır menüler vb.)
- Site Haritası
- [[+wf.linktext]][[+wf.wrapper]]
- wf.classes - Wayfinder seçenekler kümesinden (class="") özniteliğinden alınan sınıfları görüntüler
- wf.classnames - sınıf adlarını görüntüler (class="" olmadan)
- wf.wrapper - dahili içeriğin çıktısı (satır).
- wf.classes - sınıf çıktısı (class="") özniteliği dahil
- wf.classnames - karşılık gelen sınıfların çıktısı (class="" olmadan)
- wf.link - menü bağlantısı için href="" özniteliğinin değeri
- wf.title - &titleOfLinks parametresinde belirtilen alandan bağlantı için başlık metninin adı
- wf.linktext - &textOfLinks parametresinde iletilen alanda belirtilen aktif bağlantı için metin
- wf.wrapper - alt menü gibi iç içeriğin çıktısını alır
- wf.id - benzersiz öznitelik kimliği çıktısı. Bu yer tutucunun bir değer alabilmesi için &rowIdPrefix parametresini belirtmeniz gerekir. Değer, önek + docId'dir.
- wf.attributes - Geçerli öğe için bir nitelik referansı görüntüler
- wf.docid - geçerli öğenin belge kimliği
- wf.description - geçerli öğenin açıklaması
- wf.level - mevcut yuvalama seviyesi
- [[+wf.linktext]][[+wf.wrapper]]
- [[+wf.linktext]] - [[+wf.description]] [[+wf.wrapper]]
[[+wf.title]]
[[+wf.title]]
- [[+menutitle]][[+sarmalayıcı]]
- [[+menutitle]] ([[+çocuklar]]) [[+sarmalayıcı]]` &countChildren=`1` ]]
Buradaki ana fikir, etiketi eklemiş olmamdır. orijinal statik HTML kodundaki gibi menü bağlantısının metnine. Ayrıca wf.classes yer tutucusunu da ekledim ve bu, geçerli sayfa için sahip olduğumuz varsayılan "etkin" sınıfı geçersiz kılacak bir sınıf tanımlamama izin verecek.
7'si 1 arada menüİç– iç ul kaplarının HTML kodunu içerecektir
- [[+wf.sarmalayıcı]]
7'si 1 aradamenüİç Sıra– dahili düzeylerdeki öğe satırları için HTML kodu içerecektir
İşte bu kadar, gördüğünüz gibi artık şablon parçalarımız yerinde (sipariş için ayrı bir kategoriye koydum):
Artık Wayfinder çağrısını değiştirebiliriz, böylece Wayfinder çıktısı için bu mini şablonları kullanabiliriz. Şablon seçenekleri listesine bir göz atarsanız (http://rtfm.modx.com/display/ADDON/Wayfinder'ı gözünüzün önünde açmanız veya yazdırıp ekrana yakın tutmanız yararlı olacaktır), göreceksiniz ki Parçalarımı karşılık gelen snippet çağrı parametrelerine benzer şekilde çağırdım. Bunu rahatlık için yaptım, aramamı oluşturmaya başladığımda neyin ne olduğunu takip etmeme yardımcı oluyor. Parametreleri ekleyelim ve parçalarımızı çağıralım. Wayfinder'a yapılan çağrı şimdi şöyle görünecektir:
[[!Yol Bulucu? &startId=`0` &outerTpl=`7in1menuOuter` &rowTpl=`7in1menuRow` &innerTpl=`7in1menuInner` &innerRowTpl=`7in1InnerRow` &hereClass=`current_page_item` &firstClass=`` &lastClass =`` ]]
Parametre değeri kesme işaretleri (`) içine alınır, tek tırnak işaretleri (') içine alınmaz.
Tamam, hadi bu meydan okumaya bir göz atalım. Wayfinder'ın istediğimiz HTML'yi doğru sınıflarla çıkarması için parçalarımızı çağırmak üzere şablon oluşturma seçeneklerini kullandığımızı görebilirsiniz. Bir çağrılabilir tanımladım buradaSınıf parametre ve ona bir değer verdi geçerli_sayfa_öğesi statik HTML şablonuyla eşleştirmek için. Parametreleri bıraktığımı görebilirsiniz. birinci sınıf Ve son sınıf boş. Bunun nedeni, HTML şablonumun ilk ve son menü öğesi için bir sınıf belirlememesi, bu nedenle çakışmayı önlemek için içlerindeki boş satırların üzerine yazdım.
Menümüzün tam istediğimiz gibi göründüğü görülüyor. Açılır menüde doğru stiller kullanılır. Kaynak koduna bakarsanız, oluşturulan Yön bulucu'om HTML kodu tanınmayacak kadar değişti:
Bu kod, şablonumuzun orijinal statik koduyla eşleşir, ancak çağrılarak oluşturulmuştur. Yön bulucu.
ile kullanabileceğiniz birçok başka seçenek vardır. Yön bulucu Menülerinizi oluşturmak için. Aşağıdaki eğitimlerde, karmaşık menülere ve bunların Wayfinder'a nasıl entegre edileceğine bakacağız. Özetlemek gerekirse, sitemiz artık bir şekil aldı ve işlevsel ve dinamik bir menüye sahibiz.
Dinamik bir menü oluşturmak için hazır bir snippet kullanacağız. Yol bulucu. Bir snippet, umarım önceki eğitimlerden hatırladığınız gibi, şablonumuza ekleyebileceğimiz bir Php kodu parçasıdır. Parçalardan farkı yalnızca kodda ve çağrı yöntemindedir. Bir parçayı çift kaşlı ayraç kullanarak çağırırsak, parçacıklar da böyle kullanılarak çağrılır. [!Snippet_name!]- önbelleğe alınmamış çağrı veya benzeri [[ParçaAdı]]- önbelleğe alınmış çağrı. Her snippet kodu şununla başlamalıdır: ama bitti ?> . Ayrıca her snippet'e işleyebileceği özel parametre değerleri de geçirilebilir. MODx, gelecekte kullanacağımız birkaç hazır snippet'e sahiptir.
pasaj Yön bulucu MODx için bağlantı listelerini düzenlemeye yarar. Sitemizin menüsü bu tür bağlantıların bir listesidir. Önce menümüzü görüntülemekle görevli bir kod parçası bulalım. Menü bir yığın halinde BAŞLIK, işte burada:
Bu kodu kesip yerine yazalım:
((MENÜ))
Ve kodu yeni bir yığına yapıştırın MENÜ, yazdığımız parçanın açıklamasında site menüsü. Şimdi bu kodu inceleyelim.
Web sitemizin menüsü, basit, sıralanmamış bir listedir ve bir kapta yer alır. id="templatemo_menu". Bu listeyi kapsayıcıdan çıkaralım ve bunun yerine snippet çağrımızı ekleyelim:
&startId=`0` 0 değerine sahip bir parametredir ve parçacığa işlenen belgelerin bulunduğu klasörün kimliğini söyler. Menüde görüntüleyeceğimiz tüm dokümanlarımız kök klasördedir, kök klasör ID'si sıfırdır. Bakalım elimizde ne var.
Menümüz çalışıyor, yalnızca etkin öğe artık beyazla vurgulanmıyor:
Bunun neden olduğunu anlamak için sayfanın kaynak koduna bakmamız gerekiyor. Mozilla Firefox'ta şu şekilde yapılır: Görüntüle >> Sayfa Kaynak Kodu veya sadece klavye kısayoluna basarak Ctrl+U. Menümüzün kodunu buluyoruz:
Aktif öğenin kaynak kodunda olmasına dikkat edin. sınıf = "geçerli", ve snippet'imiz otomatik olarak etkin öğeye atar sınıf = "aktif". Ayrıca, kaynak kodda sınıfın etikete uygulandığı anı da fark ediyoruz.
ve şimdi etikete
C:/xampp/htdocs/site/www/assets/templates/ klasöründe dosyayı buluyoruz templatemo_style.css ve Notepad++ ile açın. Bu dosyada mevcut sınıfın bir açıklamasını arıyoruz, içinde yer almaktadır. 198 astar:
#templatemo_menu li .current(
sol dolgu: 40px
renk: #ffffff;
}
sınıfı değiştir akım Açık aktif, etikete yeniden atamayı hatırlayarak :
#templatemo_menu li.aktif bir (
sol dolgu: 40px
renk: #ffffff;
}
Dosyayı kaydediyoruz. Ne olduğunu görelim.
Menümüz tam olarak tasarımcıların amaçladığı gibi çalıştı. Artık ana menümüzü kullanarak sitemizin sayfaları arasında gezinebiliriz. Kök klasöre başka belgeler eklerken, bunlar otomatik olarak menümüzde görüntülenecektir. İstenmeyen belgelerin menüde görüntülenmesini önlemek için işaretlerini kaldırın. Menüde göster. Parametreyi kullanarak istenmeyen bir öğenin hariç tutulmasını zorlayabilirsiniz. &excludeDocs=`virgülle ayrılmış, hariç tutulacak kimlik belgelerinin listesi`.
Menünün sonraki derslerde oluşturacağımız alt belgeleri göstermemesi için snippet çağrısına bir parametre ekleyelim. seviye Menüdeki seviye sayısını belirleyen , tüm seviyeler varsayılan olarak görüntülenecektir, onu yalnızca bir seviye ile sınırlayacağız:
Yön bulucu MODX için bağlantı listelerini düzenlemeye yarar. Şablon desteği sayesinde, listeleri gerekli herhangi bir biçimde görüntülemenizi sağlar:
&rowTpl=`rowTpl`
&outerTpl=`outerTpl`
&hereClass=`aktif`
&rowClass=`eNav_li`]]
Parçacık seçenekleri:
&startId- üst sayfanın kimliği, 0 belirtirseniz, sitenin kökünden olacaktır. Varsayılan değer, etkin sayfanın kimliğidir.
&ekranBaşlat - menü başlığında startId ile belgeyi göster, varsayılan olarak yanlış
&seviye- yuvalama derinliği, varsayılan 0 - tüm düzeyler
&sınır- çıktıdaki sayfa sayısını sınırlayın (varsayılan 0 - sınır yok)
&yok sayGizli- "Menüde göster" sayfasının onay kutusunu yok sayın, örn. 1 belirtirseniz, tüm sayfaları görüntüler. Varsayılan değer 0'dır. Yalnızca "Menüde göster" onay kutusunun işaretlendiği sayfalar görüntülenir.
&f - anlık çıktının yerini alan ikamenin adı. Varsayılan 0'dır.
&hata ayıklama- hata ayıklama modu (varsayılan 0)
&hideAlt Menüler - sadece aktif alt menüyü genişlet (varsayılan 0)
&kaldırYeniSatırlar- çıktıdaki satır sonu karakterini kaldırır (varsayılan 0)
&bağlantılarınmetni- menü bağlantısının adı için. Olası seçenekler:menü başlığı, kimlik, sayfa başlığı, açıklama, ebeveyn, takma ad, uzun başlık, giriş metni . Varsayılan menü başlığı
&bağlantıların başlığı- menü bağlantısının başlığı için Seçenekler:menü başlığı, kimlik, sayfa başlığı, açıklama, ebeveyn, takma ad, uzun başlık, giriş metni. Varsayılan sayfa başlığı
&rowIdÖnek- her öğe için kimliği (rowIdPrefix + docId) ayarlar. varsayılan 0
&includeBelgeler- menüye dahil edilecek virgülle ayrılmış belgelerin kimliği (varsayılan olarak belirtilmez)
&hariç tutBelgeler - Menüden çıkarılacak virgülle ayrılmış belgelerin kimliği (varsayılan olarak 0)
&bağlamlar- menü oluşturma bağlamı. Varsayılan geçerli.
&startIdContext - Sonucu oluşturmak için belgelerin alındığı bağlam tanımlayıcısı.
&yapılandırma - Wayfinder yapılandırmasını saklamak için harici PHP dosyası (örnek: core/components/wayfinder/configs).
&şema - URL oluşturma biçimi. Olası değerler (makeURL API çağrısına göre):
1: (varsayılan) site_url'ye göre URL;
0: http'ye bakın;
1: https'ye bakın;
full: site_url ile başlayan mutlak URL;
abs: base_url ile başlayan mutlak URL;
http: http şemasında zorunlu kılınan mutlak URL;
https: https şemasında uygulanan mutlak URL.
&göre sırala - Sıralanacak alan. (varsayılan menü dizini)
Seçenekler:
İD, menutitle, pagetitle, introtext, menuindex, yayınlanan, hidemenu, üst, isklasör, açıklama, diğer ad, uzun başlık, tür, şablon&sıralama düzeni- Sıralama düzeni."ASC" veya "DESC". Varsayılan ASC
&Neresi - JSON tarzı filtre seçenekleri (MySQL'de nereye karşılık gelir). Örneğin, Makaleler eklentisinden bir blogu veya haberi gizlemek istediğinizde: &where=`[("class_key:!=": "Article")]`
Örnekler:
yalnızca klasörleri çıkar: & burada = `isfolder = 1
&buradaId - Snippet'te kullanılacak geçerli kimliği tanımlayın. Şablon hereTpl parametresi kullanılarak belirtilmişse ve activeRowParentTpl menü öğesinde doğru şekilde uygulanmamışsa [[*id]] değerini kullanın. Varsayılan olarak, geçerli kimlik.
Bunu yalnızca betiğin kendisi yanlış bir şekilde belirlerse, örneğin başka bir snippet'in bir öbeğinden bir menü görüntülerken belirtmeniz gerekir.
&buraTpl - HereTpl şablonu, geçerli öğe menüde görüntülendiğinde kullanılır.
Olası yer tutucular:
[[+wf.classes]] - kullanılacak CSS sınıfını belirtmek için yer (class=" " içerir)
[[+wf.classnames]] - yalnızca CSS sınıfının adını içerir (class=" " içermez)
[[+wf.link]] - bağlantı için adres (href)
[[+wf.title]] - bağlantı başlığı metni
[[+wf.linktext]] - bağlantı başlığı metni
[[+wf.wrapper]] - alt menüyü görüntülemek için yer
[[+wf.id]] - benzersiz bir tanımlayıcı (id) göster
[[+wf.attributes]] - ek bağlantı niteliklerini görüntüleyin
[[+wf.docid]] - geçerli öğe için belge kimliği
[[+wf.subitemcount]] - klasördeki öğelerin sayısı
[[+wf.description]] - açıklama alanının değerlerini görüntüler
[[+wf.introtext]] - giriş metni alanının değerlerini görüntüler
Şablon örneği:
Şablon seçenekleri
Bu seçenekler, Wayfinder çıktısı oluşturacak kalıpları içeren parçaları belirtir.
Wayfinder for MODX Revolution'ın mevcut sürümünde, özel TV'lerinize wf ön ek yer tutucularını kullanarak erişebilirsiniz. , örneğin [[+TV'm]]
Yazma sırasında yalnızca orijinal TV değerleri döndürülecek - biçimlendirilmeyecekler. Örneğin, TV'niz bir görüntü ise - şablonunuz içinde böyle bir TV'nin tipik kullanımı tam görüntü etiketinin tamamını döndürür, ancak bir Wayfinder şablonu içinde - yalnızca görüntünün yolu döndürülür.
TV'yi yönetmek istiyorsanız, bunu Wayfinder satır şablonundaki bir pasajı çağırarak yapabilirsiniz (&rowTpl . Örneğin, görüntü TV'nizin adı simge ve genellikle şablondaki çıktı için şu kod gibi bir şey kullanılır:
... ...
Ancak bu, TV'yi kullanmanıza izin vermeyeceğinden, onu şununla değiştirmeniz gerekir:
... ...
Ve şimdi processTV snippet'inin içine aşağıdaki PHP kodunu yerleştiriyoruz:
getObject("modResource", $myId); $doc->getTVValue($myTV); döndür
Sonuç olarak, tamamen işlenmiş bir TV görüntüsü döndürülür.
&dışTpl
Dış kap şablonunu içeren öbeğin adı.
Mevcut yer tutucular:
&innerTpl parametresi, &outerTpl ile aynı yer tutucu kümesini içerir.
&rowTpl
Menü satırının öğeleri için şablonu içeren öbeğin adı.
Mevcut yer tutucular:
Kullanım örneği:
Başka seçenek:
örnekler
İlk seviye
[[!Yol Bulucu? &startId=`0` &level=`1`
&rowTpl=`rowTpl`
&outerTpl=`outerTpl`
&hereClass=`aktif`
&rowClass=`eNav_li`]]
outerTpl öbek kodu
[[+wf.sarmalayıcı]]
rowTpl öbek kodu
[[+wf.sarmalayıcı]]
İkinci seviye (bu örnekte menü ve alt menü öğeleri görsel olarak aynı seviyedeydi)
[[!Yol Bulucu? &startId=`0` &level=`2`
&rowTpl=`rowTplFooterMenu`
&outerTpl=`outerTplFooterMenu`
&innerTpl=`innerTplFooterMenu`
&innerRowTpl=`innerRowTplFooterMenu`
&hereClass=`etkin`]]
OuterTplFooterMenu öbek kodu
[[+wf.sarmalayıcı]]
rowTplFooterMenu öbek kodu
[[+wf.sarmalayıcı]]
innerTplFooterMenu öbek kodu
[[+wf.sarmalayıcı]]
innerRowTplFooterMenu öbek kodu
Menü oluşturma snippet'i. Wayfinder'ın yerini alabilir ve seçenekleri belirlemede daha fazla esneklik sağlar.
Örneğin, birkaç üst öğeden aynı anda bir menü oluşturabilir, bunları hem birlikte hem de ayrı dallar olarak görüntüleyebilir.
Yalnızca ilk başlangıçta hızda önemli bir artış sağlar, ardından Wayfinder, yetkin önbellekleme sayesinde özellikle aşağı değildir.
Seçenekler
Varsayılan olarak, pdoMenu ortak pdoTools seçeneklerini ve kendine ait bazı seçenekleri kabul eder:
İsim | Varsayılan | Tanım |
---|---|---|
&ebeveynler | Mevcut kaynak | Arama sonuçları için virgülle ayrılmış ebeveynlerin listesi. Eğer koymak &ebeveynler=`0`- numune sınırlı değildir. Ebeveyn kimliği bir tire ile başlıyorsa, o ve çocukları seçimin dışında tutulur. |
&seviye | 0 (sınırsız) | Oluşturulan menü düzeyi. |
&kaynaklar | Sonuçlarda görüntülenecek kaynakların virgülle ayrılmış listesi. Kaynak kimliği bir tire ile başlıyorsa, bu kaynak seçimin dışında bırakılır. | |
&şablonlar | Sonuçları filtrelemek için virgülle ayrılmış şablonların listesi. Şablon kimliği bir tire ile başlıyorsa, buna sahip kaynaklar seçimin dışında tutulur. | |
&Neresi | JSON'da kodlanmış bir dizi ek seçim seçeneği. | |
&ekranBaşlat | 0 | İlk menü düğümlerinin görüntülenmesini etkinleştirin. Birden fazla "ebeveyn" belirtirken kullanışlıdır. |
&bağlam | Seçimi kaynak bağlamına göre kısıtlama. | |
&gizli göster | 0 | Menüde gizli kaynakları göster. |
&gösterYayınlanmadı | 0 | Yayınlanmamış kaynakları göster. |
&önizlemeyayınlanmadı | 0 | Kullanıcının bunu yapma izni varsa, yayınlanmamış kaynakların gösterilmesini etkinleştirin. |
&hideAlt Menüler | 0 | Etkin olmayan menü dallarını gizleyin. |
&seçme | Seçilecek alanların virgülle ayrılmış listesi. Örneğin, bir dizi ile bir JSON dizesi belirtebilirsiniz. &select=`("modResource":"id,pagetitle,content")` | |
&göre sırala | menü dizini | Parametrede belirtilmişse TV parametresi de dahil olmak üzere sıralanacak kaynağın herhangi bir alanı &dahilTV'ler, Örneğin &sortby=`("tvname":"ASC","pagetitle":"DESC")`. Birden çok alan dizisi içeren bir JSON dizesi belirtebilirsiniz. Rastgele sıralama için, belirtin &sortby=`RAND()` |
&sortdir | ASC | Sıralama yönü: azalan veya artan. &sortby ve &sortdir parametrelerini boş bırakırsanız, sıralama kaynak sırasına göre yapılır. &kaynaklar. |
&sınır | 0 | Örnek sonuçların sayısını sınırlama. |
&telafi etmek | 0 | Sonuçları baştan atla. Açıkça belirtilmiş bir ifade ile birlikte kullanılmalıdır. &sınır |
&izinleri kontrol et | Örneğin, kaynakları görüntülerken kullanıcı için hangi izinlerin kontrol edileceğini belirtin. &checkPermissions=`liste`. | |
&countChildren | 0 | Her kategorideki alt kaynakların sayısını doğru bir şekilde sayma ve bunları [[+çocuklar]] yer tutucusunda gösterme. Veritabanına ek sorgular yapar, bu nedenle varsayılan olarak devre dışıdır. |
&yer tutucuya | Parça boş değilse, tüm verileri görüntülenmek yerine bu ada sahip bir yer tutucuda depolar. | |
&plÖnek | wf. | Gösterilen yer tutucular için önek. |
&gösterGünlüğü | 0 | Snippet'in çalışmasıyla ilgili ek bilgileri gösterin. Yalnızca "mgr" bağlamında yetkilendirilmiş kişiler için. |
&hızlı mod | 0 | Hızlı yığın işleme modu. Tüm ham etiketler (koşullar, parçacıklar vb.) çıkarılacaktır. |
&önbellek | 0 | Snippet'in sonuçlarını önbelleğe alma. |
&Önbellek süresi | 3600 | Saniye cinsinden önbellek sona erme süresi. |
&şema | -1 | URL oluşturma şeması modX::makeUrl()'ye iletilir, bu nedenle seçenekler gereklidir. Özel uri türü, bir işlevi çalıştırmadan kaynağın uri değerini değiştirir. |
&weblinkUrl'yi kullan | 1 | Kaynağın sınıfına göre bir bağlantı oluşturun. |
&rowIdÖnek | Parçadaki tanımlayıcıyı ayarlamak için önek id="". | |
&buradaId | oluşturulan menü için mevcut kaynağın kimliği. Bunu yalnızca betiğin kendisi yanlış bir şekilde belirlerse, örneğin başka bir snippet'in bir öbeğinden bir menü görüntülerken belirtmeniz gerekir. | |
&dahilTV'ler | Seçilecek TV parametrelerinin virgülle ayrılmış listesi. Örneğin &includeTVs=`eylem,zaman`[[+action]] ve [[+time]] yer tutucularını verecektir. | |
&TV'leri hazırla | Tam yollar oluşturmak istediğiniz ortam kaynaklarından dosyalarla birlikte TV seçeneklerinin listesi. ayarlanmışsa &prepareTVs=`1`, belirtilen tüm TV'ler &dahilTV'ler. | |
&işlemTV'ler | Sistem yöneticisindeki ayarlarına göre işlenecek ve görüntülenecek TV parametrelerinin listesi. ayarlanmışsa &processTVs=`1`, içinde belirtilen tüm TV'ler &dahilTV'ler. İşi yavaşlatır. | |
&tvÖnek | TV ayarları için önek. |
Şablon Seçenekleri
Bu seçenekler, menüler oluşturmak için şablonlar içeren parçaları ayarlar.
İsim | Tanım |
---|---|
&tplDış | Tüm menü bloğunun parça tasarımı. Varsayılan: @INLINE
|
&tpl | Bir yığın menü öğesi tasarımı. Belirtilmezse, kaynak alanların içeriği ekrana yazdırılacaktır. Varsayılan: @INLINE |
&tplburaya | Geçerli menü öğesinin dekorasyon parçası. |
&tplBaşlat | Etkinleştirilmesi koşuluyla, kök öğenin tasarımının parçası &ekranBaşlat. Varsayılan: @INLINE [[+menü başlığı]][[+sarmalayıcı]] |
&tplÜst Satır | &tplCategoryFolder koşullarıyla eşleşmeyen, çocukları olan bir ebeveyni süsleme yığını. Örneğin: @INLINE |
&tplParentRowBurada | Alt öğe içeriyorsa, geçerli belge stilinin parçası. |
&tplParentRowAktif | Aktif menü dalında çocuklu ebeveynleri süsleme yığını. |
&tplKategoriKlasörü | Özel kategori tasarım öbeği. Kategori, link_attributes alanında boş bir şablonu veya rel="category" olan çocukları olan bir üst öğedir. |
&tplİç | Tüm menü alt öğeleri bloğunun tasarımı için yığın. Boşsa - kullanılacak &tplDış. Örneğin: @INLINE |
&tplİçSatır | Bir menü alt öğesi tasarlamak için yığın. Örneğin: @INLINE |
&tplİçBuraya | Etkin menü alt öğesi için yığın. |
CSS sınıfı seçenekleri
Bu parametreler, çeşitli menü öğeleri için [[+sınıf adları]] ve [[+sınıflar]] yer tutucularının değerini ayarlar. [[+classnames]] yer tutucusu, öznitelik olmadan yalnızca sınıf adını görüntüler sınıf=""[[+sınıflar]] yer tutucusunun aksine.
örnekler
Sitenin kökünden bir düzeye kadar olan menünün olağan çıktısı:
[]
Belirli ebeveynlerin hariç tutulduğu ve kullanıcı izinlerinin kontrol edildiği çıktı:
[]
Menüyü aynı anda iki ebeveynden görüntüleme, kök noktaları gösterme:
[]
Yuvalanmış sayısını sayarak iki kaynak düzeyi gösteriliyor:
[]` &tplParentRow=`@INLINE