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:
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. |
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ımSnippet'i, arama sonuçlarını görüntülemek istediğiniz Kaynağa yerleştirmeniz yeterlidir.
[[!Basit Arama]]
Kullanılabilir Mülklertpl | 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. |
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 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:
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. |
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.
- [[+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.