• Ağacın kökünde yeni bir kaynak oluşturun

    Bugün, SimpleSearch bileşenini kullanarak Modx Revolution'da site aramasının nasıl uygulanacağına dair bir ders.

    Temel snippet parametreleri:

    Ad Açıklama Varsayılan
    tpl Her arama sonucunun içeriğini görüntülemek için kullanılan kısım. Arama sonuçları
    konteynerTpl Arama sonuçlarını, sayfalandırmayı ve gönderileri sarmak için kullanılan bir blok. Arama sonuçları
    Tüm Kelimeleri Kullan Doğruysa, yalnızca belirtilen tüm arama sözcüklerini içeren sonuçlar bulunur. 0
    maxWords Aramaya dahil edilecek maksimum kelime sayısı. Yalnızca useAllWords devre dışı bırakıldığında geçerlidir. 7
    minKarakterler Aramayı başlatmak için gereken minimum karakter sayısı. 3
    arama stili "Kısmi" LIKE araması veya alaka temelli "eşleşme" araması kullanarak arama yapmak için. kısmi
    veŞartlar Kelimelerin arasına mantıksal VE eklemek gerekli midir? 1
    maçWildcard Joker karakter aramasını etkinleştirin. Arama terimine göre tam bir arama gerçekleştirmek için false olarak ayarlayın. 1
    docFields Aranacak bireysel belge alanlarının listesi. sayfa başlığı,
    uzun başlık,
    Tanım,
    giriş metni,
    takma ad
    ,içerik
    alan gücü Sonuçların değerlendirilmesi ve sıralanması
    Sayfa başına Bir sayfa için arama sonuçlarının sayısı. 10
    gösterAyıkla Her arama sonucunun içeriğinin bir kesitinin gösterilip gösterilmeyeceği. 1
    Kaynak Çıkart Kullanıcının çıkarma işleminin nereden geldiğini belirlemesine olanak tanır. Bu parametrenin değeri bir kaynak alanının adıysa (& includeTVs ayarlanmışsa TV dahil), o kaynak alanı ayıklama için kullanılır. Aksi takdirde parametre yürütülecek parçanın adı olarak alınır. Parçaya parametre olarak bir dizi kaynak aktarılır. Bu ismin bir parçası yoksa, alıntı boş olacaktır. içerik
    ayıklamaUzunluğu Her sonuç için içerikten çıkarılacak karakter sayısı. 200
    ayıklamakElipsis Çıkarma sonuçlarını taşımak için kullanılan dize. Varsayılan üç noktadır.
    TV'leri dahil et Her kaynak şablonu için kullanılabilen özelliklere TemplateVar değerlerinin dahil edilip edilmeyeceğini belirtir. Varsayılan 0'dır. Çok sayıda TV'niz varsa bu ayarın etkinleştirilmesi işleri yavaşlatabilir. 0
    süreçTV'ler TemplateVar değerlerinin özetlenmiş bir kaynakta olduğu gibi görüntülenip görüntülenmeyeceğini belirtir. Varsayılan 0'dır. Bazı notlar: TV'ye TV adıyla erişilebilir [[+ myTV]] Varsayılan olarak SimpleSearch bir önek kullanmaz, örneğin [[+ tv.myTV]] GÖRÜNTÜLENMEZ.
    TV'ler Solr araması için indeksleme sırasında işlenir, dolayısıyla burada bunu yapmaya gerek yoktur.
    0
    vurgulaSonuçlar Sonuçlarda arama sorgusunu seçin veya dışarıda bırakın. 1
    vurgulamakSınıf Sonuçlarda vurgulanan koşullara eklenecek CSS sınıfının adı. sisea-vurgu
    vurgulamaEtiketi Vurgulanan terimi arama sonuçlarında sarmalayan bir html etiketi. açıklık
    sayfaTpl Sayfalara bağlantı vermek için kullanılan kısım. Sayfa Bağlantısı
    geçerliSayfaTpl Sayfadaki mevcut bağlantı için kullanılan blok. CurrentPageLink
    çağrı Ayırıcı Sayfa bağlantıları arasında kullanım için ayırıcı (ayırıcı). |
    kimlikler Aramayı sınırlamak için virgülle ayrılmış belge kimlikleri listesi
    Kimlik Türü ids parametresi için kısıtlama türü. Ebeveynler ise, tüm tanımlayıcı öğeler aramanın ids parametresine eklenecektir. Belgeler varsa, aramada yalnızca belirtilen tanımlayıcılar kullanılacaktır. ebeveynler
    hariç tutmak Örneğin aramanın dışında tutulacak kaynak tanımlayıcılarının virgülle ayrılmış listesi. "10,15,19." Bu, "10", "15" veya "19" kimlikli kaynakları kapsamaz.
    derinlik Kimlik türü ebeveyn olarak ayarlandıysa, belirtilen tanımlayıcılarla aranacak kaynak ağacının derinliği. 10
    gizleMenü Gizleme menüsüne sahip Kaynakları iade etmem gerekir mi? 0 yalnızca görünür kaynakları, 1 yalnızca gizli kaynakları, 2 ise her ikisini de gösterir. 2
    bağlamlar Bağlamları arayın. Hiçbiri açıkça belirtilmemişse, varsayılan geçerli bağlamın kullanılmasıdır.
    arama indeksi Arama tarafından kullanılacak REQUEST parametresinin adı. aramak
    ofsetIndex Sayfayı dengelemek için kullanılan REQUEST parametresinin adı. sisea_offset
    yer tutucuÖnek Parçacık tarafından verilen genel yer tutucular için önek. sisea.
    Yer tutucuya Çıktının doğrudan geri dönecek şekilde mi yoksa bu özelliğin adını taşıyan bir yer tutucuya mı ayarlanacağı.
    URL Şeması Gerekli URL şeması: http, https, tam, abs, göreceli vb. $modx->makeUrl() belgelerine bakın. Bu, sayfalandırma bağlantıları oluşturulduğunda kullanılır.
    özel Paketler Paketlerini indirerek özel tabloları aramak için ayarlayın. Ayrıntılar için aşağıya bakın.
    posta kancaları Nihai sonuçlara yönlü kümeler ekleyebilecek, çalıştırılacak kancaların virgülle ayrılmış listesi.
    aktifFacet Geçerli aktif kenar. Sonucun postHook aracılığıyla alınan standart dışı bir açıdan gösterilmesini istemiyorsanız bunu bırakın. varsayılan
    fasetLimit Ana sonuçlar sayfasında görüntülenecek etkin olmayan özellik sonuçlarının sayısı. 5
    göre sırala Sonuçları sıralamak için kaynak alanlarının virgülle ayrılmış listesi. İlgi ve derecelendirmeye göre sıralamak için alanı boş bırakın.
    sıralamaDir Sonuçları sıralamaya yönelik talimatların virgülle ayrılmış listesi. sortBy parametresindeki öğe sayısıyla eşleşmelidir. TANIM
    Sonuç yokTpl Arama sonuçları bulunamazsa kullanılacak yığın.
    MODX web sitesinde aramanın uygulanması

    1. Basit Arama

    2. Kodlamalar vb. ile çeşitli sorunları çözüyoruz.

    Core/components/simplesearch/model/simplesearch/simplesearch.class.php adresine gidin ve aşağıdaki satırları değiştirin:

    satır 297:

    $metin = preg_replace("/(\[\[\+.*?\]\])/i", "", $metin);

    ile değiştirin

    $metin = preg_replace("/(\[\[\+.*?\]\])/iu", "", $metin);

    satır 311:

    $metin = trim(preg_replace("/\s+/", " ", $this->sanitize($text)));

    ile değiştirin

    $metin = trim(preg_replace("/\s+/u", " ", $this->sanitize($text)));

    413. satır:

    $string = preg_replace("/" . $quoteValue . "/i", "$0", $string);

    ile değiştirin

    $string = preg_replace("/" . $quoteValue . "/iu", "$0", $string);

    179. satırı yorumlayalım:

    If (!empty($str)) $this->searchString = strip_tags($this->modx->sanitizeString($str));

    onlar. şöyle görünmeli

    /*if (!empty($str)) $this->searchString = strip_tags($this->modx->sanitizeString($str)); */

    3. core/components/simplesearch/elements/chunks/ dizininde bulunan tüm standart parçaların kopyalarını oluşturun

    Aynı adlara, -new ön ekine ve aynı içeriğe sahip (yalnızca bunlar artık dosya tabanlı değil, normaldir) yeni parçalar oluşturuyoruz ve bunları daha sonra anlayacaksınız.

    Örneğin, currentpagelink.chunk.tpl adlı ilk öbeği alıp, currentpagelink-new (elements - yeni bir öbek oluştur) adlı yeni bir öbek oluşturup kodu ona aktarıyoruz.

    [[+metin]]

    Aktif sayfa için sayfalandırmadaki düğmeyi kontrol etmekten sorumludur.

    Ve aynı şekilde kalan parçaları da oluşturuyoruz:

    — pagelink-new — ayrı bir sayfalandırma düğmesinin görüntülenmesinden sorumludur.

    [[+metin]]

    • [[+link]] - belgeye bağlantı
    • [[+metin]] - belge numarası

    — arama formu-yeni — arama formu

    [[%sisea.search? &namespace=`sisea` &topic=`varsayılan`]]

    - arama sonuçları aktarılamaz - orada tasarım yoktur;

    — searchresult-new — her sonuç öğesinin çıktısı.

    [[+idx]]. [[+sayfa başlığı]]

    [[+özet]]

    • [[+idx]] - listedeki arama sonucu numarası
    • [[+link:is=``:then=`[[~[[+id]]]]`:else=`[[+link]]`]]
    • [[+longtitle]] - genişletilmiş başlık
    • [[+pagetitle]] - başlık
    • [[+extract]] - bu belgenin bulunduğu metin

    - searchresultli - aslında aktarılamaz.

    - arama sonuçları-yeni - tüm sonuçların sarmalayıcısı

    [[+sonuçBilgisi]]

    [[+paging]] [[+results]] [[%sisea.result_pages? &namespace=`sisea` &topic=`default`]][[+paging]]

    • [[+resultInfo]] - bulunan belge sayısı ve hangi ifade için olduğu hakkında bilgi.
    • [[+sisea.result_pages? &namespace=`sisea` &topic=`varsayılan`]]

      “Arama sonuçları sayfaları:” ifadesinin görüntülenmesi:

    • [[+sayfalama]] - sayfalandırma
    • [[+sonuçlar]] - arama sonuçları

    Bütün bunlardan sonra 5 yeni parçanız olmalı.

    4. Arama sonuçlarının görüntüleneceği yeni bir belge oluşturun

    Başlık: Arama sonuçlarında “Menüde gösterme” onay kutusunu işaretleyin. “Ayarlar”a gidin ve “Aranabilir” ve “HTML düzenleyiciyi kullan” onay kutularının işaretini kaldırın. Kaydetmek. Sayfayı yenileyip içeriğe ekliyoruz

    [[!Basit Arama? &tpl=`searchresult-new` &containerTpl=`searchresults-new` &pageTpl=`pagelink-new` ¤tPageTpl=`currentpagelink-new`]]

    3. adımda (görünüm) oluşturulan tasarım parçaları.

    Arama sonuçlarının resimler içermesini istiyorsanız bunları bu çıktının sonuna ekleyin.

    &includeTVs=`1` &processTVs=`1`

    Arama sonucu öbeğinde resim şu şekilde çağrılabilir: [[+img]].

    5. Arama formunu görüntüleyin

    Arama formunu görüntülemeniz gereken yere şunu yazın:

    [[!Basit Arama Formu? &landing=`11` &tpl=`searchform-new`]]

    Burada açılış, arama sonuçlarının bulunduğu sayfanın kimliğidir, tpl ise 3. adımda oluşturulan form tasarım parçalarıdır.

    Dış tasarımı kendi takdirinize göre düzenleyebilmeniz için 4. ve 5. adımları uyguladık: formun kendisi, arama sonuçları vb. Kaynaklara girmeden. Ve standart tasarım oldukça üzücü; örneğin standart arama formu böyle görünüyor.

    6. Tasarımı değiştiriyoruz.

    Tüm parçaların nasıl tasarlanacağını açıklamanın bir anlamı yok; örnek olarak, arama formu yeni parçası için yeni bir tasarım vereceğim.

    Bu, Bootstrap 3'ün olağan standart form işaretlemesidir, sitede şöyle görünür:

    Resmi belgeler burada: docs.modx.com/extras/revo/simplesearch

    Sorularınız varsa yorumlara yazın ve sorun.

    SimpleSearch, modx devriminde site araması için standart bir pakettir. Canlı arama için buna bir ajax isteği ekleyeceğiz. Aynı sitede bir örnek görülebilir; oldukça basit bir şekilde çalışıyor ve dikkat edin, sayfalandırma ile çalışıyor. SimpleSearchForm pasajı (arama formu), SimpleSearch pasajını görüntüleyen ayrı bir sonuçlar sayfasından bir ajax isteği ister.

    1 Popüler SimpleSearch site arama paketini modx revo deposundan indirin ve yükleyin.
    Ajax'ın veri toplaması ve arama formunda istekte bulunurken göndermesi için boş şablon içeren bir kaynak oluşturuyoruz.
    Örneğin, takma adı "arama sonuçları" olarak adlandıralım ve buna ajax tarafından erişilecektir.
    Kaynak içerikleri:

    arama sonuçları if(typeof jQuery !== unDefinition) ( $(document).ready(function() ( $(".sisea-page a").click(function(event) ( // pagination event.preventDefault(); // Tarayıcının sayfalar arasında gezinmesini engeller // Sonraki arama sayfasını yükler ve kapsayıcıyı gösterir $("#site-search-results").load($(this).attr("href")).show() ; false döndür; // saplama )); )); ) [[!SimpleSearch]]

    2 Şimdi arama formunu sizin için uygun bir yere yerleştirelim, bunun için “SimpleSearchForm” pasajı sorumludur.
    Kural olarak, arama formu modx şablonlarına kaydırılır.
    Div öğesi, ajax isteğinin sonuçlarını görüntüler.

    [[!BasitAramaFormu]]

    3 Formdaki istekleri 1. adımda oluşturduğumuz sayfaya göndermek için ajax'ı bağlayalım.
    (!) Jquery'yi bağlamayı unutmayın
    (!) Ajax'ın kaynağa hangi adresten eriştiğinden emin olun. Load() yöntemi bundan 2 yerde sorumludur.

    // SimpleSearch ajax $(document).ready(function() ( // Düğme $(".sisea-search-form").submit(function () ( // bir düğmeye ihtiyacınız varsa açıklamayı kaldırın // $("# site- arama sonuçları").load("/search-results/",$(".sisea-search-form").serialize()).slideDown("fast"); return false; )); // Canlı arama $(".sisea-search-form input").keyup(function() ( if(this.value.length > 2) ( // Kullanıcı arama dizesine 2'den fazla karakter yazar // sonuçları gizler/gösterir pencerenin dışında $(document).click(function(event)( // hide if ($(event.target).closest(".site-search-results").length) return; $(".site-search) -results" ).slideUp("hızlı"); //event.stopPropagation(); )); $("#search").click(function() ( // display $(".site-search-results") ).slideDown ("hızlı"); return false; )); // ajax, sayfadan arama sonuçlarının yüklenmesini ve kapsayıcının görüntülenmesini ister $("#site-search-results").load("/search-results/" ,$(".sisea-search-form").serialize()).slideDown("fast"); ) else ( // 2 karakterden az yazılırsa kapsayıcıyı gizleyin (CSS ekranı:none;) $( "#site-arama-sonuçları" .slideUp("hızlı"); ) )); ));

    4 Pencereyi gizleme ve açığa çıkarmanın ajax etkisinin sonuçlarını ve gerekli görüntüleme stillerini minimum düzeyde görüntülemek için css'i bağlarız. Modx devrimindeki SimpleSearch paketinin kılavuzunda açıklandığı gibi stillerin geri kalanını kendiniz tamamlayın.

    /* SimpleSearch ajax */ .site-search-results ( display:none; konum:mutlak; text-align:left; dolgu:15px; arka plan:#F7F7F7; border-radius:5px; -webkit-border-radius:5px ; -moz-border-radius:5px; box-shadow: 2px 3px 9px -2px rgba(50, 50, 50, 0,55); -webkit-box-shadow: 2px 3px 9px -2px rgba(50, 50, 50, 0,55); -moz-kutusu-gölge: 2px 3px 9px -2px rgba(50, 50, 50, 0,55); )

    SimpleSearchForm snippet'indeki arama düğmesi tamamen kaldırılabilir
    çünkü ajax zaten Enter tuşuna basmayı kesiyor.

    Bu kod parçası, gönderilen arama kriterlerine göre arama sonuçlarını görüntüler.

    Kullanım

    Snippet'i, arama sonuçlarını görüntülemek istediğiniz Kaynağa yerleştirmeniz yeterlidir.

    [[!Basit Arama]]

    Kullanılabilir Mülkler Ad Açıklama Varsayılan
    tpl Her arama sonucunun içeriğini görüntülemek için kullanılacak parça. Arama sonuçları
    konteynerTpl Tüm arama sonuçlarını, sayfalandırmayı ve mesajı sarmak için kullanılacak yığın. Arama Sonuçları
    Tüm Kelimeleri Kullan Doğruysa, yalnızca belirtilen tüm arama sözcüklerini içeren sonuçları bulur. 0
    maxWords Aramaya dahil edilecek maksimum kelime sayısı. Yalnızca useAllWords kapalıysa geçerlidir. 7
    minKarakterler Aramayı tetikleyecek minimum karakter sayısı. 3
    arama stili "Kısmi" LIKE aramasıyla veya alaka temelli "eşleşme" aramasıyla arama yapmak için. kısmi
    veŞartlar Kelimeler arasına mantıksal bir VE eklenip eklenmeyeceği. 1
    maçWildcard Joker karakter aramasını etkinleştirin. Bir arama teriminde tam arama yapmak için false olarak ayarlayın. 1
    docFields Aranacak belirli Kaynak alanlarının virgülle ayrılmış listesi. sayfa başlığı,uzun başlık,takma ad,açıklama,giriş metni,içerik
    alan gücü Sonuçları puanlayın ve sıralayın (daha fazla bilgi/kullanım için https://github.com/splittingred/SimpleSearch/pull/29 adresine bakın)
    Sayfa başına Sayfa başına gösterilecek arama sonuçlarının sayısı. 10
    gösterAyıkla Her arama sonucunun içeriğinin bir özetinin gösterilip gösterilmeyeceği. 1
    Kaynak Çıkart (sürüm 1.9'da yeni) Kullanıcının alıntının nereden geldiğini tanımlamasına olanak tanır. Bu parametrenin değeri bir kaynak alanı adıysa (&includeTVs ayarlanmışsa TV'ler dahil), o kaynak alanı ayıklama için kullanılır. Aksi takdirde parametre çalıştırılacak bir Snippet'in adı olarak alınır. Parçacık, kaynak dizisine parametre olarak iletilir. Bu adda bir Snippet yoksa alıntı boş olacaktır. içerik
    ayıklamaUzunluğu Her arama sonucunun içeriğinin çıkarılması için karakter sayısı. 200
    ayıklamakElipsis Çıkarma sonuçlarını sarmak için kullanılan dize. Varsayılan olarak üç nokta kullanılır. ...
    TV'leri dahil et Her kaynak şablonunun kullanabileceği özelliklere TemplateVar değerlerinin dahil edilmesi gerekip gerekmediğini belirtir. Varsayılan 0'dır. Çok sayıda TV'niz varsa, bunu açmak aramanızı yavaşlatabilir. 0
    TV Listesini dahil et includeTVs 1 ise açıkça eklenecek isteğe bağlı virgülle ayrılmış TemplateVar adları listesi.
    proses TV'ler TemplateVar değerlerinin özetlenen kaynakta olduğu gibi işlenmesi gerekip gerekmediğini belirtir. Varsayılan 0'dır. Bazı notlar:
    TV'lere TV adlarıyla erişilebilir [[+myTV]] SimpleSearch varsayılan olarak bir önek kullanmaz, ör. [[+tv.myTV]] OLUŞTURULMAZ. TV'ler Solr araması için indeksleme sırasında işlenir, dolayısıyla burada bunu yapmaya gerek yoktur.
    0
    vurgulaSonuçlar Arama teriminin sonuçlarda vurgulanıp vurgulanmaması. 1
    vurgulamakSınıf Sonuçlarda vurgulanan terimlere eklenecek CSS sınıfı adı. basit arama-vurgulama
    vurgulamaEtiketi Vurgulanan terimi arama sonuçlarında sarmalayacak html etiketi. açıklık
    sayfaTpl Sayfalandırma bağlantısı için kullanılacak yığın. Sayfa Bağlantısı
    geçerliSayfaTpl Geçerli sayfalandırma bağlantısı için kullanılacak yığın. CurrentPageLink
    çağrı Ayırıcı Sayfalandırma bağlantıları arasında kullanılacak ayırıcı.
    kimlikler Aramanın sınırlandırılacağı virgülle ayrılmış kimlik listesi.
    Kimlik Türü ids parametresi için kısıtlama türü. Ebeveynler ise, ids parametresindeki ID'lerin tüm alt çocuklarını aramaya ekleyecektir. Belgeler varsa, aramada yalnızca belirtilen kimlikler kullanılır. ebeveynler
    hariç tutmak Aramanın dışında tutulacak kaynak kimliklerinin virgülle ayrılmış listesi, ör. "10,15,19". Bu, "10", "15" veya "19" kimliğine sahip kaynakları hariç tutacaktır.
    derinlik Kimlik türü üst öğe olarak ayarlanmışsa, belirtilen kimliklerle aranacak Kaynak ağacının derinliği. 10
    gizleMenü Gizleme menüsü açık olan Kaynakların döndürülüp döndürülmeyeceği. 0 yalnızca görünür Kaynakları gösterir, 1 yalnızca gizli Kaynakları gösterir, 2 her ikisini de gösterir. 2
    bağlamlar Aranacak bağlamlar. Hiçbiri açıkça belirtilmemişse varsayılan olarak geçerli bağlam kullanılır.
    arama indeksi Aramanın kullanacağı REQUEST parametresinin adı. aramak
    ofsetIndex Sayfalandırma uzaklığı için kullanılacak REQUEST parametresinin adı. simplesearch_offset
    yer tutucuÖnek Bu snippet tarafından belirlenen genel yer tutucuların öneki. basit arama.
    Yer tutucuya Çıktının doğrudan geri dönecek şekilde mi yoksa bu özellik adına sahip bir yer tutucuya mı ayarlanacağı.
    URL Şeması İstediğiniz URL şeması: http, https, tam, abs, göreceli vb. $modx->makeUrl() belgelerine bakın. Bu, sayfalandırma bağlantıları oluşturulduğunda kullanılır.
    özel Paketler Özel tabloları paketlerini yükleyerek aramak için ayarlayın. Daha fazla ayrıntı için aşağıya bakın.
    posta kancaları Nihai sonuçlara yönlü kümeler ekleyebilecek, çalıştırılacak kancaların virgülle ayrılmış listesi.
    aktifFacet Geçerli aktif yön. Bir postHook aracılığıyla türetilmiş standart olmayan bir özellikten sonuç gösterilmesini istemediğiniz sürece bunu yalnız bırakın. varsayılan
    fasetLimit Ana sonuçlar sayfasında gösterilecek etkin olmayan bölüm sonuçlarının sayısı. 5
    göre sırala Sonuçların sıralanacağı Kaynak alanlarının virgülle ayrılmış listesi. İlgi düzeyine ve puana göre sıralamak için boş bırakın.
    sıralamaDir Sonuçların sıralanacağı virgülle ayrılmış yol tarifleri listesi. sortBy parametresindeki öğe sayısıyla eşleşmelidir. TANIM
    Sonuç yokTpl Hiçbir arama sonucu bulunamadığında kullanılacak yığın.
    Basit Arama Parçaları

    SimpleSearch'te işlenen 4 parça vardır. Bunların karşılık gelen SimpleSearch parametreleri şunlardır:

    • tpl - Görüntülenen her sonuç için kullanılacak Parça.
    • ContainerTpl - Tüm arama sonuçlarını, sayfalandırmayı ve mesajı sarmak için kullanılacak Parça.
    • pageTpl - Sayfalandırma bağlantısı için kullanılacak Parça.
    • currentPageTpl - Geçerli sayfalandırma bağlantısı için kullanılacak Parça.
    Özel Tabloları Arama

    Özel tablolarda arama yapmak SimpleSearch'te &customPackages özelliği kullanılarak yapılabilir; ancak bunun için oluşturulmuş özel bir paketinizin olması gerekir. Format şu şekildedir:

    ClassName:fieldName(s):packageName:packagePath:joinCriteria||class2Name:fieldName(s):package2Name:package2Path:join2Criteria

    Başka bir deyişle, her özel paket || ile ayrılır. Daha sonra her bir kısmı iki nokta üst üste (:) ile ayrılır. Quip yorumlarını aramak için bir örnek:

    &customPackages=`quipComment:body:quip:(core_path)components/quip/model/:quipComment.resource = modResource.id`

    Her bir parçayı parçalayalım:

    • className - Aramak istediğiniz tablonun sınıf adı. İşte QuipComment.
    • fieldName(s) - Aranacak sütun adlarının virgülle ayrılmış listesi. Biz "gövde" yaptık, siz de "gövde, e-posta" falan da yapabilirdiniz.
    • packageName - Eklenecek şema Paketinin adı. Buna quip denir.
    • packagePath - Paketin bulunduğu model/dizinin yolu.
    • joinCriteria - Aramak istediğiniz tabloya ve modResource tablosuna katılacak SQL. Tablonuzun bulunduğu Kaynakla bir bağlantısı olmalıdır (aksi takdirde SimpleSearch bunun için bir URL'yi nasıl yükleyeceğini bilemez!)

    Ekledikten sonra bu alanlarda da veri arayacaktır. Eğer bu tabloda bulursa, sonucu joinCriteria'nızda belirttiğiniz Kaynağa bir bağlantı olarak gösterecektir. Örneğimizde bu, Quip yorumunun bulunduğu kaynak.

    Bugün, SimpleSearch bileşenini kullanarak Modx Revolution'da site aramasının nasıl uygulanacağına dair bir ders.

    Temel snippet parametreleri:

    Ad Açıklama Varsayılan
    tpl Her arama sonucunun içeriğini görüntülemek için kullanılan kısım. Arama sonuçları
    konteynerTpl Arama sonuçlarını, sayfalandırmayı ve gönderileri sarmak için kullanılan bir blok. Arama sonuçları
    Tüm Kelimeleri Kullan Doğruysa, yalnızca belirtilen tüm arama sözcüklerini içeren sonuçlar bulunur. 0
    maxWords Aramaya dahil edilecek maksimum kelime sayısı. Yalnızca useAllWords devre dışı bırakıldığında geçerlidir. 7
    minKarakterler Aramayı başlatmak için gereken minimum karakter sayısı. 3
    arama stili "Kısmi" LIKE araması veya alaka temelli "eşleşme" araması kullanarak arama yapmak için. kısmi
    veŞartlar Kelimelerin arasına mantıksal VE eklemek gerekli midir? 1
    maçWildcard Joker karakter aramasını etkinleştirin. Arama terimine göre tam bir arama gerçekleştirmek için false olarak ayarlayın. 1
    docFields Aranacak bireysel belge alanlarının listesi. sayfa başlığı,
    uzun başlık,
    Tanım,
    giriş metni,
    takma ad
    ,içerik
    alan gücü Sonuçların değerlendirilmesi ve sıralanması
    Sayfa başına Bir sayfa için arama sonuçlarının sayısı. 10
    gösterAyıkla Her arama sonucunun içeriğinin bir kesitinin gösterilip gösterilmeyeceği. 1
    Kaynak Çıkart Kullanıcının çıkarma işleminin nereden geldiğini belirlemesine olanak tanır. Bu parametrenin değeri bir kaynak alanının adıysa (& includeTVs ayarlanmışsa TV dahil), o kaynak alanı ayıklama için kullanılır. Aksi takdirde parametre yürütülecek parçanın adı olarak alınır. Parçaya parametre olarak bir dizi kaynak aktarılır. Bu ismin bir parçası yoksa, alıntı boş olacaktır. içerik
    ayıklamaUzunluğu Her sonuç için içerikten çıkarılacak karakter sayısı. 200
    ayıklamakElipsis Çıkarma sonuçlarını taşımak için kullanılan dize. Varsayılan üç noktadır.
    TV'leri dahil et Her kaynak şablonu için kullanılabilen özelliklere TemplateVar değerlerinin dahil edilip edilmeyeceğini belirtir. Varsayılan 0'dır. Çok sayıda TV'niz varsa bu ayarın etkinleştirilmesi işleri yavaşlatabilir. 0
    süreçTV'ler TemplateVar değerlerinin özetlenmiş bir kaynakta olduğu gibi görüntülenip görüntülenmeyeceğini belirtir. Varsayılan 0'dır. Bazı notlar: TV'ye TV adıyla erişilebilir [[+ myTV]] Varsayılan olarak SimpleSearch bir önek kullanmaz, örneğin [[+ tv.myTV]] GÖRÜNTÜLENMEZ.
    TV'ler Solr araması için indeksleme sırasında işlenir, dolayısıyla burada bunu yapmaya gerek yoktur.
    0
    vurgulaSonuçlar Sonuçlarda arama sorgusunu seçin veya dışarıda bırakın. 1
    vurgulamakSınıf Sonuçlarda vurgulanan koşullara eklenecek CSS sınıfının adı. sisea-vurgu
    vurgulamaEtiketi Vurgulanan terimi arama sonuçlarında sarmalayan bir html etiketi. açıklık
    sayfaTpl Sayfalara bağlantı vermek için kullanılan kısım. Sayfa Bağlantısı
    geçerliSayfaTpl Sayfadaki mevcut bağlantı için kullanılan blok. CurrentPageLink
    çağrı Ayırıcı Sayfa bağlantıları arasında kullanım için ayırıcı (ayırıcı). |
    kimlikler Aramayı sınırlamak için virgülle ayrılmış belge kimlikleri listesi
    Kimlik Türü ids parametresi için kısıtlama türü. Ebeveynler ise, tüm tanımlayıcı öğeler aramanın ids parametresine eklenecektir. Belgeler varsa, aramada yalnızca belirtilen tanımlayıcılar kullanılacaktır. ebeveynler
    hariç tutmak Örneğin aramanın dışında tutulacak kaynak tanımlayıcılarının virgülle ayrılmış listesi. "10,15,19." Bu, "10", "15" veya "19" kimlikli kaynakları kapsamaz.
    derinlik Kimlik türü ebeveyn olarak ayarlandıysa, belirtilen tanımlayıcılarla aranacak kaynak ağacının derinliği. 10
    gizleMenü Gizleme menüsüne sahip Kaynakları iade etmem gerekir mi? 0 yalnızca görünür kaynakları, 1 yalnızca gizli kaynakları, 2 ise her ikisini de gösterir. 2
    bağlamlar Bağlamları arayın. Hiçbiri açıkça belirtilmemişse, varsayılan geçerli bağlamın kullanılmasıdır.
    arama indeksi Arama tarafından kullanılacak REQUEST parametresinin adı. aramak
    ofsetIndex Sayfayı dengelemek için kullanılan REQUEST parametresinin adı. sisea_offset
    yer tutucuÖnek Parçacık tarafından verilen genel yer tutucular için önek. sisea.
    Yer tutucuya Çıktının doğrudan geri dönecek şekilde mi yoksa bu özelliğin adını taşıyan bir yer tutucuya mı ayarlanacağı.
    URL Şeması Gerekli URL şeması: http, https, tam, abs, göreceli vb. $modx->makeUrl() belgelerine bakın. Bu, sayfalandırma bağlantıları oluşturulduğunda kullanılır.
    özel Paketler Paketlerini indirerek özel tabloları aramak için ayarlayın. Ayrıntılar için aşağıya bakın.
    posta kancaları Nihai sonuçlara yönlü kümeler ekleyebilecek, çalıştırılacak kancaların virgülle ayrılmış listesi.
    aktifFacet Geçerli aktif kenar. Sonucun postHook aracılığıyla alınan standart dışı bir açıdan gösterilmesini istemiyorsanız bunu bırakın. varsayılan
    fasetLimit Ana sonuçlar sayfasında görüntülenecek etkin olmayan özellik sonuçlarının sayısı. 5
    göre sırala Sonuçları sıralamak için kaynak alanlarının virgülle ayrılmış listesi. İlgi ve derecelendirmeye göre sıralamak için alanı boş bırakın.
    sıralamaDir Sonuçları sıralamaya yönelik talimatların virgülle ayrılmış listesi. sortBy parametresindeki öğe sayısıyla eşleşmelidir. TANIM
    Sonuç yokTpl Arama sonuçları bulunamazsa kullanılacak yığın.
    MODX web sitesinde aramanın uygulanması

    1. Basit Arama

    2. Kodlamalar vb. ile çeşitli sorunları çözüyoruz.

    Core/components/simplesearch/model/simplesearch/simplesearch.class.php adresine gidin ve aşağıdaki satırları değiştirin:

    satır 297:

    $metin = preg_replace("/(\[\[\+.*?\]\])/i", "", $metin);

    ile değiştirin

    $metin = preg_replace("/(\[\[\+.*?\]\])/iu", "", $metin);

    satır 311:

    $metin = trim(preg_replace("/\s+/", " ", $this->sanitize($text)));

    ile değiştirin

    $metin = trim(preg_replace("/\s+/u", " ", $this->sanitize($text)));

    413. satır:

    $string = preg_replace("/" . $quoteValue . "/i", "$0", $string);

    ile değiştirin

    $string = preg_replace("/" . $quoteValue . "/iu", "$0", $string);

    179. satırı yorumlayalım:

    If (!empty($str)) $this->searchString = strip_tags($this->modx->sanitizeString($str));

    onlar. şöyle görünmeli

    /*if (!empty($str)) $this->searchString = strip_tags($this->modx->sanitizeString($str)); */

    3. core/components/simplesearch/elements/chunks/ dizininde bulunan tüm standart parçaların kopyalarını oluşturun

    Aynı adlara, -new ön ekine ve aynı içeriğe sahip (yalnızca bunlar artık dosya tabanlı değil, normaldir) yeni parçalar oluşturuyoruz ve bunları daha sonra anlayacaksınız.

    Örneğin, currentpagelink.chunk.tpl adlı ilk öbeği alıp, currentpagelink-new (elements - yeni bir öbek oluştur) adlı yeni bir öbek oluşturup kodu ona aktarıyoruz.

    [[+metin]]

    Aktif sayfa için sayfalandırmadaki düğmeyi kontrol etmekten sorumludur.

    Ve aynı şekilde kalan parçaları da oluşturuyoruz:

    — pagelink-new — ayrı bir sayfalandırma düğmesinin görüntülenmesinden sorumludur.

    [[+metin]]

    • [[+link]] - belgeye bağlantı
    • [[+metin]] - belge numarası

    — arama formu-yeni — arama formu

    [[%sisea.search? &namespace=`sisea` &topic=`varsayılan`]]

    - arama sonuçları aktarılamaz - orada tasarım yoktur;

    — searchresult-new — her sonuç öğesinin çıktısı.

    [[+idx]]. [[+sayfa başlığı]]

    [[+özet]]

    • [[+idx]] - listedeki arama sonucu numarası
    • [[+link:is=``:then=`[[~[[+id]]]]`:else=`[[+link]]`]]
    • [[+longtitle]] - genişletilmiş başlık
    • [[+pagetitle]] - başlık
    • [[+extract]] - bu belgenin bulunduğu metin

    - searchresultli - aslında aktarılamaz.

    - arama sonuçları-yeni - tüm sonuçların sarmalayıcısı

    [[+sonuçBilgisi]]

    [[+paging]] [[+results]] [[%sisea.result_pages? &namespace=`sisea` &topic=`default`]][[+paging]]

    • [[+resultInfo]] - bulunan belge sayısı ve hangi ifade için olduğu hakkında bilgi.
    • [[+sisea.result_pages? &namespace=`sisea` &topic=`varsayılan`]]

      “Arama sonuçları sayfaları:” ifadesinin görüntülenmesi:

    • [[+sayfalama]] - sayfalandırma
    • [[+sonuçlar]] - arama sonuçları

    Bütün bunlardan sonra 5 yeni parçanız olmalı.

    4. Arama sonuçlarının görüntüleneceği yeni bir belge oluşturun

    Başlık: Arama sonuçlarında “Menüde gösterme” onay kutusunu işaretleyin. “Ayarlar”a gidin ve “Aranabilir” ve “HTML düzenleyiciyi kullan” onay kutularının işaretini kaldırın. Kaydetmek. Sayfayı yenileyip içeriğe ekliyoruz

    [[!Basit Arama? &tpl=`searchresult-new` &containerTpl=`searchresults-new` &pageTpl=`pagelink-new` ¤tPageTpl=`currentpagelink-new`]]

    3. adımda (görünüm) oluşturulan tasarım parçaları.

    Arama sonuçlarının resimler içermesini istiyorsanız bunları bu çıktının sonuna ekleyin.

    &includeTVs=`1` &processTVs=`1`

    Arama sonucu öbeğinde resim şu şekilde çağrılabilir: [[+img]].

    5. Arama formunu görüntüleyin

    Arama formunu görüntülemeniz gereken yere şunu yazın:

    [[!Basit Arama Formu? &landing=`11` &tpl=`searchform-new`]]

    Burada açılış, arama sonuçlarının bulunduğu sayfanın kimliğidir, tpl ise 3. adımda oluşturulan form tasarım parçalarıdır.

    Dış tasarımı kendi takdirinize göre düzenleyebilmeniz için 4. ve 5. adımları uyguladık: formun kendisi, arama sonuçları vb. Kaynaklara girmeden. Ve standart tasarım oldukça üzücü; örneğin standart arama formu böyle görünüyor.

    6. Tasarımı değiştiriyoruz.

    Tüm parçaların nasıl tasarlanacağını açıklamanın bir anlamı yok; örnek olarak, arama formu yeni parçası için yeni bir tasarım vereceğim.

    Bu, Bootstrap 3'ün olağan standart form işaretlemesidir, sitede şöyle görünür:

    Resmi belgeler burada: docs.modx.com/extras/revo/simplesearch

    Sorularınız varsa yorumlara yazın ve sorun.