PdoMenu - MODX menüsü için klasör. Ön taraftaki Bootstrap Modx menüsünün arkasında daha zengin bir MODX menüsü

Alece bize göre değil;).

Her şeyi sıfırdan inşa ediyoruz. Seçeneklere hazır olsak bile, biz (erkekler) başka neye ihtiyacımız vardı? Çünkü bana çok yakışıyor. Çünkü benzer pidkhid naivirnishim'e saygı duyuyorum. Bu nedenle, kendi kodumuzu genişletirken, bir başkasının kodunu kolayca geliştirebilir, değiştirebilir, afları düzeltebilir veya belirli bir tür için gerekli işlevsellik ile tamamlayabiliriz. Bu, zreshtoyu, kendinize ait olsun - genellikle çok hoş geldiniz!

Uzakta, sokaktaki anneye okuyucunun en az bildiği şeyi söyle. PHP programlama. Teorik olarak, kodu anlamayan kişiler, kodu kopyalayabilir ve aşağıda bahsedilecek olan tüm bu şeyleri oluşturabilir. Bununla birlikte, ana koda girmeden oldukça büyük bir konfigürasyon için bir dizi olasılık vermek için hazır snippet'ler a la Ditto, pis koku parçaları hazırlamaları onlar için daha iyi olabilir.

Bir koristuvach için daha iyi olan konuyu tartışmak istemiyorum - hazır olun veya kendinizinkini genişletin ... Bu ve farklı bir şekilde, artılarınız ve eksileriniz. Özellikle benim için diğer seçeneğin daha fazla artısı var. Ayrıca, kendimi okuyuculardan çıkarabilirim.

Baba, bizimkine bir kez daha hayran olalım. Oskіlki raznih yazılım parçaları Sitemizin yapacak çok işi var ve bir şeye başlamak gerekiyor, programlanabilir.

Üst menü

" terimi altında Üst menü Sitenin üst kısmının yan taraflarına mesaj yazmayı düşünüyorum (aşağıdaki div. küçükler):

Snippet'in oluşturulmasının ilk kıçını bir rapor halinde anlatacağım ancak daha sonra en temel detaylara odaklanacağım.

Bir önceki yazıda bahsettiğimiz gibi yönetim sistemindeki site ağacımızla uyumluyuz:

Küçük olandan da görebileceğiniz gibi, site ağacının yanında birkaç belge (ve "Blog", "Yazarlar Hakkında", "Fotoğraflar" ve " Zvorotniy zv'azok"), üst menüde Tanrı'nın gücü nasıl oluşturulur.

Yani menüde görünmesini istemediğimiz belgeler konusunda çok geride kaldığımızı tahmin ediyorum. Örneğin, "Sitede ara" adlı belgeden "Menüde göster" sancak kaldırılmış ve dışarıda bırakılan "Pozisyon" ve "Kategoriler" adlı iki belge siteye eklenmiş, "Yayın" belgesindeki sancaktaki sancak kaldırıldı (katlanmış belgenin "Yan düzenleme" sekmesi).

Bu sıralamada ön yazıdaki kontrol sistemindeki üst menüyü hazırladık.

Gelelim sitede aracısız çocuklarımızın beslenmesine.

Sitedeki programların çoğu t.sv'yi çağırıyor. " ", sonra. PHP'de okremі schmatki kodu (ayrıca okremі fonksiyonlarının ve chi alt programlarının nasıl yapıldığını da anlayabilirsiniz). Bu yüzden MODx'te üst menüyü uygulamak için ayrıca yeni bir snippet oluşturup, programlamamız ve gerekli alanda şablona hızlı bir snippet eklememiz gerekiyor.

Yönetim sistemine gidelim, "Kaynaklar" sekmesini -> "Kaynak yönetimi" -> "Snippet'ler" sekmesini açın ve "Yeni snippet" mesajına tıklayın. "Snippet name" alanına, pençeler olmadan "TopMenu" girin ve şimdilik, kod olmadan boş bir snippet kaydedin. Koruma adına, snippet'imizi "Snippet'ler" sekmesinde adlandırmak istiyoruz.

Şablonumuzun üst menüsünün "TOPMENU" öbeğine eklendiğini tahmin ediyorum. "Yığınlar" sekmesine geçin ve "Yığın"a bakın. Aynı yığında aşağıdaki kodumuz var:


  • Blog

  • Yazarlar hakkında

  • Fotoğraflar

  • Zvorotniy zv'azok

Bu kod hala menümüzü oluşturuyor. chantsі'da yogo ta dodamo quiklik snіpetu "TopMenu" hakkında yorum yapmak:


[]

Burada yine yapım duygusunu açıklamakta biraz zorlanacağım. Sağda, zihnin yardımcı yapısının arkasında ne var [] veya [! SnippetAdı!].

Yapı [] neden bir haftalık tıklama anlamına geliyor? nakit snipta, tobto. vyklik dinamik pіdprogramami, vykonannya bude podrakhovaniya'nın bir kez vykonany'nin sonucu ve zavantazhenny tarafı, tsey snіpet vyklikaetsya olduğunda zgod, sonuç değişmez olacak, t.to. tekrarlanan tweet snippet'i artık mevcut değil. Bu sıralamada web sunucumuzun kaynaklarını ayırıyoruz (ancak yüksek bir kaynak için daha da önemli olabilir).

Durumu araştırmak için protesto et, snippet kodunu tüm saat boyunca tekrar kontrol etmek gerekirse ve sonuçları önbelleğe almak mümkün değil. Bu gibi durumlarda, [!SnippetName!] yapısı galip gelir, böylece snippet'i her zaman bozdurmadan galip gelecek şekilde ayarlayabilirsiniz. Benzetme yoluyla, bu yapıya viklik denir. önbelleğe alınmadı Snippet.

Bu nedenle, "TOPMENU" öbeğini kaydedin ve sitenin tarafını değiştirin. Hmm, şaşırtıcı değil ama üst menü belirdi. Ale chi tse gerçekten çok mu harika? Şarkılarda menünün HTML kodunu yorumladıktan sonra bu ekranı tarayıcıya ekledik (değiştirin, çıkış koduna bakarak değiştirin) HTML tarafı). Ve snippet'imiz "TopMenu" hiçbir şeyi bozmuyor, yenisine hiçbir şey eklenmedi. Bu eksikliği giderelim :).

"Snippets" yer imine geri dönelim, "TopMenu" snippet'inin kreasyonlarını görelim ve bu yeteneğe itiraz etmeye çalışalım... Tüm detayları bilmeyen okuyucularım, sabırlı olun.

İlk defa en basit kodu yazalım (en iyi PHP kodu):

echo "Test ediliyor...";
?>

Kaydetmeden önce, çünkü "Prodovzhiti redaguvannya" diyoruz. snippet'imiz yerine bir kereden fazla değiştirmemiz gerekecek ve eğer snippet'i kaydedeceksek. Sitenin yan tarafını güncelleyelim ve üst menüye geçelim… Doğruyu söylemek gerekirse, ilk bakışta menünün mavi arka planının krem ​​rengi, günlük değişiklikleri umursamıyoruz gibi görünüyor. hangi biraz genişledi. Metnin tamamını sitenin yan tarafında görmek için "CRTL+A" yazın ve snippet'imizin menü alanında hala "Test Ediliyor ..." metnini göstermesi daha iyidir, yalnızca metnin rengi metnin rengiyle eşleşir. arka fon.

Saldırı için snippet kodunu değiştirin:

Eko " Test yapmak...";
?>

Şimdi benim için snippet'imizin çalıştığı açık ve gerçek metni görüntülemek için gezin (!) Harika, ama görevimiz için fazla bir şey almadı, snippet'imizi kontrol sisteminden çıkarmaya çalışmak bizim hatamızdı, üstelik, "TOPMENU" da yorumladığımız tam olarak aynı HTML kodunda seçenek.

Ben yine küçük bir uzlaşmayım...

MODx'teki belgeler arasındaki tüm ilişkiler sistemi şu ilkeden esinlenmiştir: "Batkiv belgesini" sıfırdan kişisel olmayan "alt belgelere" ("ebeveyn" -> "alt belgeler").

MODx veritabanındaki dış görünüm belgesinin kendi benzersiz tanımlayıcısı "Kimlik" vardır - dış görünüm belgelerine emanet edilen ağaç sitesinin kemerlerinde yapabildiğimizle aynı numara.

Bu benzersiz tanımlayıcının yalnızca tek bir değeri olabilir - vin, yönetim sisteminde belirli bir belgeyi benzersiz bir şekilde tanımlar. ve başka bir şey yok! Bu konuda özellikle kel, sondaj parçaları tekrar tekrar en kazançlı amaçlarla tanımlayıcıların sayısını değiştirmeye çalışır ... Bir kez hatırlamanız gerekir, bu sadece aptalca, bu yüzden sayıları değiştirmeye çalışmayın. Onlara, zengin saygıya değil, varto zvertat, sadece belgelerin şarkılarına yazmak amacıyla tsі rakamları vikoristovuyutsya'yı çalın.

MODx veritabanı, dış görünüm belgesi için oluşturulmuş özel bir "üst öğe" alanına sahiptir. Bu alanın değeri, Batkiv belgesinin benzersiz tanımlayıcısı veya belge ağacın kökündeyse sıfır anlamına gelen bir sayıdır. Bu sıralamada, hangi belgenin hangi babaya ait olduğunu her zaman açık bir şekilde belirtebilirsiniz.

Ne hakkında konuştuğumuzu kontrol etmek için, phpMyAdmin'i açın, veritabanınızı seçin ve (PREFIX) site_content, de (PREFIX) - kurulum zamanı için girdiğiniz önekinizi bulun. Belgelerin adlarının kaydedildiği anonim alanları, "Kimlik" kodunu - benzersiz bir tanımlayıcı, "ebeveyn" - babanın belgesinin numarası, "sayfa başlığı" - sayfanın başlığı ve diğerlerini kullanabilirsiniz.

baba, papaz bu bilgi Bu belge linkini MODx'e kaydetme prensibine göre, üst menüyü görüntülemek için verilere nasıl ihtiyacımız olduğunu anlayabiliriz: Veritabanında, site ağacının kökünde bulunan tüm belgeleri bilmemiz gerekir, yani. "ebeveyn" alanında sıfır değeri olabilir.

Vykoristovuyuchi SQL mov, böyle bir istek şu şekilde açıklanmaktadır (Girmeyi deneyebilirsiniz Danimarka zapiti phpMyAdmin'deki SQL giriş alanında, "modx_" yerine önceden kendi önekinizi koyarak):

SEÇME*
"modx_site_content" DAN
NEREDE "ebeveyn" = 0;

Bununla birlikte, böyle bir talep, sitenin kökünden, doğru bir şekilde bilmediğimiz tüm belgeleri, ana görevden kesinlikle geri getirecektir - bu belgeler üzerinde daha fazla çaba sarf etmek, olabileceği gibi:

  • yayın durumu (veritabanı için bu öğe "yayınlandı" alanına sahiptir, değer düşürme = 1, belgenin yayınlandığı ve değer = 0 - yayınlanmamış olduğu anlamına gelir).
  • silinmemiş ("silinmiş" alan, burada 1 silinir ve 0 silinmez),
  • Ve onlar için "Menüde göster" seçeneği kurulur (menüde 1 - gizle ve 0 - göster olan "hidemenu" alanı).

Ayrıca bir adım ileri giderek, menümüzdeki skin mesajının konumunu belirleyen "Menüdeki konum" parametresinden sonra belgeleri hemen sıralayacağız.

SQL'e baktığımızda, oldukça sakar ve şu şekilde yanlış gidiyor:

SEÇME*
"modx_site_content" DAN
NEREDE "yayınlandı" = 1
VE "üst" = 0
VE "silindi" = 0
VE "gizlemenü" = 0
'menuindex' ASC'YE GÖRE SİPARİŞ;

Teorik olarak, tüm SQL istekleri, yardım için aracı olmadan snippet'lerden saldırıya uğrayabilir PHP betikleri, skini bir kez daha veri tabanına yeniden bağlamak ve meçhul rutin işlemleri taklit etmek, tekrar tekrar tekrarlamak... є kontrol sistemimiz, çünkü. MOD x yazılım arayüzü(API, Uygulama Programlama Arayüzü). API - zengin veri işleme süreçlerini birleştiren ve kolaylaştıran tüm yazılım işlevleri.

Snippet'imizde aşağıdaki API işlevlerinden "getDocumentChildren" birini kazanırız. "getDocumentChildren" işlevi aşağıdaki parametreleri dikkate alır:

  • $id - Batkiv belgesinin numarası,
  • $active - yalnızca yayınlanmış veya yayınlanmamış belgeleri seçin (1 veya 0 geçerli),
  • $deleted - yalnızca silinmiş veya görünmeyen belgeleri seçin (1 | 0),
  • $fields - veritabanından seçilen alanlar,
  • $nerede - özellikle akıl, tobto. zihin NEREDE SQL sorgusu,
  • $ sort - sonuçların sıralanabileceği alan
  • $direction - doğrudan sıralama, ASC veya DESC değerlerini de kabul edebilir. düşükten yüksek değere veya aynı anda sıralama
  • $limit - zamuzhennya zapomu, tobto. SQL sorgusunda umova LIMIT

$results = $modx->getDocumentChildren(
$kimlik = 0
$etkin = 1
$silindi = 0
$nerede="hidemenu=0",
$sort="menuindex",
$dir="ASC",
$ limiti
);

Yazdır("

Foreach($sonuçlar as $anahtar => $değer) (
print_r($değer);
}

Yazdır("");
?>

Snippet'i kaydedin ve tarafı güncelleyin. Güncellenen "TopMenu" snippet'ini incelemenin bir sonucu olarak, "menuindex" alanının değerlerinden küçükten büyüğe sıralanmış olarak bu değerlerin dizilerinin bir listesini ekleyeceksiniz. $dir="ASC" parametresini $dir="DESC" olarak değiştirmeyi deneyin - sonuç olarak dizi değiştirilecek ve ilk belge en yüksek "menuindex" alan değerine sahip belge olacaktır.

Tecrübeli programcılar, belki de, sonucu almanın, menüyü yardımdan hazırlanmaya teşvik etmek için gerekli her şeyi vermek olduğunu fark ettiler. Pekala, hadi hepimiz. Fikrime devam edeceğim: İstenen sonuca mümkün olduğunca yaklaşmak için PHP kodunu yeniden yazalım.

$results = $modx->getDocumentChildren(
$kimlik = 0
$etkin = 1
$silindi = 0
"id, pagetitle, yayınlandı, menuindex, silindi, hidemenu, menutitle",
$nerede="hidemenu=0",
$sort="menuindex",
$dir="ASC",
$ limiti
);

$ürünler = "";
$çıktı="";

Foreach($sonuçlar as $anahtar => $değer) (
$ürünler = "


  • ".$değer["sayfa başlığı"]."
  • \n";
    }

    Eğer ($iteler != "") (
    $çıktı = "

      \n";
      $çıktı .= $öğeler;
      $çıktı.="
    \n";
    }

    $ çıktısını döndür;

    Kodu ayrıntılı olarak analiz etmeyeceğiz, sadece PHP kodu örnekleri, daha fazlası değil. Herhangi birinin herhangi bir inşaat anlayışı yoksa, yorum istiyorum, bunun yerine destek forumlarında.

    Yeni snippet kodunu kaydedin ve tarafı güncelleyin. Sonuç olarak, almak isteyenler için kodu pratik amaçlar için geliştirdik:

    Tobto. Yapısı MODx ağacındaki belgelerin yapısını tamamen tekrarlayan otomatik olarak oluşturulan mesajlar. Revize etmek için sitenin kökünde bir test belgesi oluşturmaya çalışın ve sayfayı değiştirin.

    Ancak, hepsi bu değil. Bir güç olduğunu şarkı söyleyerek hatırlayan zengin, ama güç yok ... Bir paradoks :). Menüdeki belgelere isim verirseniz, onlara gönderilmeyeceklerinin eşiğinde olabilirim. Mantıklı, ancak parçalar hala kodda gerçek yolların yerine "#" gösteriyor.

    Fabrikayı kontrol etmek için, MODx'in marjinal bir olasılığını bilmek gerekir: sitenin herhangi bir iç tarafının adresi, id'nin benzersiz bir sayı olduğu ek bir saldırgan yapı [~id~] için düşünülebilir. gerekli belge, sonra. tam sayı, tapınaklardaki belirtiler, site ağacındaki cilt belgesinin adını emanet ettim. Bu şekilde, şablona/şansa/içeride böyle bir yapı [~1~] eklendikten sonra,

      • dizin – "Blog" belgesinin diğer adı, çünkü belgenin diğer adı olarak "index" girdik, aksi takdirde
      • 1.html, çünkü "Blog" belgesi için "Takma ad" alanına hiçbir şey girmedik
    • arkadaşça bir mesaj olarak, index.php?id=1 yazabiliriz

    Snippet'i yeniden yazacağız, vikoristovuyuchi tsyu іnformatsiyu:

    $results = $modx->getDocumentChildren(
    $kimlik = 0
    $etkin = 1
    $silindi = 0
    "id, pagetitle, yayınlandı, menuindex, silindi, hidemenu, menutitle",
    $nerede="hidemenu=0",
    $sort="menuindex",
    $dir="ASC",
    $ limiti
    );

    $ürünler = "";
    $çıktı="";

    Foreach($sonuçlar as $anahtar => $değer) (
    $ürünler = "


  • ".$değer["sayfa başlığı"]."
  • \n";
    }

    Eğer ($iteler != "") (
    $çıktı = "

      \n";
      $çıktı .= $öğeler;
      $çıktı.="
    \n";
    }

    $ çıktısını döndür;

    Ayrıca, # değerini [~".$value["id"]."~] olarak değiştirdik, yani. Pratik olarak, diziden dış görünüm belgesine [~id~] yapısının ortasında benzersiz bir kimlik sağlanır. Sonuç olarak, pratik seçeneklere sahip bir menüyü kabul ediyoruz.

    Pratikte ideale ulaştık... Ancak, şimdi değiştirilmesi gerektiği için bir ayrıntı atlandı: tasarımcı, dünyanın gücünü aktif olarak tanıtabileceğimizi ve gücün renginin değiştirilebileceğini belirledi. turuncuya.

    Buna ulaşmak için yine MODx CMS'nin sırlarını açığa çıkaracağız :). $modx->documentIdentifier işlevi, akış tarafının benzersiz tanımlayıcısının değerini tersine çevirmek için API'ye bağlanır. Aktif tarafı belirlemek ve menüde görmek için buna ihtiyacımız var:

    $results = $modx-> getDocumentChildren(
    $kimlik = 0
    $etkin = 1
    $silindi = 0
    "id, pagetitle, yayınlandı, menuindex, silindi, hidemenu, menutitle",
    $nerede="hidemenu=0",
    $sort="menuindex",
    $dir="ASC",
    $ limiti
    );

    $cid = $modx->documentIdentifier;

    $ürünler = "";
    $çıktı="";

    Foreach($sonuçlar as $anahtar => $değer) (
    if ($değer["id"] == $cid) (
    $aktif = "id="aktif"";
    }
    Başka(
    $aktif = "";
    }
    $ürünler = "
    ".$değer["sayfa başlığı"]."
    \n";
    }

    Eğer ($iteler != "") (
    $çıktı = "

      \n";
      $çıktı .= $öğeler;
      $çıktı.="
    \n";
    }

    $ çıktısını döndür;

    Peki yak, wiyshlo? Wiishlo!

    Ama neden her şeyin biteceğini düşünmedin mi? ben doğru. Çıtamızı kendimiz belirliyoruz, MODx'in maksimum olanaklarını kazanmak istiyoruz. Ve ayrıca, küçük bir ayrıntı, yaku mi kaçırdı.

    Ek fonksiyon getDocumentChildren'ı istediğimiz için alanların adına saygıyla bakarız: "id, pagetitle, yayınlanmış, menuindex, silinmiş, hidemenu, menutitle". Bunların ortasında "menutitle" gibi bir alan var. Adına nasıl bağırılır, hangi alan kurtarabilir menü başlığı. Ödeme sisteminde ayrıca bir "Menü öğesi" alanı vardır. Tse alanı obov'yazkovo zapovnyuvati değil. Ancak mantık şu ki, bu alan doldurulursa, tanıtımlar için menüde gönderilen metnin kısa bir metinle değiştirilmesi bizim hatamızdır. Peki, parçalayalım:

    /********************************
    İsim: ÜstMenü
    Amaç: Üst menüyü ortaya çıkarmak
    Proje: MODx demo sitesi
    ********************************/

    $results = $modx->getDocumentChildren(
    $id = 0, // Batkiv belgesinin kimliği
    $active = 1, // Yayınlanan belgelerden daha azını seçiyoruz
    $deleted = 0, // Sadece görünmeyen belgeleri seçiyoruz
    "id, sayfa başlığı, yayınlandı, menuindex, silindi, hidemenu, menutitle", // Veritabanından alanları seçin
    $where = "hidemenu = 0" // Yalnızca menüde yayınlanması gereken belgeleri seçin
    $sort="menuindex", // Belgeleri menuindex alanına göre sırala
    $dir="ASC", // Belgeleri Sıralama Nasıl Genişletilir
    $limit = "" // Değişim ayarlanamıyor (SQL sorgusunun LIMIT parametresi)
    );

    $cid = $modx->documentIdentifier; //gerekli akış tarafı kimliği

    $ürünler = "";
    $çıktı="";

    Foreach($sonuçlar as $anahtar => $değer) (
    if ($değer["id"] == $cid) (
    $aktif = "id="aktif"";
    }
    Başka(
    $aktif = "";
    }
    if ($değer["menutitle"] != "") (
    $başlık = $değer["menübaşlığı"];
    }
    Başka(
    $başlık = $değer["sayfabaşlığı"];
    }
    $ürünler = "
    ".$başlık."
    \n"; // menü öğesini seç
    }

    // Yalnız kalmak istediğini bilmek için çok uzakta Yakshcho menü seçeneği,
    // HTML menü kodu oluştur
    if ($iteler != "") (
    $çıktı = "

      \n";
      $çıktı .= $öğeler;
      $çıktı.="
    \n";
    }

    // Robot parçacığının sonucunu kontrol edin
    $ çıktısını döndür;

    Şimdi herhangi bir belgenin "Menü öğesi" giriş alanına bir metin girmeye çalışın... Her şey çalışıyor mu? Mucizevi!

    Not: Muhtemelen, bazı okuyucular mutlu olacaktır, menümüzün mesajlarına gittiğinizde taraf sayısı değişmez, isterseniz tarayıcı adresine giden yola bakılırsa yeni taraflara geçeceğiz .. İnanın bana, bu kesinlikle normal çünkü. kesinlikle tüm taraflar aynı anda aynı şablonu kazanır. Bu şablon için pratik, ancak şimdilik üst menü daha dinamik bir üst menü ile genişletildi ve ayrıntılar geride kaldı. Gelecekte bununla meşgul olacağız, ancak şimdilik - panik olmadan;).

    Visnovok:

    Böylece, bir makale daha mantıklı sonucuna ulaştı.

    Eğitim çantaları:

    • MODx girilen belgelerin tanınan alanlarına bakmaya çalıştık ve veritabanından bilgi toplamaya baktık;
    • Yeni özel MODx yapıları hakkında bilgi edinin: [], [!SnippetName!], [~id~];
    • Özel bir API'nin varlığını biliyorlardı ve hızla verimli hale geldiler. API işlevleri;
    • Bilgilerine dayanarak MODx'te yeni snippet'lerini oluşturdular!


    yol bulucu MODX için mesaj listelerinin organizasyonunda hizmet vermek. Zavdyaki podtrimtsі şablonları, gerekli herhangi bir görünüm için listeler oluşturmanıza olanak tanır:
    • Bir liste gibi menü, tablolar, resimler, simgelerle de.
    • Statik menü
    • Farklı efektlere sahip menü
    • Site haritası
    Viklik örneği:


    &rowTpl=`rowTpl`
    &outerTpl=`outerTpl'
    &hereClass=`etkin`
    &rowClass=`eNav_li`]]

    Snippet parametreleri:

    &startId- baba tarafının kimliği, bu nedenle sitenin kökü olmak için 0 girin. Kilidin arkasında aktif tarafın id değeri bulunur.

    &görüntüleBaşlat - menü başlığında startId ile belgeyi göster, yanlış tanıtıldı

    &seviye- yatırım derinliği, kilitleme için 0 - hepsi eşittir

    &sınır- pencerede birkaç kenarın çitle çevrilmesi (kilitleme için 0 - çit yok)

    &yoksayGizli- Kutunun "Menüyü göster" tarafındaki onay kutusunu yoksay, tobto. 1 derseniz her tarafı göreceksiniz. 0'ı kilitlemek için. Yalnızca "Menüde göster" onay kutusu olan tarafları gösterin.

    &ph - im'ya podstanovnik, sonuçların yerine scho, aracılık olmadan scho. Tipik olarak 0.

    &hata ayıkla- lagodzhennya modu (0'ı kilitlemek için)

    &gizleAlt Menüler - aktif alt menüyü genişlet (0'ı kilitlemek için)

    &KaldırYeni Satırları- ziyaret saati için satırın transferinin sembolünü alın (0'ı kilitlemek için)

    &textOfBağlantılar- İstediğiniz menüyü adlandırın. Olası seçenekler:Menü başlığı, kimlik, sayfa başlığı, açıklama, üst öğe, takma ad, uzun başlık, giriş metni . Zamovchuvannyam için menü başlığı

    &titleOfBağlantılar- menünün başlığı için. Seçenekler:Menü başlığı, kimlik, sayfa başlığı, açıklama, üst öğe, takma ad, uzun başlık, giriş metni. Zamovchuvannyam için sayfa başlığı

    &rowIdÖnek- Dış görünüm öğesi için kimliği (rowIdPrefix + docId) ayarlayın. Tipik olarak 0

    &Dokümanları dahil et- menüye dahil edilecek belgelerin kimliği (kilitleme için belirtilmemiş)

    &Dokümanları hariç tut - menüden devre dışı bırakılacak belgelerin kimliği (0'ı kilitlemek için)

    &bağlamlar- Menü oluşturma bağlamı. Promosyonların arkasında.

    &startIdContext - Sonucu oluşturmak için belgelerin alındığı bağlam tanımlayıcısı.

    &yapılandır - Zovnishhnіy PHP dosyası, Wayfinder yapılandırmasını kaydetme (örnek: çekirdek/bileşenler/yol bulucu/yapılandırmalar).

    &şema - URL harmanlama biçimi. Olası değerler (wiki makeURL API'sine göre):

    1: (kilitlemek için) site_url'ye yönlendiren URL;

    0: merak ediyorum http;

    1: harika https;

    tam: site_url'ye dayalı mutlak URL;

    abs: mutlak URL, base_url'ye göre;

    http: mutlak URL;


    https: mutlak URL, işler https şeması için devre dışı bırakılır.

    &göre sırala - Düzenleyen bir alan. (kilitleme için menü indeksi)

    Seçenekler:

    İD, menutitle, pagetitle, introtext, menuindex, yayınlandı, hidemenu, ebeveyn, isfolder, açıklama, takma ad, uzun yazı, tür, şablon

    &sıralama düzeni- Sıralama düzeni."ASC" veya "DESC". tipik ASC

    &nerede - Filtrelemede JSON tarzı parametreler (MySQL'in nerede olduğunu kontrol edin). Örneğin, bir blog veya yeni eklemeler eklemeniz gerekiyorsa Makaleler: &where=`[("class_key:!=": "Makale")]`
    Uygulamak:
    yalnızca klasörleri görüntüle: & burada = `isfolder = 1

    &bura kimliği - Snippet'ler için bir akış kimliği belirleyin. [[*id]] etiketi yardım şablonu olarak hereTpl ve activeRowParentTpl menü öğesine doğru şekilde yerleştirilmemiş. Promosyonlar için geçerli kimlik.
    Örneğin, başka bir snippet'in bir bölümünden bir menüyü görüntülerken, komut dosyasının kendisinin nasıl yanlış görüntülendiğinden daha fazlasını belirtmek gerekir.

    &buradaTpl - Buradaki Tpl şablonu, geçerli öğe menüde görüntüleniyorsa doğrulanır.
    Olası yer tutucular:
    [[+wf.classes]] - joker karakterli bir CSS sınıfı eklemek için yer (sınıf=" " dahil)
    [[+wf.classnames]] - CSS sınıf adını içermez (class=" " içermez)
    [+wf.link]] - gönderilecek adresler (href)
    [+wf.title]] - başlık metni eklendi
    [+wf.linktext]] - istediğiniz metni adlandırın
    [+wf.wrapper]] - alt menünün görüntüleneceği yer
    [+wf.id]] - benzersiz bir tanımlayıcının modeli (id)
    [+wf.attributes]] - görsel ek nitelikler Kuvvet
    [+wf.docid]] - akış öğesi için belge tanımlayıcısı
    [+wf.subitemcount]] -babadaki öğe sayısı
    [+wf.description]] - açıklama alanının değerini göster
    [+wf.introtext]] - giriş metni alanının değerini göster

    Şablon örneği: [[+wf.linktext]][[+wf.wrapper]]

    Şablon parametreleri

    Parçaları, kalıpların nasıl süpürüleceğini, Wayfinder peruklarının nasıl oluşturulacağını belirten parametre sayısı.

    İÇİNDE akış versiyonu için yol bulucu MODX Devrimi wf önekine sahip ek bir yer tutucu kullanarak özel TV'nize erişimi reddedebilirsiniz. , örneğin [[+my_TV]]

    Makaleyi yazarken, TV'nin dış değerine çevrilecek - pis koku formatlanmayacak. Örneğin, TV'nizin bir görüntü olması gibi - zvichaine vikoristannya bu nedenle, şablonunuzun ortasındaki TV, yeni görüntü etiketini döndürecek ve Wayfinder şablonunun ortasında - görüntüye yalnızca birkaç yönden dönecektir.

    TV'yi düzenlemek istiyorsanız, Wayfinder satır şablonu (&rowTpl ) arasındaki Snippet'e tıklayarak oluşturabilirsiniz. Örneğin, TV görüntünüz olarak adlandırılır. simge ve şablonu görmek ve yaklaşık olarak aşağıdaki kodu kazanmak için çalın:

    ... ...

    Ale oskіlki tse, TV'yi soymanıza izin vermez, yogo'yu aşağıdakilerle değiştirmeniz gerekir:

    ... ...

    Şimdi processTV snippet'inin ortasında aşağıdaki PHP kodunu kullanıyorum:

    getObject("modResource", $myId); $doc->getTVValue($myTV) döndür;

    Sonuç olarak, TV görüntüsü tekrar döndürülür.

    &dışTpl

    Yığının adı, orijinal kapsayıcının şablonudur.

    Kullanılabilir yer tutucular:

    • wf.classes - Wayfinder parametre setinden alınan sınıfları göster (class="" dahil)
    • wf.classnames - sınıf adlarını görüntüleyin (sınıf="" olmadan)
    • wf.wrapper - iç boşluğun (satır) görselleştirilmesi.
      [+wf.wrapper]]

    &innerTpl parametresi, &outerTpl ile aynı yer tutucu setini ayarlar.

    &satırTpl

    Yığının adı, menü satırındaki öğe şablonunu değiştirmektir.

    Kullanılabilir yer tutucular:

    • wf.classes - sınıf görüntüleme (class="" dahil) özelliği
    • wf.classnames - geçerli sınıfların gösterimi (sınıf="" olmadan)
    • wf.link - href="" menüyü bağlamak için öznitelik değeri
    • wf.title - &titleOfLinks parametresinde belirtilen alana gönderilecek başlık metninin adı
    • wf.linktext - &textOfLinks parametresinde geçirilen alanda belirtilen bağlantıya gönderilecek metin
    • wf.wrapper - iç alanı görüntüleme, örneğin alt menü
    • wf.id - visnovka benzersiz kimlik özelliği. Alma değerini hemen almak için &rowIdPrefix parametresini belirtmeniz gerekir. Değer önek + docId'dir.
    • wf.attributes - Bir akış öğesi için öznitelik izinlerini görüntüle
    • wf.docid - akış öğesinin belge kimliği
    • wf.description - akış öğesinin açıklaması
    • wf.level - mevcut para yatırma seviyesi

    Vikoristan örneği:

    [[+wf.linktext]][[+wf.wrapper]]

    Bir seçenek daha:

  • [[+wf.linktext]] - [[+wf.description]] [[+wf.wrapper]]

  • Uygulamak

    İlk Rivne


    [[! Yol Bulucu? &startId=`0` &level=`1`
    &rowTpl=`rowTpl`
    &outerTpl=`outerTpl'
    &hereClass=`etkin`
    &rowClass=`eNav_li`]]

    dışTpl yığın kodu



      [+wf.wrapper]]

    satırTpl yığın kodu



      [+wf.wrapper]]

    Başka bir seviye (menünün her butonu için, o menü öğesi görsel olarak aynı seviyedeydi

    [[! Yol Bulucu? &startId=`0` &level=`2`
    &rowTpl=`rowTplFooterMenu`
    &outerTpl=`outerTplFooterMenu`
    &innerTpl=`innerTplFooterMenu`
    &innerRowTpl=`innerRowTplFooterMenu`
    &hereClass=`etkin`]]

    OuterTplFooterMenu yığın kodu



    [+wf.wrapper]]

    rowTplFooterMenu yığın kodu




    • [+wf.başlık]]


    • [+wf.wrapper]]

    innerTplFooterMenu yığın kodu

    [+wf.wrapper]]

    innerRowTplFooterMenu yığın kodu



  • [+wf.başlık]]




  • yol bulucu MODX için mesaj listelerinin organizasyonunda hizmet vermek. Zavdyaki podtrimtsі şablonları, gerekli herhangi bir görünüm için listeler oluşturmanıza olanak tanır:
    • Bir liste gibi menü, tablolar, resimler, simgelerle de.
    • Statik menü
    • Farklı efektlere sahip menü
    • Site haritası
    Viklik örneği:


    &rowTpl=`rowTpl`
    &outerTpl=`outerTpl'
    &hereClass=`etkin`
    &rowClass=`eNav_li`]]

    Snippet parametreleri:

    &startId- baba tarafının kimliği, bu nedenle sitenin kökü olmak için 0 girin. Kilidin arkasında aktif tarafın id değeri bulunur.

    &görüntüleBaşlat - menü başlığında startId ile belgeyi göster, yanlış tanıtıldı

    &seviye- yatırım derinliği, kilitleme için 0 - hepsi eşittir

    &sınır- pencerede birkaç kenarın çitle çevrilmesi (kilitleme için 0 - çit yok)

    &yoksayGizli- Kutunun "Menüyü göster" tarafındaki onay kutusunu yoksay, tobto. 1 derseniz her tarafı göreceksiniz. 0'ı kilitlemek için. Yalnızca "Menüde göster" onay kutusu olan tarafları gösterin.

    &ph - im'ya podstanovnik, sonuçların yerine scho, aracılık olmadan scho. Tipik olarak 0.

    &hata ayıkla- lagodzhennya modu (0'ı kilitlemek için)

    &gizleAlt Menüler - aktif alt menüyü genişlet (0'ı kilitlemek için)

    &KaldırYeni Satırları- ziyaret saati için satırın transferinin sembolünü alın (0'ı kilitlemek için)

    &textOfBağlantılar- İstediğiniz menüyü adlandırın. Olası seçenekler:Menü başlığı, kimlik, sayfa başlığı, açıklama, üst öğe, takma ad, uzun başlık, giriş metni . Zamovchuvannyam için menü başlığı

    &titleOfBağlantılar- menünün başlığı için. Seçenekler:Menü başlığı, kimlik, sayfa başlığı, açıklama, üst öğe, takma ad, uzun başlık, giriş metni. Zamovchuvannyam için sayfa başlığı

    &rowIdÖnek- Dış görünüm öğesi için kimliği (rowIdPrefix + docId) ayarlayın. Tipik olarak 0

    &Dokümanları dahil et- menüye dahil edilecek belgelerin kimliği (kilitleme için belirtilmemiş)

    &Dokümanları hariç tut - menüden devre dışı bırakılacak belgelerin kimliği (0'ı kilitlemek için)

    &bağlamlar- Menü oluşturma bağlamı. Promosyonların arkasında.

    &startIdContext - Sonucu oluşturmak için belgelerin alındığı bağlam tanımlayıcısı.

    &yapılandır - Wayfinder yapılandırmasını kaydetmek için geçerli PHP dosyası (örneğin: core/bileşenler/wayfinder/configs).

    &şema - URL harmanlama biçimi. Olası değerler (wiki makeURL API'sine göre):

    1: (kilitlemek için) site_url'ye yönlendiren URL;

    0: merak ediyorum http;

    1: harika https;

    tam: site_url'ye dayalı mutlak URL;

    abs: mutlak URL, base_url'ye göre;

    http: mutlak URL;


    https: mutlak URL, işler https şeması için devre dışı bırakılır.

    &göre sırala - Düzenleyen bir alan. (kilitleme için menü indeksi)

    Seçenekler:

    İD, menutitle, pagetitle, introtext, menuindex, yayınlandı, hidemenu, ebeveyn, isfolder, açıklama, takma ad, uzun yazı, tür, şablon

    &sıralama düzeni- Sıralama düzeni."ASC" veya "DESC". tipik ASC

    &nerede - Filtrelemede JSON tarzı parametreler (MySQL'in nerede olduğunu kontrol edin). Örneğin, bir blog veya yeni eklemeler eklemeniz gerekiyorsa Makaleler: &where=`[("class_key:!=": "Makale")]`
    Uygulamak:
    yalnızca klasörleri görüntüle: & burada = `isfolder = 1

    &bura kimliği - Snippet'ler için bir akış kimliği belirleyin. [[*id]] etiketi yardım şablonu olarak hereTpl ve activeRowParentTpl menü öğesine doğru şekilde yerleştirilmemiş. Promosyonlar için geçerli kimlik.
    Örneğin, başka bir snippet'in bir bölümünden bir menüyü görüntülerken, komut dosyasının kendisinin nasıl yanlış görüntülendiğinden daha fazlasını belirtmek gerekir.

    &buradaTpl - Buradaki Tpl şablonu, geçerli öğe menüde görüntüleniyorsa doğrulanır.
    Olası yer tutucular:
    [[+wf.classes]] - joker karakterli bir CSS sınıfı eklemek için yer (sınıf=" " dahil)
    [[+wf.classnames]] - CSS sınıf adını içermez (class=" " içermez)
    [+wf.link]] - gönderilecek adresler (href)
    [+wf.title]] - başlık metni eklendi
    [+wf.linktext]] - istediğiniz metni adlandırın
    [+wf.wrapper]] - alt menünün görüntüleneceği yer
    [+wf.id]] - benzersiz bir tanımlayıcının modeli (id)
    [+wf.attributes]] - eklenen ek özellikleri görüntüleyin
    [+wf.docid]] - akış öğesi için belge tanımlayıcısı
    [+wf.subitemcount]] -babadaki öğe sayısı
    [+wf.description]] - açıklama alanının değerini göster
    [+wf.introtext]] - giriş metni alanının değerini göster

    Şablon örneği: [[+wf.linktext]][[+wf.wrapper]]

    Şablon parametreleri

    Parçaları, kalıpların nasıl süpürüleceğini, Wayfinder peruklarının nasıl oluşturulacağını belirten parametre sayısı.

    Wayfinder for MODX Revolution'ın güncel sürümüyle, özel TV'lerinize ek bir yer tutucu wf öneki ile erişebilirsiniz. , örneğin [[+my_TV]]

    Makaleyi yazarken, TV'nin dış değerine çevrilecek - pis koku formatlanmayacak. Örneğin, TV'niz bir görüntüyse - tıpkı şablonunuzun ortasındaki TV gibi, yeni görüntü etiketi döndürülür, ancak Wayfinder şablonunun ortasında - görüntüye giden yalnızca birkaç yol döndürülür.

    TV'yi düzenlemek istiyorsanız, Wayfinder satır şablonu (&rowTpl ) arasındaki Snippet'e tıklayarak oluşturabilirsiniz. Örneğin, TV görüntünüz olarak adlandırılır. simge ve şablonu görmek ve yaklaşık olarak aşağıdaki kodu kazanmak için çalın:

    ... ...

    Ale oskіlki tse, TV'yi soymanıza izin vermez, yogo'yu aşağıdakilerle değiştirmeniz gerekir:

    ... ...

    Şimdi processTV snippet'inin ortasında aşağıdaki PHP kodunu kullanıyorum:

    getObject("modResource", $myId); $doc->getTVValue($myTV) döndür;

    Sonuç olarak, TV görüntüsü tekrar döndürülür.

    &dışTpl

    Yığının adı, orijinal kapsayıcının şablonudur.

    Kullanılabilir yer tutucular:

    • wf.classes - Wayfinder parametre setinden alınan sınıfları göster (class="" dahil)
    • wf.classnames - sınıf adlarını görüntüleyin (sınıf="" olmadan)
    • wf.wrapper - iç boşluğun (satır) görselleştirilmesi.
      [+wf.wrapper]]

    &innerTpl parametresi, &outerTpl ile aynı yer tutucu setini ayarlar.

    &satırTpl

    Yığının adı, menü satırındaki öğe şablonunu değiştirmektir.

    Kullanılabilir yer tutucular:

    • wf.classes - sınıf görüntüleme (class="" dahil) özelliği
    • wf.classnames - geçerli sınıfların gösterimi (sınıf="" olmadan)
    • wf.link - href="" menüyü bağlamak için öznitelik değeri
    • wf.title - &titleOfLinks parametresinde belirtilen alana gönderilecek başlık metninin adı
    • wf.linktext - &textOfLinks parametresinde geçirilen alanda belirtilen bağlantıya gönderilecek metin
    • wf.wrapper - iç alanı görüntüleme, örneğin alt menü
    • wf.id - visnovka benzersiz kimlik özelliği. Alma değerini hemen almak için &rowIdPrefix parametresini belirtmeniz gerekir. Değer önek + docId'dir.
    • wf.attributes - Bir akış öğesi için öznitelik izinlerini görüntüle
    • wf.docid - akış öğesinin belge kimliği
    • wf.description - akış öğesinin açıklaması
    • wf.level - mevcut para yatırma seviyesi

    Vikoristan örneği:

    [[+wf.linktext]][[+wf.wrapper]]

    Bir seçenek daha:

  • [[+wf.linktext]] - [[+wf.description]] [[+wf.wrapper]]

  • Uygulamak

    İlk Rivne


    [[! Yol Bulucu? &startId=`0` &level=`1`
    &rowTpl=`rowTpl`
    &outerTpl=`outerTpl'
    &hereClass=`etkin`
    &rowClass=`eNav_li`]]

    dışTpl yığın kodu



      [+wf.wrapper]]

    satırTpl yığın kodu



      [+wf.wrapper]]

    Başka bir seviye (menünün her butonu için, o menü öğesi görsel olarak aynı seviyedeydi

    [[! Yol Bulucu? &startId=`0` &level=`2`
    &rowTpl=`rowTplFooterMenu`
    &outerTpl=`outerTplFooterMenu`
    &innerTpl=`innerTplFooterMenu`
    &innerRowTpl=`innerRowTplFooterMenu`
    &hereClass=`etkin`]]

    OuterTplFooterMenu yığın kodu



    [+wf.wrapper]]

    rowTplFooterMenu yığın kodu




    • [+wf.başlık]]


    • [+wf.wrapper]]

    innerTplFooterMenu yığın kodu

    [+wf.wrapper]]

    innerRowTplFooterMenu yığın kodu



  • [+wf.başlık]]


  • Dinamik bir menü oluşturmak için hızlı bir şekilde snippet hazırlıyoruz Yol bulucu. Snippet, gördüğünüz gibi, şablonumuza dahil edebileceğimiz önceki dersleri hatırlayarak, Php kod snippet'lerini takip ediyorum. Yöntemi vikliku ile kodlanmıştır. Balenli kıvırcık kemerlerin yardımı için ağlarsak, o zaman snippet'ler böyle bir yardım için ağlar. [!Im'ya_snipte!]- önbelleğe alınmayan wiki, aksi halde böyle [[Im'ya_snippet]]- Wiklik, neyin paraya çevrildiği. Cilt snippet kodu suçlamaktır ve bitirmek ?> . Özel parametre değerlerini, işlendiği için dış görünüm snippet'ine aktarmak mümkündür. MODx'in zaten bir sürü hazır parçacığı var, bu yüzden şarkı söyleyebileceğiz.

    snippet yol bulucu MODx için gönderi listelerinin organizasyonunda hizmet eder. Sitemizin menüsü bu tür mesajların bir listesidir. Menümüzün oluşturulmasına temel oluşturan koçanın üzerindeki kodu tanıyalım. Menü Chanci'de yer almaktadır. BAŞLIK, eksen wono:


    • Hoş geldin

    • Tasarım Blogu

    • portföy

    • Şirketimiz

    • Bize Ulaşın

    Bu kodu gözden geçirelim, yenisiyle değiştirelim:

    ((MENÜ))

    Ve kod yeni parçaya eklenir MENÜ, yazdığımız öbek açıklamasında Site menüsü. Şimdi bu kodu çalıştıralım.

    Sitemizin menüsü, kapta ne olduğuna dair basit, numarasız bir listedir. id="templatemo_menu". Bu listeyi kapsayıcıdan düzenleyelim ve snippet'imize hızlı bir tıklama ekleyerek yenisini değiştirelim:


    [! Yol Bulucu? &startId=`0`!]

    &startId=`0`- işlenecek belgelerin saklanması gereken klasör kimliği snippet'ini belirten 0 değeriyle aynı parametre. Menüde gösterildiği gibi tüm belgelerimiz kök klasörde bulunur, kök klasörün kimliği sıfırdır. Bakalım içimizde neler var.

    Menümüz geri yüklendi, sadece aktif madde beyaz renkte görünmeyi bıraktı:

    Bunun neden olduğunu anlamak için partinin çıkış koduna bakmamız gerekiyor. Mozilla Firefox bu dereceye sahiptir: Görünüm >> Harici taraf kodu veya sadece tuşlara basarak Ctrl+U. Menümüzün kodunu biliyoruz:

    • Golovna

    • Tasarım Blogu

    • portföy

    • Şirket hakkında

    • Kişiler

    Çıkış kodunda aktif bir öğeye sahip olanlara saygı duyuyoruz sınıf = "geçerli" ve snippet'imiz otomatik olarak etkin öğeye atanır sınıf = "etkin". Ayrıca zastosovuvavsya sınıfının çıktı kodunun etiketten önce geldiği anı da not ediyoruz. ve şimdi etikete

  • . Snippet'i yeniden yazamayacağız ve sınıfı stillerde hatırlamak sorun değil.

    C:/xampp/htdocs/site/www/assets/templates/ file klasöründe bilinir templatemo_style.css yardım için o v_dkrivaєmo yogo Notepad ++. Bu dosyadaki Shukaєmo, mevcut sınıfın bir açıklamasıdır, şurada bulunur: 198 sıra:

    #templatemo_menu li .current(
    sol dolgu: 40px
    renk: #ffffff;
    }

    sınıfı değiştir akımüzerinde aktif, yogo etiketini yeniden atamayı unutmayın :

    #templatemo_menu li.active a (
    sol dolgu: 40px
    renk: #ffffff;
    }

    Dosya 'yı kaydet. Ne olduğunu merak ediyoruz.
    Menümüz, tasarımcıların istediği şekilde tasarlandı. Artık ana menümüzün yardımı için sitemizin yanlarına geçebiliriz. Kök klasöre başka belgeler eklerken, menümüzde koku otomatik olarak görünecektir. Menüde alakasız dokümanların çıkmaması için işaretli olması gerekmektedir. Menüde göster. Ek parametre için gerekli olmayan öğeyi kapatabilirsiniz. &excludeDocs=`kimin aracılığıyla hariç tutulacak belge kimliklerinin listesi`.

    Menünün alt dökümanları göstermemesi için ilerleyen derslerde yapacağımız gibi haftalık snippet'e bir parametre ekleyelim. seviye Menüdeki eşittir sayısını gösteren , kilit için tüm eşittir, belki sadece bir eşittir görüntülenecektir:


    [! Yol Bulucu? &startId=`0` &level=`1`!]

    Yeni başlayanlar için MODx Devrimi dersi 8'i onarma. Tahminimce, MODx Devrimi etkinliği için robimo sitem. Dersin geri kalanında, web sitemize işlevsellik eklememizi sağlayan PHP kodunun parçacıkları gibi parçacık kavramına baktık. Bu seviyede, özel bir snippet - Wayfinder görebiliriz ve bunu sitemiz için dinamik bir menü oluşturmak için kullanacağız.

    Yol Bulucu nedir?

    yol bulucu– ağaç sitenizin kaynaklarına gönderilen sıralanmamış bir liste gösterecek olan snippet, görüntülenen listenin türü snippet'in wiki'sinde ve bu wiki'nin parametrelerinde yer almaktır. Kısacası, şablonunuza bir Wayfinder wiki yerleştirirseniz, kaynakları aramaya başlayacaksınız, ardından yeni parametreler belirleyip listeyi döndürerek bu kaynaklara sıralanmamış liste formatında veya formatta göndereceksiniz. belirttiniz.

    Wayfinder'ı kazanmanız mı gerekiyor?

    Bir menü gibi dinamik site navigasyonu oluşturmak için Wayfinder vicorist'i oynayın. HTML şablonlarının büyük çoğunluğu menü oluşturmak için sırasız listeleri birleştirdiğinden, Wayfinder bu amaçlar için ideal araçtır. Bir site oluşturduğunuzda, daha önce statik bir HTML sitesinde yaptığınız gibi, URL'lerinizi gezinme menüsüne etkili bir şekilde ekleyebilirsiniz. Aynı zamanda, bir taraf görmeniz veya oluşturmanız gerekiyorsa, menünüzde değişiklik yapmanız gerekir, url'leri hatırlayın. Menülerinizi dinamik olarak oluşturmak için Wayfinder snippet'ini kullanmak, değişiklikleri otomatik olarak atadığı ve menünüzü otomatik olarak değiştirdiği için baş ağrısını ortadan kaldırır.

    Wayfinder akıllı bir araçtır ve menüdeki kaynakları etkinleştirmeyi veya devre dışı bırakmayı, hangi menü şablonu, sitenizin menüsünün ne kadar derin olduğunu seçmenizi sağlar. Yeteneklerinizin kordonu, HTML/CSS kodunuz tarafından belirlenir.

    Wayfinder nasıl vicorist olunur?

    Önceki derste tahmin ettiğimiz gibi, hızlı snippet'in sözdizimi şöyle görünür: [[!somesnippet]]

    Sadece temel viklik fazlasıyla yeterli, ancak suçu bu vikliğin otorite diyakozlarını belirtmek benim suçum. Wayfinder, gerektiği gibi, yetkililere atanacak en az şeye sahiptir: kaynak ağacında, Wayfinder kaynak listesini onarmaktan sorumludur. Bu şekilde, Wayfinder snippet wiki'nin bir parametreyi - koçanı kimliği - kabul etmesi gerekir. Şu anda Wayfinder snippet'inin temel wiki'si şöyle görünüyor:

    Tsey viklik, 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 onay işareti olmayan tüm kaynakları gösterir Menülerden gizle.

    Kazandığımız şablona baktığımızda, çıkartma öğeleri ve listeleri içeren üst menü ekleyebiliriz.

    Şimdi bu menüyü gösterecek olan şablona ve koda bakalım:

    Yak bachite, sırasız listenin birikintileri. Bu kodu Wayfinder base wiki ile değiştirelim ve bizde ne gördüğümüzü görelim. Menüdeki kılavuzun kodunu görüntüleyin ve yenisinin yerine geçen kodu ekleyin:

    [[! Yol Bulucu? &startId=`0` ]]

    Benimle aynı kalıbı hacklerseniz, kodunuz şöyle görünecektir:

    Şablonu kaydedin ve ana sayfaya bakın, şunları görebilirsiniz:

    Kurgu! Birkaç öğe gibi ön menümüzün de artık yalnızca bir öğeden oluşan basit bir menüyle değiştirildiğini biliyorsunuz - Ana Sayfa. Bize Wayfinder'ın nasıl çalıştığını anlatmayın, gerektiği gibi ve sitemizin bir tarafını alın ve menü öğesinin adını gösterin.

    Daha fazla kaynak yaratalım. Hakkında tarafını 3 alt tarafla (MODx, Öğreticiler, İletişim ve SSS) eklemeye çalışıyorum. Siteniz için herhangi bir yan kaynak oluşturabilirsiniz. Meta doğru - Wayfinder'ın gösterebilmesi için bir miktar kaynak yaratın.

    Sayfaları oluşturmayı bitirdim ve site için kaynak ağacım şöyle görünüyor:

    Şimdi, Wayfinder'ın wiki'sinin sitemiz için nasıl bir menü oluşturduğunu merak eden bir sürü sayfamız var:

    İyi haber şu ki, menüde tüm taraflarımız ortaya çıktı, menü öğesinin derisine doğru iterek, karşı tarafa geçeceğiz. (Bu öğeyi test etmek için, dış görünüm tarafına bir metin ekleyin, örneğin Hakkında tarafına “Bu taraf Hakkında” ekleyebilirsiniz ve taraf açıkken görünmezsiniz. Bunun için bir şablon atamamız gerektiğini unutmayın. cilt tarafı, ama şu anda tse turbuєtsya hakkında zbirayus değilim).

    Pis bir yenilik, menünün biçimlendirmesinin çöktüğü, ancak yardımcı olabiliriz. Web sayfasında fareye sağ tıklayın ve çıktı koduna (veya o firebug için etikete) bakın, şimdi kontrol edebilirsiniz yol bulucu rahatsız edici aramanın HTML'sini oluşturun:

    • Ev
    • Hakkında
      • MODX İYS
      • Kodlama Pedi
        • Blog
        • Hizmetler
    • Bize Ulaşın
    • öğreticiler
    • SSS

    Nasıl görüyorsunuz, bir tür suçlamanın ardındaki koçanı statik kodumuza daha çok benziyor. Her şeyden önce, Wayfinder oluşturulan