Плагин Sphinx Search для Joomla 2.5 и UTF-8

Sphinx - это поисковая система, позволяющая быстро индексировать таблицы баз данных и производить полнотекстовый поиск по ним. В основе работы системы лежит принцип индексации базы альтернативным приложением. Приложение Sphinx устанавливается в систему. Все настройки для него прописываются в конфигурационном файле sphinx.conf, в числе которых присутствуют параметры соединения с базой данных, запросы к таблицам для индексирования, каталоги для хранения индексов и прочее. Полную документацию для настройки sphinx.conf можно найти здесь. После установки вы получаете пять плагинов для поиска по различным компонентам Joomla и компонент административной части для настройки. Активировав поисковые плагины Sphinx, можно деактивировать стандартный поиск Joomla. Для успешной индексации русскоязычных баз данных пришлось немного изменить конфиг sphinx. Пример можете посмотреть ниже. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 # # site parent source site-parent { type = mysql sql_host = localhost sql_user = dbuser sql_pass = dbpass sql_db = dbname sql_port = 3306 sql_query_pre = SET NAMES 'utf8' sql_query_pre = SET SESSION query_cache_type=OFF } # # Joomla articles # source joomla_articles : site-parent { #only published and Public articles are indexed sql_query = \ SELECT `id`, `title`, `introtext`, `fulltext`, `metakey`, `metadesc`, \ UNIX_TIMESTAMP(`created`) as created, `hits`, `catid` \ FROM nz6ol_content \ WHERE state = 1; sql_attr_uint = hits sql_attr_uint = catid sql_attr_string = title sql_attr_timestamp = created } index joomla_articles { source = joomla_articles path = /var/www/site.com/sphinx/data/articles morphology = stem_enru, soundex, metaphone charset_type = utf-8 charset_table = U+FF10..U+FF19->0..9, 0..9, U+FF41..U+FF5A->a..z, U+FF21..U+FF3A->a..z, A..Z->a..z, a..z, U+0149, U+017F, U+0138, U+00DF, U+00FF, U+00C0..U+00D6->U+00E0..U+00F6, U+00E0..U+00F6, U+00D8..U+00DE->U+00F8..U+00FE, U+00F8..U+00FE, U+0100->U+0101, U+0101, U+0102->U+0103, U+0103, U+0104->U+0105, U+0105, U+0106->U+0107, U+0107, U+0108->U+0109, U+0109, U+010A->U+010B, U+010B, U+010C->U+010D, U+010D, U+010E->U+010F, U+010F, U+0110->U+0111, U+0111, U+0112->U+0113, U+0113, U+0114->U+0115, U+0115, U+0116->U+0117, U+0117, U+0118->U+0119, U+0119, U+011A->U+011B, U+011B, U+011C->U+011D, U+011D, U+011E->U+011F, U+011F, U+0130->U+0131, U+0131, U+0132->U+0133, U+0133, U+0134->U+0135, U+0135, U+0136->U+0137, U+0137, U+0139->U+013A, U+013A, U+013B->U+013C, U+013C, U+013D->U+013E, U+013E, U+013F->U+0140, U+0140, U+0141->U+0142, U+0142, U+0143->U+0144, U+0144, U+0145->U+0146, U+0146, U+0147->U+0148, U+0148, U+014A->U+014B, U+014B, U+014C->U+014D, U+014D, U+014E->U+014F, U+014F, U+0150->U+0151, U+0151, U+0152->U+0153, U+0153, U+0154->U+0155, U+0155, U+0156->U+0157, U+0157, U+0158->U+0159, U+0159, U+015A->U+015B, U+015B, U+015C->U+015D, U+015D, U+015E->U+015F, U+015F, U+0160->U+0161, U+0161, U+0162->U+0163, U+0163, U+0164->U+0165, U+0165, U+0166->U+0167, U+0167, U+0168->U+0169, U+0169, U+016A->U+016B, U+016B, U+016C->U+016D, U+016D, U+016E->U+016F, U+016F, U+0170->U+0171, U+0171, U+0172->U+0173, U+0173, U+0174->U+0175, U+0175, U+0176->U+0177, U+0177, U+0178->U+00FF, U+00FF, U+0179->U+017A, U+017A, U+017B->U+017C, U+017C, U+017D->U+017E, U+017E, U+0410..U+042F->U+0430..U+044F, U+0430..U+044F, U+4E00..U+9FFF enable_star = 1 expand_keywords = 1 index_exact_words = 1 min_word_len = 3 min_prefix_len = 0 min_infix_len = 3 } # # Joomla web links # source joomla_weblinks : site-parent { #only published links are indexed sql_query = \ SELECT `id`, `catid`, `title`, `description`, UNIX_TIMESTAMP(`created`) as created, `hits` \ FROM nz6ol_weblinks \ WHERE state = 1; sql_attr_uint = hits sql_attr_uint = catid sql_attr_string = title sql_attr_timestamp = created } index joomla_weblinks { source = joomla_weblinks path = /var/www/site.com/sphinx/data/weblinks morphology = none min_word_len = 3 min_prefix_len = 0 min_infix_len = 3 } # # Joomla contacts # source joomla_contacts : site-parent { sql_query = \ SELECT `id`, `catid`, `name` as title, `con_position`, `address`, `state`,\ `country`, `postcode`, `telephone`, `misc`, `email_to`, id as modified, 0 as`hits`, id as created \ FROM nz6ol_contact_details \ WHERE published = 1; sql_attr_uint = hits sql_attr_uint = catid sql_attr_string = title sql_attr_uint = created } index joomla_contacts { source = joomla_contacts path = /var/www/site.com/sphinx/data/contacts morphology = none min_word_len = 3 min_prefix_len = 0 min_infix_len = 3 } # # Joomla categories # source joomla_categories : site-parent { #only published links are indexed sql_query = \ SELECT `id`, id as `catid`, `title`, `description`, 0 as `hits`, 0 as `created`\ FROM nz6ol_categories \ WHERE published = 1; sql_attr_uint = hits sql_attr_uint = catid sql_attr_string = title sql_attr_uint = created } index joomla_categories { source = joomla_categories path = /var/www/site.com/sphinx/data/categories morphology = stem_enru, soundex, metaphone charset_type = utf-8 charset_table = U+FF10..U+FF19->0..9, 0..9, U+FF41..U+FF5A->a..z, U+FF21..U+FF3A->a..z, A..Z->a..z, a..z, U+0149, U+017F, U+0138, U+00DF, U+00FF, U+00C0..U+00D6->U+00E0..U+00F6, U+00E0..U+00F6, U+00D8..U+00DE->U+00F8..U+00FE, U+00F8..U+00FE, U+0100->U+0101, U+0101, U+0102->U+0103, U+0103, U+0104->U+0105, U+0105, U+0106->U+0107, U+0107, U+0108->U+0109, U+0109, U+010A->U+010B, U+010B, U+010C->U+010D, U+010D, U+010E->U+010F, U+010F, U+0110->U+0111, U+0111, U+0112->U+0113, U+0113, U+0114->U+0115, U+0115, U+0116->U+0117, U+0117, U+0118->U+0119, U+0119, U+011A->U+011B, U+011B, U+011C->U+011D, U+011D, U+011E->U+011F, U+011F, U+0130->U+0131, U+0131, U+0132->U+0133, U+0133, U+0134->U+0135, U+0135, U+0136->U+0137, U+0137, U+0139->U+013A, U+013A, U+013B->U+013C, U+013C, U+013D->U+013E, U+013E, U+013F->U+0140, U+0140, U+0141->U+0142, U+0142, U+0143->U+0144, U+0144, U+0145->U+0146, U+0146, U+0147->U+0148, U+0148, U+014A->U+014B, U+014B, U+014C->U+014D, U+014D, U+014E->U+014F, U+014F, U+0150->U+0151, U+0151, U+0152->U+0153, U+0153, U+0154->U+0155, U+0155, U+0156->U+0157, U+0157, U+0158->U+0159, U+0159, U+015A->U+015B, U+015B, U+015C->U+015D, U+015D, U+015E->U+015F, U+015F, U+0160->U+0161, U+0161, U+0162->U+0163, U+0163, U+0164->U+0165, U+0165, U+0166->U+0167, U+0167, U+0168->U+0169, U+0169, U+016A->U+016B, U+016B, U+016C->U+016D, U+016D, U+016E->U+016F, U+016F, U+0170->U+0171, U+0171, U+0172->U+0173, U+0173, U+0174->U+0175, U+0175, U+0176->U+0177, U+0177, U+0178->U+00FF, U+00FF, U+0179->U+017A, U+017A, U+017B->U+017C, U+017C, U+017D->U+017E, U+017E, U+0410..U+042F->U+0430..U+044F, U+0430..U+044F, U+4E00..U+9FFF enable_star = 1 expand_keywords = 1 index_exact_words = 1 min_word_len = 3 min_prefix_len = 0 min_infix_len = 3 } # # Joomla newsfeeds # source joomla_newsfeeds : site-parent { sql_query = \ SELECT `id`, `catid`, link, name as title, numarticles as `hits`, 0 as `created`\ FROM nz6ol_newsfeeds \ WHERE published = 1; sql_attr_uint = hits sql_attr_uint = catid sql_attr_string = title sql_attr_uint = created } index joomla_newsfeeds { source = joomla_newsfeeds path = /var/www/site.com/sphinx/data/newsfeeds morphology = none min_word_len = 3 min_prefix_len = 0 min_infix_len = 3 } index joomla_search { type = distributed local = joomla_articles local = joomla_weblinks local = joomla_contacts local = joomla_newsfeeds } indexer { mem_limit = 512M } searchd { compat_sphinxql_magics = 0 listen = localhost:9312 log = /var/log/sphinx/searchd.log query_log = /var/log/sphinx/query.log read_timeout = 5 max_children = 30 pid_file = /var/run/sphinxsearch/searchd.pid max_matches = 50000 binlog_path = /var/run/sphinxsearch/ } Обратите внимание на параметры: ...

28 вересня 2015 · 7 хвилин · 1403 слів · dimetrius

Моменты по StreamRotator

При переносе StreamRotator возникла проблема, отображалась пустая страница с фоном. Оказалось в админке светилась надпись что база данных будет проверена автоматически, или можете сделать это вручную. Но поскольку я задание в крон на тот момент ещё не добавил, то автоматически база не ремонтировалась. Сделал руками и сайт стал корректно отображаться. Этого не пришлось бы делать, если бы сразу было перенесено cron задание. http://streamscripts.com

25 червня 2015 · 1 хвилина · 63 слів · dimetrius

Модуль внутри материала Joomla

В том месте, где Вы хотите, чтобы отображался Ваш модуль прописываете следующий код: { loadposition user9 } (это если Вы назвали позицию user9, если же назвали как-то по своему, то пишете свое название позиции) Важно!! Когда будете прописывать этот код у себя, обязательно сдвиньте фигурные скобки, чтобы не было пробелов! Данный способ для вставки модуля в материал идентичен для всех версий Joomla!

26 червня 2014 · 1 хвилина · 62 слів · dimetrius

Очистка материалов в корзине Joomla

Так уж сложилось что на одном из моих сайтов очень много новостей приходят автоматически с помощью RSS грабера. Позже эти новости публикуются, удаляются… в общем обычная работа перед публикацией. Вышло так что таблица content стала весить более 50 Мбайт, это более 7000 материалов. Реально же опубликовано куда меньше, остальное всё тупо в базе лежит и почему-то меня напрягает… Захотелось удалить это счастье под названием “Корзина”. Но через стандартный интерфейс удалять столько материалов просто не реально нудно. Выручил phpmyadmin… Зашёл в таблицу content, нашёл материалы со state = -2 и давай их удалять ))) Пара минут и я счастливый обладатель почти пустой БД, которая весит уже чуть более 12 Мбайт, вместо 50 Мбайт! Все работы проводились на Joomla 2.5.14, если повторяете, то делаете это на свой страх и риск! phpmyadmin

30 вересня 2013 · 1 хвилина · 129 слів · dimetrius

Переключение шаблона Joomla на основе домена

Многие сайты в наше время используют поддомены для того чтоб отдавать контент для мобильных устройств. Я лично предпочитаю чтоб клиент сам выбирал какой версией сайта пользоваться, стандартной, или мобильной, чтоб это было как опция, а не неким волшебством, от которого потом невозможно избавиться. Joomla имеет несколько тяжёлых плагинов и компонентов, которые делают переключения шаблона (и многое другое), а также несколько коммерческих решений, чтоб справиться с задачей переключения шаблонов. Наше решение довольно простое, но придётся редактировать код основных файлов Joomla. Это всего пару строк кода… Откройте ./includes/application.php и вставьте следующий код в строке 474 (для Joomla 1.7.3 - для других версий, вставить непосредственно перед строкой ‘// Fallback template’): 1 2 3 4 // Проверка мобильного шаблона if ($_SERVER['HTTP_HOST']=="ЗДЕСЬ_МОБИЛЬНЫЙ_ДОМЕН") { $template->template = 'ЗДЕСЬ_НАЗВАНИЕ_МОБИЛЬНОГО_ШАБЛОНА'; } После этих действий Joomla будет отображать мобильный шаблон, когда посетитель будет заходить на сайт с домена для мобильных. Используемые материалы: Switching Joomla template based on domain Скачать plg_juvirtualdomain_v3.2.1.zip

18 липня 2013 · 1 хвилина · 150 слів · dimetrius

External Links - внешние ссылки в новом окне и с рекламой

После перевода одного из своих проектов на joomla 2.5, начал искать плагин для экранировки внешних ссылок от поисковиков через noindex и nofollow. Оказалось это не так уж и просто. Первый плагин, который мне понравился в этом плане, это External Links. Он позволяет экранировать ссылку через nofollow и добавлять _blank. Что понравилось: открывает внешние ссылки в iframe, а вверху добавляет некую рамку с нашим контентом. туда можно добавить свою рекламу, что я и сделал. Что не понравилось: не все ссылки обрабатывались почему-то, не добавлялся атрибут noindex. Если вы хотите чтоб внешняя ссылка не обрабатывалась плагином, то добавьте ‘no_link=1’, например: 1 2 http://www.example.com?no_link=1, или http://www.example.com?p1=v1&no_link=1 Совместимость с версиями Joomla 1.5, 1.6, 1.7, 2.5 Папку GO необходимо разместить в корне сайта. Сайт автора Скачать go.zip Скачать pgl_external_links.zip

15 березня 2012 · 1 хвилина · 124 слів · dimetrius

Восстановление пароля администратора в ISPConfig 3

Если Вы потеряли свой пароль администратора в ISPConfig 3, Вы можете восстановить его с помощью следующего SQL-запроса. 1 UPDATE sys_user SET passwort = md5('admin') WHERE username = 'admin'; SQL-запрос устанавливает пароль администратора, он должен быть выполнен в базе данных ISPConfig mysql, например с помощью phpmyadmin. Если у вас не установлен phpmyadmin, то запрос может быть также выполнен с помощью утилиты командной строки mysql: Войдите в базу данных mysql. 1 mysql -u root -p и введите пароль корневого пользователя mysql. Чтобы перейти в базу данных ISPConfig, выполните следующую команду: 1 use dbispconfig; Теперь выполните SQL-команду: 1 UPDATE sys_user SET passwort = md5('admin') WHERE username = 'admin'; и выйдите из командной строки mysql: 1 quit; Оригинал статьи на www.faqforge.com Перевод - хостинг КОМТЕТ komtet.ru

3 лютого 2012 · 1 хвилина · 122 слів · dimetrius

Как правильно обновить ISPConfig 3

Скрипт обновления ISPConfig - является простым способом обновления. Рекомендуется сохранить резервную копию перед инсталляцией. Чтобы обновить ISPConfig 3, войдите как корневой пользователь, и в командной строке своего сервера введите следующую команду: 1 2 3 4 5 ispconfig_update.sh >> Update Please choose the update method. For production systems select 'stable'. The update from svn is only for development systems and may break your current setup. Select update method (stable,svn) [stable]: Вам следует выбрать обновление их стабильной ветки только для системы, если она используется для хостинга работающих сайтов, а обновление из svn-ветки подходит только для ISPConfig 3, находящейся в разработке. Затем модуль обновления проверит версию вашей системы и загрузит последние обновления. На следующем этапе, введите пароль mysql: 1 2 This application will update ISPConfig 3 on your server. MySQL root password []: Затем Вас спросят, необходимо ли реконфигурировать услуги: 1 Reconfigure Services? (yes,no) [yes]: Вам следует выбрать “yes”, только если Вы изменили конфигурацию своей системы вручную, но возможно лучше здесь выбрать пункт “no”. Хотя, в этом случае в ISPConfig могут не работать новые возможности, или функции могут прекратить работать, пока Вы не исправите файл конфигурации вручную. Поэтому всегда лучше выбирать здесь “yes”. На следующем этапе, выберите порт ispconfig: 1 ISPConfig Port [8080]: Порт 8080 используется по умолчанию, если Вас это устраивает, нажмите клавишу ВВОД. Если нет, то введите номер порта, а затем нажмите ВВОД. На конечном этапе Вас спросят, необходимо ли реконфигурировать crontab, здесь Вы можете выбрать “да”, просто нажав на “return”. ...

25 травня 2011 · 2 хвилин · 362 слів · dimetrius

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 40 bytes) in /libraries/joomla/error/exception.php on line 117

Ещё одно замечательное открытие для себя сделал и приобрёл драгоценный опыт. Начну с того, что при установке в панели управления хостингом было выбрано использовать Mod-PHP. Установлена Joomla 1.5.23, в настройках выбрал использовать xcache для кэша и для сессий. Всё работало, пока мне не захотелось более лёгкого разруливания прав доступа на файлы. Для этого в админке хостинга выбрал вместо Mod-PHP, Fast-CGI. По идее всё должно и дальше работать, но нет, я увидел заветные строки: 1 Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 40 bytes) in /libraries/joomla/error/exception.php on line 117 Полтора дня искал решение, а всё было очень просто. В режиме Fast-CGI для скрипта недоступен xcache, а в настройках то он был выбран. Исправить можно двумя способами, или снова переключиться на Mod-PHP и выключить использование xcache, или же в конфигах самому прописать что использовать. Ниже “безпроблемный” вариант. 1 2 var $cache_handler = 'file'; var $session_handler = 'database'; Если же и в этом варианте возникает та же проблема, то почините свою БД, особенно сессии.

23 квітня 2011 · 1 хвилина · 166 слів · dimetrius

XMAP - Ошибка синтаксического анализа XML: незакрытый маркер

В очередной раз установив Joomla, натянув на неё Xmap, попытался посмотреть XML карту сайта. Прямо из компонента попытался открыть ссылку example.com/index.php?option=com_xmap&sitemap=1&view=xml. Но вместо карты сайта увидел примерно следующий текст: 1 2 3 4 5 Ошибка синтаксического анализа XML: незакрытый маркер Адрес: http://example.com/index2.php?option=com_xmap&view=xslfile&tmpl=component Строка 269, символ 1: ^ Почти два дня провозился с этой проблемой, понял что откуда-то должны ещё подгружаться стили, но откуда не мог понять. Да собственно до сих пор толком не понял как они подгружаются, но это происходит Для того чтоб посмотреть подгружается ли стиль для XML карты сайта, можно попробовать перейти по ссылке: example.com/index2.php?option=com_xmap&view=xsladminfile&tmpl=component Если получаете ответ: 1 2 3 4 5 Ошибка синтаксического анализа XML: незакрытый маркер Адрес: http://example.com/index2.php?option=com_xmap&view=xsladminfile&tmpl=component Строка 383, символ 1: ^ то мы разговариваем как раз о таком случае. Для исправления сложившейся ситуации достаточно открыть в нормальном редакторе, например Notepad++ файлы: /html/components/com_xmap/gss.xsl /html/components/com_xmap/gssadmin.xsl и сделать так, чтоб внизу каждого файла была не одна свободная строка, а три. т.е. примерно вот так: 1 2 3 4 </body> </html> </xsl:template> </xsl:stylesheet> И волшебным образом проблема устраняется Из-за чего происходит такое я так и не смог разобраться, смог только обойти. Вероятно что-то в настройках сервера, но рядом, на этом же сервере, с такими же настройками стоит ещё один сайт, на нём всё замечательно работает без всяких вмешательств. ...

16 квітня 2011 · 2 хвилин · 239 слів · dimetrius