Форум русской поддержки Joomla!® CMS
05.12.2016, 00:28:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

[Решено] Поиск только внутри одного материала, как?

 (Прочитано 237 раз)
0 Пользователей и 1 Гость смотрят эту тему.
x1
Давно я тут
****

Репутация: +13/-0
Offline Offline

Сообщений: 363


« : 15.05.2016, 11:49:58 »

Как можно сделать поиск внутри материала? Не поиск материалов по категриям или тегам, а именно реализовать поиск внутри материала, при его просмотре?
« Последнее редактирование: 16.05.2016, 13:37:12 от x1 » Записан
KKAAZZOO
Практически профи
*******

Репутация: +101/-9
Offline Offline

Сообщений: 2082


« Ответ #1 : 15.05.2016, 12:28:46 »

ctrl+f
Записан
x1
Давно я тут
****

Репутация: +13/-0
Offline Offline

Сообщений: 363


« Ответ #2 : 15.05.2016, 14:24:36 »

ctrl+f
Это очень круто. Мне придется писать целый мануал, что такое Ctrl, где его искать, и что такое "плюс" (его нажимать оказывается не надо)... У меня начальник будет искать такую клавишу 2 дня. Предполагается, что перед материалом имеется строка поискового запроса и клавиша найти.  Зачем это нужно: представьте себе материал, в нем таблица с  200 параграфами. Нужно перейти к нужному абзацу.
Записан
vipiusss
Профи
********

Репутация: +260/-8
Offline Offline

Пол: Мужской
Сообщений: 4570


Skype: renor_


« Ответ #3 : 15.05.2016, 15:10:11 »

http://ruseller.com/adds/adds2000/example/
Плагин jQuery для поиска аля "special for boss".
Записан
robert
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3574


« Ответ #4 : 15.05.2016, 17:37:25 »

https://jsfiddle.net/n_robert/ksf21r1m/
Записан
x1
Давно я тут
****

Репутация: +13/-0
Offline Offline

Сообщений: 363


« Ответ #5 : 16.05.2016, 12:04:59 »

https://jsfiddle.net/n_robert/ksf21r1m/
Самое то! Плюсик добавил. Может кому пригодится:

Файлик скрипта обзываем "search.js"  и помещаем на хостинг, например  http://your-site.com/templates/t3_blank/js/search.js
Содержимое search.js:
Код:
(function($) {
  $(document).ready(function() {
    $(document).on('click', '#search', function() {
      $('html,body').animate({
        scrollTop: $(document).find('p:contains("' + $('#keyword').val() + '")').offset().top
      }, 500);
    });
  });
})(jQuery);

В материал вставляем (не забываем отключить редактор):
Код:
<input type="text" id="keyword" value="Что ищем" />
<input type="button" id="search" value="Search" />

<script type="text/javascript" src="http://your-site.com/templates/t3_blank/js/search.js">
</script>
« Последнее редактирование: 16.05.2016, 13:04:35 от x1 » Записан
x1
Давно я тут
****

Репутация: +13/-0
Offline Offline

Сообщений: 363


« Ответ #6 : 16.05.2016, 16:56:06 »

И что бы поставить точку в теме, альтернативное решение: найти в тексте материала слово или слова и выделить их цветом.

Создать файл "highlight.js" и записать его на хостинг:

Код:
// highlight

$.fn.highlight = function (b, k) {
   function l() {
       $("." + c.className).each(function (c, e) {
           var a = e.previousSibling,
               d = e.nextSibling,
               b = $(e),
               f = "";
           a && 3 == a.nodeType && (f += a.data, a.parentNode.removeChild(a));
           e.firstChild && (f += e.firstChild.data);
           d && 3 == d.nodeType && (f += d.data, d.parentNode.removeChild(d));
           b.replaceWith(f)
       })
   }

   function h(b) {
       b = b.childNodes;
       for (var e = b.length, a; a = b[--e];)
           if (3 == a.nodeType) {
               if (!/^\s+$/.test(a.data)) {
                   var d = a.data,
                       d = d.replace(m, '<span class="' + c.className + '">$1</span>');
                   $(a).replaceWith(d)
               }
           } else 1 == a.nodeType && a.childNodes && (!/(script|style)/i.test(a.tagName) && a.className != c.className) && h(a)
   }
   var c = {
       split: "\\s+",
       className: "highlight",
       caseSensitive: !1,
       strictly: !1,
       remove: !0
   }, c = $.extend(c, k);
   c.remove && l();
   b = $.trim(b);
   var g = c.strictly ? "" : "\\S*",
       m = RegExp("(" + g + b.replace(RegExp(c.split, "g"), g + "|" + g) + g + ")", (c.caseSensitive ? "" : "i") + "g");
   return this.each(function () {
       b && h(this)
   })
};

$(function () {
$('#scan').click(function () {
      var settings = {};
      var pattern = $('#pattern').val();
      $("#right").prop("checked") && (settings.strictly = true);
      $("#case").prop("checked") && (settings.caseSensitive = true);
      $("#remove").prop("checked") && (settings.remove = false);
      pattern && $("div").highlight(pattern, settings)
  })
})


В материал статьи вставить:
Код:

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://your-site.com/templates/t3_blank/js/highlight.js"></script>

<form>
    <input id="pattern" name="" value="Что ищем"><label>Слова через пробел|ы</label><br>
    <input id="right" name="" type="checkbox"><label>Точное совпадение</label><br>
    <input id="case" name="" type="checkbox"><label>Учитывать регистр</label><br>
    <input id="remove" name="" type="checkbox"><label>Сохранить предыдущее выделение</label><br>
    <input id="scan" name="" type="button" value="Найти">
</form>

Поправьте путь к скрипту highlight.js на вашем сайте, у меня так, в папке шаблона: "http://your-site.com/templates/t3_blank/js/highlight.js",
но можно и в отдельную папку "js": "http://your-site.com/js/highlight.js"

Изменить стиль подсветки можно так например:
 
Код:
span.highlight {
    background-color: #ddd;
    border-radius: 4px 4px 4px 4px;
    padding: 4px 14px;
   }

Взято от сюда: http://javascript.ru/forum/project/40276-jquery-highlight-plugin-%E2%80%94-podsvetka-slov-v-tekste.html
« Последнее редактирование: 16.05.2016, 19:07:33 от x1 » Записан
x1
Давно я тут
****

Репутация: +13/-0
Offline Offline

Сообщений: 363


« Ответ #7 : 17.05.2016, 12:17:04 »

Есть большое желание продолжить эту тему, например так - есть ли у кого нибудь решение поиска и подсветки в многостраничном документе?
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet