+117.90
Рейтинг
299.07
Сила

Вадим

Многоязычный сайт на базе ЛС - продолжение

Как и прежде, модуль многоязычной поддержки входит в пакет модуля Админпанель. Но в версии 1.2.98 была сделана одна небольшая доработка, немного облегчающая жизнь тем, кого эта тема (многоязычные сайты на базе ЛС) интересует.

А именно — если раньше выбранный пользователем язык сохранялся только на время сессии, то теперь его можно сохранять в куках. Т.е. выбрал юзер свой язык, отличный от установки LANG_CURRENT, и этот выбор (если заданы соответствующие установки) будет действовать и при последющих заходах юзера на сайт с этого компьютера.

Как это сделать? Открываем файл /config/modules/language/config.php и задаем параметр:
define('LANG_SAVE_DAYS', 365);
Число указывает, сколько дней будет храниться выбранный язык.

И еще один вопрос часто задают: а как сделать выбор языка? Мне казалось, что я достаточно подробно об этом писал здесь: livestreet.ru/blog/2109.html. Но, видимо, нужен конкретный пример, как организовать «мультиязычность». Поэтому вот вам пример на базе скина new.
1. Открываем шаблон header_nav.tpl
2. Находим форму поиска
<div class="search">
  <form action="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_SEARCH}/topics/" method="GET">
    <input class="text" type="text" onblur="if (!value) value=defaultValue" onclick="if (value==defaultValue) value=''" value="{$aLang.search}" name="q" />
    <input class="button" type="submit" value="" />
  </form>
</div>

3. После закрывающего тега </form> вставляем такой код:
<!-- +++ Language settings +++ -->
<div class="language" style="position: relative; top: -30px; ">
  <a href="{$DIR_WEB_ROOT}/language/russian"><img src="{$DIR_STATIC_ROOT}/templates/language/flags/ru.png" alt="Russian" title="Russian" /></a>
  <a href="{$DIR_WEB_ROOT}/language/english"><img src="{$DIR_STATIC_ROOT}/templates/language/flags/gb.png" alt="English" title="English" /></a>
</div>
<!-- --- Language settings --- -->

Теперь над полем поиска у вас появятся два флажочка — российский и британский, при клике на которые юзер будет переключаться соответственно на русский или английский язык.

ЗЫ Прошу гуру за говнокод не пинать, т.к. это всего лишь пример. Хотя и вполне рабочий. :)

ЗЗЫ А кртинки с флажочками, нужными для работы примера реально лежат в папке /templates/language/flags/

Модуль поиска MySearch - вышла версия 1.1

Выложил версию 1.1 (сейчас доступен билд 1.1.20)

Прилично так доработал модуль, поэтому решил сменить номер версии на 1.1.

Если кратко, то основные нововведения:
1) Много чего вынес в конфиг для более гибкой настройки модуля — поддерживаемые символы народов мира, параметры подсветки и т.д.

2) Сделал формирование сниппетов для вывода результатов и уложил в одинаковый вид вывод топиков и комментов

3) Сделал возможность временно отключать модуль. Например, если надумали поставить Сфинкса или еще какую-то искалку, но сразу не «выходит каменный цветок», и надо периодически отключать MySearch для проверки, а потом опять включать. Щас это можно делать через изменение одного параметра в конфиге.

И много чего еще по мелочи, убив кучу времени на бодание с UTF-8.

Модуль уже выложил, будет доступен после модерации по прежнему адресу на livestreet.ru/addons/74/

Обсуждение предыдущей версии здесь: livestreet.ru/blog/addons/2221.html

UPD Версия 1.1.22 — пагинация результатов запроса
UPD Версия 1.1.23 — удаление лишних тегов из сниппета, показываются только теги 'a', 'img', 'object', 'param', 'embed', т.к. по ним идет поиск
UPD Версия 1.1.24 — добавлена опция исключения всех тегов из поиска
UPD Версия 1.1.26 — Исправлен баг, считающий в результатах выдачи неопубликованные топики и удаленные комменты
UPD Версия 1.1.28 — Если искомые слова встречаются рядом, то они попадут в один фрагмент сниппета. Изменено значение параметра MYSEARCH_SKIP_ALL_TAGS — если он задан, то поиск в тегах все равно идет, но сами теги в результатах поиска не показываются
UPD Версия 1.1.29 — Добавлены элементы релевантности
UPD Версия 1.1.34 — багфикс ( livestreet.ru/blog/3552.html )

Строгий и нестрогий поиск в модуле MySearch и прочие нюансы

Вообще про модуль MySearch можно читать здесь: livestreet.ru/blog/addons/2221.html

В поиске можно задавать слова, содержащие буквы (практически любых алфавитов), цифры, знак подчеркивания, знак минус и точку. Поиск идет без учета регистра, т.е. «дом», «Дом» и «ДОМ» воспринимаются одинаково. По умолчанию поиск идет по тексту и по атрибутам тегов <a ...>, <img ...>, <object ...>, <param ...>, <embed ...>. Т.е., если вы задали поиск по слову «дом», а в атрибутах изображения (тег <img ...>) стоит title=«мой дом», то топик с этим изображением тоже попадет в результаты поиска.

Если задано несколько слов, то ищется по схеме ИЛИ, т.е. в результаты поиска попадают тексты, содержащие любое из заданных слов.

С целью экономии ресурсов поиск по топикам и по комментариям идет отдельно. Т.е. если вы на вкладке «Топики», то поиск будет идти только по топикам, если на вкладке «Комментарии», то поиск только по комментариям. По умолчанию поиск идет по топикам.

Теперь я объясню немного про два режима поиска.

1) Нестрогий поиск
Он был сделан изначально. Работает так: если вы указали в строке поиска слово «дом», то будут искаться все слова, в которых встречается это сочетание букв: «дом», «дома», «рядом», «домовой» и т.д.

2) Строгий поиск
Допускает использование символа «звездочка».
В этом режиме, если задать поиск по слову «дом», то модуль будет искать именно это слово, и проигнорирует такие слова, как «дома» и «задом», и т.д.

А вот запросу «дом*» уже будут соответствовать слова «дома», «домовой» и т.д. Соотвественно запрос "*дом" найдет топики со словами «задом», «передом», а с запросом "*дом*" совпадет слово «рандомный».

Какой режим вам устанавливать у себя на сайте — смотрите сами. Переключение режимов — в файле config/modules/mysearch/config.php.

Чтобы задать «строгий» режим:
define('MYSEARCH_STRICT', true);

Нестрогий режим:
define('MYSEARCH_STRICT', false);


Результаты поиска выдаются по умолчанию в виде сниппетов — небольших текстовых блоков, содержащих фрагменты с искомыми словами. Число в фрагментов в одном сниппете (также, как и размер сниппетов) можно регулировать через параметры файла конфигурации config/modules/mysearch/config.php (там все подробно закомментирвано — разберетесь).

Планируется позже вывести настройки модуля в Админпанели, но пока так — кому надо, тот правит ручками в файле.

Подключение кастомных стилей и скриптов

Пример: сейчас в Админпанели много всего выводится на экран. Вывод надо как-то оформлять, и приходится либо в шаблоны встраивать объявления стилей, либо вообще инлайнить. Что совсем не есть гуд. Хотелось бы вынести все это хозяйство в отдельный файл и подключать на тех страницах, которые модуль выводит.

Например, так:

$this->Viewer_AddHeadCss('admin.css');// в заголовке хтмл-страницы будет подключен 
                                      // файл admin.css из активного скина - все пути и
                                      // оформление тега, как положено по спецификации,
                                      // Viewer задаст автоматом

$this->Viewer_AddHeadJs('admin.js'); // в заголовке хтмл-страницы будет подключен 
                                     // файл admin.js из активного скина

$this->Viewer_AddHead($text);      // в заголовок хтмл-страницы будет вставлен текст,
                                   // это может быть css-объявление, код javascript, 
                                   // ссылка на js-файл из гугловского репозиария и 
                                   // т.д. - т.е. любой текст; и тут, конечно, уже
                                   // правильность оформления тегов и проч. - на 
                                   // программере модуля

MySearch - простой поиск без Sphinx'а

Возникла необходимость организовать поиск в ЛС без Сфинкса. Помню — пробегала здесь такая тема. Нашел. Но не устроило то, что установка его без хака не обходится. Плюс показалось, что запросы используются довольно тяжелые. Поэтому решил быстренько написать свой модуль.


Читать дальше →

Критичное обновление Админпанели вер.1.2.86

В Админпанели была обнаружена уязвимость (спасибо юзеру skpropovednik). Версия с заплаткой 1.2.86 уже выложена здесь: livestreet.ru/addons/34/

Обновление крайне рекомендуется для всех.

ЗЫ Выкладываю сообщение сюда, потому что критичное обновление, а не просто очередной билд.

День программера будет утвержден официально

Уже несколько лет многие программисты отмечают свой неофициальный праздник — «День программиста». Вообще, я несколько дат встречал, к которым этот праздник привязывали, но в последнее время чаще всего назывался 256-й день года. Т.е. 13 сентября (12 сентября в високосный год).

И сегодня прошла инфа, что Минкомсвязи РФ подготовило и внесло в правительство проект указа президента России «О Дне программиста». Учитывая, что Медведев к ИТ относится весьма благосклонно, вряд ли он не подпишет этот указ. Т.е. в этом году российские программеры получат свой проф.праздник на официальном уровне.

Админпанель, вер. 1.2.84 - отправка сообщений

Выложена версия 1.2.84

В ней исправлен небольшой баг, проявлявшийся при апгрейде.
Но основные доработки коснулись отправки сообщений. Теперь возможны два режима отправки:
1. Групповые сообщения
2. Персональные сообщения

У обоих режимов есть свои плюсы и минусы. Ну, или особенности :)


Читать дальше →