+4.43
Рейтинг
20.94
Сила

Теперь все наши плагины совместимы с LS v1.0.*!

Хочу поделиться хорошей новостью — теперь все наши плагины совместимы с LS v1.0.* :))
Также плагины покрыты тестовыми сценариями и основной функционал должен работать без ошибок (тесты бегают на чистой сборке LiveStreet).
 
 

Плагин «LSGallery»

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

Плагин «Sitemap» (важен для SEO)

Предназначен для автоматической генерации карты сайта в виде файла sitemap.xml. Карта сайта включает в себя ссылки на блоги, топики и профили пользователей. Совместим с плагинами «LSGallery», «Page», «L10n» и другими.

Плагин «SEO»

Основное предназначение плагина это автоматическая генерация мета тегов keywords и description в зависимости от контента страницы. Это положительно влияет на индексацию сайта поисковыми системами и ранжирование их выдачи.

Плагин «OpenID Comments»

При отправке комментария гость увидит всплывающее окошко авторизации/регистрации, а после авторизации/регистрации его комментарий появится на сайте.
Плагин может работать совместно с плагином OpenId (что удобней для гостей сайта) или без него.

Плагин «Banneroid (баннерокрутилка)»

Плагин для удобного размещения и управлениями баннерами на LiveStreet сайтах. Добавление/редактирование/удаление баннеров. Возможность выбирать дату начала/окончания показов, место отображения и др. Полное описание функционала на странице плагина.

Плагин «Similar topics»

Выводит список похожих записей как блок в сайдбаре. Записи сортирует по количеству совпавших тегов и дате/рейтингу.
 

Плагин «L10n (для мультиязычности)»

Плагин для реализации мультиязычности на LiveStreet сайте. Возможность выбора языка интерфейса при регистрации пользователя и его последующая смена в настройках пользователя. Возможность создавать переводы для блогов и топиков. Полное описание функционала на странице плагина.

Плагин «Mailing»

Плагин для рассылок сообщений на LiveStreet сайтах с большим количеством пользователей. Есть возможность фильтра получателей по свойству «Пол» («мужчины», «женщины», «не указан») и по свойству «Язык» (интеграция с плагином «L10n»). Можно посмотреть список рассылок и статус хода рассылки. Полное описание функционала на странице плагина.

Плагин «LSDigest»

Плагин предназначен для рассылки дайджестов лучших записей за определенное время. Для работы плагина требуется плагин рассылок «Mailing». Совместим с плагином L10n (разные дайджесты в зависимости от языка указанного в профиле пользователя).

Плагин «Use watermark»

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

Плагин «Greeting (приветствие новым пользователям)»

Плагин предназначен для рассылки приветсвий новым пользователя в LiveStreet CMS. Например, в тексте сообщения можно благодарить пользователя за регистрацию и дать ему ссылки на страницу помощи или общих вопросов по работе с сайтом. Cовместим с плагином многоязычности l10n. Т.е. вы можете создавать разные шаблоны сообщений для разных языков.

Плагин «Пингатор (исправленный)»

Исправленный пингатор для оправки сообщений Яндексу и Google. Эта штука дает возможность поисковым системам практически моментально индексировать добавленный контент.
 

Плагин «Debug Toolbar»

Плагин «Debug Toolbar» предназначен для вывода технической информации о работе сайта на LiveStreet.
 
 
 

Просьба!

Идеи по улучшению и бегрепорты (сообщения о ошибках) пишите в трекерах плагинов (значек  на странице плагина).
Спасибо ;)

Оптимизация индексирования Shpinx для LiveStreet, исправляем древнюю проблему с закрытыми блогами

Суть проблемы — LS ищет и находит сфинксом заметки и комментарии из всех блогов, независимо от того имеете вы к ним доступ или нет.

Чинится это просто:
  1. вносим в поисковый индекс id закрытого блога к которому относится топик или комментарий, либо 0 если этот блог не закрытый.
  2. передаём в поиск id текущего пользователя
  3. находим список закрытых блогов в которые имеет доступ текущий пользователь.
  4. используем этот список расширенный нулём (что добавит все не закрытые блоги в результаты поиска для любого пользователя) со стандартной возможностью фильтрации Сфинкса


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

Плагин «Лучшие топики за период в плавающем окне в сайдбаре (Best topics flow)»


Плагин добавляет блок лучших постов с двумя переключателями периода (за 24 часа и неделю). Также, когда последний блок в сайдбаре будет прокручен до конца, то этот блок зафиксируется справа как на Хабре.

Демо-видео.

Работает на шаблоне synio. На остальных шаблонах работа не гарантируется.

Плагин доступен в каталоге. Стоимость 3уе.
Кросспост из гида по ливстрит.

Настройки SphinxSearch 2.0.4 поставленного в Ubuntu 12.04 командой apt-get

Я ставил Sphinx на Ubuntu 12.04. Использую облачный сервер Selectel, поэтому все операции выполнялись под root.
  1. В Ubuntu SphinxSearch 2.0.4 ставится простой командой
    apt-get install sphinxsearch

  2. Правим файл /etc/default/sphinxsearch и ставим START=yes
  3. Создаем файл /etc/sphinxsearch/sphinx.conf
    Я изначально взял отсюда: Sphinx. Установка и первичная настройка, и поправил пути, а также заменил deprecated address на listen.

    Также оказалось что таблица topic_comment теперь называется comment, поправил это тоже.
    ## Конфигурационный файл Sphinx-а для индексации Живой улицы
    
    #######################
    #
    # Описываем индексы
    #
    #######################
    
    # Источник-родитель для всех остальных источников. Здесь указываются параметры доступа 
    # к базе данных сайта
    source lsParentSource
    {
    	type		= mysql
    	sql_host	= localhost
    	sql_user	= root
    	sql_pass	= 
    	sql_db		= livestreet
    	sql_port	= 3306
        	# Для ускорения работы прописываем путь до MySQL-го UNIX-сокета (чтобы 
    	# операции с БД происходили не через TCP/IP стек сервера)
        	sql_sock	= /var/run/mysqld/mysqld.sock
        
        	
    	mysql_connect_flags	= 32 # 32- включение сжатие при обмене данными с БД
        
    	# Включам нужную кодировку соединения и выключаем кеш запросов
    	sql_query_pre			= SET NAMES utf8
        	sql_query_pre			= SET SESSION query_cache_type=OFF    
    }
    
    # Источник топиков
    source topicsSource : lsParentSource
    {
    	# запрос на получения данных топиков
    	sql_query		= \
    		SELECT t_fast.topic_id, t_fast.topic_title, UNIX_TIMESTAMP(t_fast.topic_date_add) as topic_date_add, \
    		tc.topic_text, t_fast.topic_publish \
    		FROM prefix_topic as t_fast, prefix_topic_content AS tc \
    		WHERE t_fast.topic_id=tc.topic_id AND t_fast.topic_id>=$start AND t_fast.topic_id<=$end
    
    	# запрос для дробления получения топиков на неколько итераций
    	sql_query_range		= SELECT MIN(topic_id),MAX(topic_id) FROM prefix_topic
    	
    	# сколько получать объектов за итерацию
    	sql_range_step		= 1000
    
    	
    	# Указываем булевый атрибут критерия "топик опубликован". Для возможности указания этого критерия при поиске
    	sql_attr_bool		= topic_publish
    
    	# Атрибут даты добавления, типа "время"
    	sql_attr_timestamp	= topic_date_add
    
    	# мульти-аттрибут "теги топика"
    	sql_attr_multi	= uint tag from query; SELECT topic_id, topic_tag_id FROM prefix_topic_tag
    
    	sql_ranged_throttle	= 0
    }
    
    # Источник комментариев
    source commentsSource : lsParentSource
    {
    	sql_query		= \
    			SELECT comment_id, comment_text, UNIX_TIMESTAMP(comment_date) as comment_date, comment_delete \
    			FROM prefix_comment \
    			WHERE comment_id>=$start AND comment_id<=$end
    
    	sql_query_range		= SELECT MIN(comment_id),MAX(comment_id) FROM prefix_comment
    	sql_range_step		= 5000
    
    	sql_attr_bool		= comment_delete
    	sql_attr_timestamp	= comment_date
    }
    
    #######################
    #
    # Описываем индексы
    #
    #######################
    
    index topicsIndex
    {
    	# Источник, который будет хранить данный индекса
    	source			= topicsSource
    	path			= /var/lib/sphinxsearch/data/lstopics
    
    	# Тип хранения аттрибутов
    	docinfo			= extern
    
    	mlock			= 0
    
    	# Используемые морфологические движки
    	morphology		= stem_enru, soundex, metaphone
    
    	# Кодировака данных из источника	
    	charset_type		= utf-8
    
    
    	# Из данных источника HTML-код нужно вырезать
    	html_strip				= 1
    }
    
    # Индекс комментариев
    index commentsIndex
    {
    	source			= commentsSource
    	path			= /var/lib/sphinxsearch/data/lscomments
    
    	docinfo			= extern
    
    	mlock			= 0
    
    	morphology		= stem_enru, soundex, metaphone
    
    	charset_type		= utf-8
    }
    
    #######################
    #
    # Настройки индексатора
    #
    #######################
    
    
    indexer
    {
    	# Лимит памяти, который может использавать демон-индексатор
    	mem_limit			= 32M
    }
    
    #######################
    #
    # Настройка демона-поисковика
    #
    #######################
    
    searchd
    {
            # Адрес, на котором будет прослушиваться порт
            listen                  = 127.0.0.1:3312
    
    	# Лог-файл демона
    	log					= /var/log/sphinxsearch/searchd.log
    
    	# Лог поисковых запросов. Если закомментировать,то логировать поисковые строки не будет
    	query_log			= /var/log/sphinxsearch/query.log
    
    	# Время в секундах, которое ждет демон при обмене данными с клиентом. По исчерпании происходит разрыв коннекта
    	read_timeout		= 5
    
    	# Максимальное количество одновременно-обрабатываемых запросов. 0 означает дофига, а точнее без ограничения
    	max_children		= 30
    
    	# Файл, в который сохраняется PID-процесса при запуске
    	pid_file			= /var/run/sphinxsearch/searchd.pid
    }

  4. Правим настройки для соединения с базой
    source lsParentSource
    {
            type            = mysql
            sql_host        = localhost
            sql_user        = root
            sql_pass        =
            sql_db          = livestreet
            sql_port        = 3306
    

  5. Правим префикс таблиц. В моем случае я заменил все вхождения prefix_ на пустоту. (6 замен)
  6. Индексацию будем делать под пользователем sphinxsearch, для этого надо ему выставить /bin/sh в виде шелла
    chsh -s /bin/sh sphinxsearch

  7. Запускаем индексацию из-под юзера sphinxsearch
    su sphinxsearch -c 'indexer --all'

    Индерксатор не должен выдавать ошибок, и должны появиться файлы индексов в папке /var/lib/sphinxsearch/data/
  8. Запускаем искалку
    service sphinxsearch start

  9. Проверяем, что поиск работает. У меня заработал.
  10. Ставим переиндексацию на крон. Для этого редактируем кронтаб для пользователя sphinxsearch
    su sphinxsearch -c 'crontab -e'

    Выбираем редактор и вводим такие таски
    12 */3 * * *  indexer --rotate topicsIndex > /dev/null 2>&1
    */50 * * * *  indexer --rotate commentsIndex > /dev/null 2>&1

Дата Рождения (есть решение)

Да это повтор, да была уже такая тема, да была и не одна, но решения так и не увидел.
Может что-то упустил и если вдруг проблема уже давно решена, приношу свои извинения и прошу указать способ решения

Вот после этого комментария ort а прошел уже не один месяц, не два месяца и не три месяца, а так и ниче и не исправили…

Я все понимаю, но как же так можно. Свой сайт еще не открыл на нем пока около 10-ти юзеров, 5-ть из которых меня уже спрашивали почему так отображается дата

Что я им должен говорить?
Извините но наш сайт сделан на кривом движке
Будет 100 юзеров каждому из них объяснять что это баг движка?

Может кто-то считает что это не такая уж и проблема, но если мне сказали что-то типа: «извините, но я не могу поправить эту проблему, это у всех так и связано с особенностями движка»
Лично у меня первая ассоциация что пришла б в голову это что-то типа этого «что я делаю на этом говносайте, где даже дату ввести нормально нельзя»

Я понимаю если б было просто уже давно решили проблему, я понимаю что не все указывают реальную дату и не для всех это актуально, но и Вы меня поймите, заполнение профиля это первое с чего начинается знакомство с сайтом, если такие баги в самом начале, то будет ли желание у людей оставатся на этом сайте?

Есть мелкие баги, на которые можно закрыть глаза, но это не мелкий баг, это касается каждого пользователя который захочет ввести дату своего рождения…

Давайте поднимем эту тему чтоб ее всетаки решили. Про данный баг явно забыли, хотел напомнить.

Небольшое красивое дополнение

В одной из ранних версий bootstrap, на главной странице этого фреймворка увидел интересную фишку. При прокрутке страницы главное меню фиксировалось в верхней части страницы. Сегодня почему-то вспомнилось и решил реализовать такую вещь для livestreet. Как оказалось — очень просто.

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

Список хуков LiveStreet CMS 1.0.1

На днях написал черновик по списку хуков и так забыл о нем, пока не увидел новое видео от Максима и сразу вспомнил об этом тексте, решив под общий шумок вокруг хуков добавить и эту статью. Я видел разные топики, где спрашивали "есть ли список хуков?". Да, есть. Вот он.

Привожу список стандартных хуков для чистой официальной ЛС 1.0.1, большинство из них неявно прописаны в движке, поэтому попытка найти их вызовы в коде у вас не выйдет т.к. часть их них автоматически формируется ядром движка.
Из стандартной поставки ЛС хуки в сумме вызываются 486 раз, некоторые по нескольку раз. Это нормально. Здесь приведены 161 хук, которые доступны в ЛС 1.0.1, в порядке их вызова, начиная с самого первого, исключая дальнейшие повторения.

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

Оптимизация индексирования Shpinx для LiveStreet, и чуть-чуть про его установку.

На самом деле, стандартный конфигурационный файл sphinx.conf идущий в комплекте с LiveStreet 1.0.1 (/install/sphinx.conf) слегка простоват. Собственно, это, с мелкими изменениями, всё та же конфигурация описанная господином kruft в далёком 2008 году ( за что ему, по сей день, огромнейший респект).

Не сказать, что с тех пор многое поменялось с вопросом интеграции Shpinx и LiveStreet «по умолчанию».(интересные, платные, плагины для поиска — иной разговор). Однако, вполне можно выжать гораздо больше и из того, что есть на халяву. :)

Чего опять хотелось?
  1. Чтобы топики искало не только по заголовку и тексту, но еще и по списку тегов, названию блога и автору.
  2. Чтобы комментарии искало ещё и по автору тоже (почему бы и нет?)
  3. Словарь синонимов, ибо Shpinx умеет и иногда полезно.
  4. Я так и не понял, зачем индексировать не опубликованные топики и забаненые комментарии, а потом фильтровать их LiveStreet-ом. Тайна сия велика есть. Решил выкинуть из индекса и то, и другое.

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

Плагин «AutoAlt» — автоматические alt-ы изображений

Уважаемые коллеги,

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

Поэтому вам может оказаться полезным плагин AutoAlt, который заполняет пустые alt-аттрибуты на изображениях топика автоматически (при сохранении топика).



Плагин написан для и используется на сайте ММОзговед. Отправной точкой в создании плагина стал фрагмент TopicExtend, который был значительно переработан для работы с названием блога.

Работает по следующему сценарию:

  • Если alt-а нет или он пустой, то создаёт его со значением «Название блога: Название топика».
  • Если alt есть и не содержит название блога, то добавляет «Название блога: Существующий ALT». Иначе alt не изменяется.

В config/config.php можно отключить добавление названия блога (тогда берётся только название топика).

Изменение производится при сохранении топика — т.е. чтобы увидеть его на существующих топиках, их необходимо пересохранить. Фотосеты не затрагиваются данным плагином.

Исходный код доступен на GitHub (только надо переименовать папку с плагином в autoalt, если будете качать его оттуда до прохождения модерации).

Дайте знать, если встретятся какие-либо проблемы.

PS Аватар сгенерен забавным сервисом RoboHash по тексту “AutoAlt LS plugin”. Не всегда же быть серьёзными! :)