-1.87
Рейтинг
0.01
Сила

Mirocow (PHP Developer)

Установка Livestreet с нуля (Debian): nginx + mysql + php-fpm + apc + memcached + sphinx

Возможно, этот гайд даже кому-нибудь понадобится.

0) Итак, у нас имеется свежепоставленный Debian с настроенным ssh-доступом и юзер с правами, достаточными для работы sudo.
Здесь и далее "#" в начале команды означает, что ее необходимо запускать с правами root-пользователя (например, с помощью sudo)
1) Пакеты будем ставить из репозитория dotdeb, поэтому для начала добавим его в sources.list:
# nano /etc/apt/sources.list

дописываем в конец файла
deb http://packages.dotdeb.org stable all

Далее импортируем ключ dotdeb'а:
wget http://www.dotdeb.org/dotdeb.gpg -O - -q | sudo apt-key add -

Обновляем список пакетов
# apt-get update

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

jqModal. Создание модальных окон и не только

Вроде бы по созданию и использованию модальных и всплывающих (pop-up) окон в LS публикации уже были, но видимо, то ли информации мало, то ли преподнесена она слишком кратко — вопросы опять появились.
Этим топиком я «убиваю сразу двух зайцев» — и свой багаж знаний пополню и у для кого-то текущие и будущие вопросы возможно помогу решить
Читать дальше →

Краткий мануал по работе с блоками или как правильно изменять шаблоны LS

Уже второй день разбираюсь с LS — добился того, что нужно, при этом пришлось прочитать много инфы. Учитывая, что я ни разу не программист, изначально многое не понятно в движке, так как большая часть документации и объяснений находится в разных топиках, комментариях, мануалах.

Надеюсь данный топик поможет начинающим понять структуру LS, как с ним работать, как редактировать шаблоны и как добавлять нужные блоки на сайт.


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

Рекомендация к использованию: Наследование шаблонов

На примере будущего jQuery-шаблона для ПриветСочи.ру решил выложить мини-инструкцию использования наследования шаблонов, сильно сокращающий количество часто повторяющегося Smarty-кода.

Коротко о файлах в примере (ссылка на архив внизу):

  • topic.prototype.tpl — прототип топика, содержащий всю повторяющуюся разметку. Использованы вложенные конструкции типа
    {block name=...}
  • topic_link.tpl, topic_photoset.tpl, topic_question.tpl, topic_topic.tpl — файлы, наследующие и заменяющие/дописывающие некоторые блоки прототипа топика (topic.prototype.tpl)
  • topic.social.tpl — включение с кодом кнопочек публикации в разные соц-сети.


Коротко о содержании файлов:

Посмотрев файлы примера, не сложно заметить, что файлы topic_*.tpl содержат:
  1. в начале каждого файла наличиствует код
    {extends file=topic.prototype.tpl}
  2. минимум специфической разметки, обрамленной в конструкции
    {block name=... флаг}
    — это замены и дополнения блоков. Флаг может либо отсутствовать (что означает полную замену содержимого блока), либо принимать принимать значения:
    • append — дописывает в конец содержимое блока к наследуемому блоку.
    • prepend — дописывает в начало содержимое блока к наследуемому блоку.
    • hide — скрывает блок (насколько я понял, если добавить в блок прототипа, то по умолчанию блок будет скрыт).
    • nocache — запрещает кеширование содержания блока (а это вообще актуально для LS?).


Документация


ZIP-архив с примером

Помечаем куски шаблонов в скомпилированой странице for 0.5.1

Навеяно топиком, хотя сам использую для верстки практически с момента выхода 05 версии, както не подумал что это может быть полезно и другим ;) исправляюсь )

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

Кнопка "Добавить пост" при просмотре блога




Добрый день ув. Сообщество!
Сегодня я бы хотел рассказать о небольшой «фиче», которую можно легко добавить к себе на сайт под управлением LS. Фича заключачается в следующем — при просмотре блога появится ссылка, при нажатии на которую, пользователь будет публиковать сразу в этот блог (присоединен он к блогу или нет).
Фича подходит для сайтов с большим кол-вом блогов, чтобы пользователи не мучались, листая выпадающий список с большим кол-вом блогов, да и вообще, по-моему, такая структура более понятна обычным пользователям.

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

Мануал по интеграции плагинов с плагином "Role", на примере плагина "Публикация от чужого имени"

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

Первое что нужно сделать для интеграции — это создать чекбоксы для плагина "Публикация от чужого имени" в добавлении и редактировании ролей.
Плагин "Role" имет хуки.

  • template_roles_role — в шаблоне добавления к списку прав роли
  • template_roles_user — в шаблоне добавления к списку прав отдельному пользователю
  • template_roles_role_show_end — в шаблоне редактирования к списку прав роли
  • template_roles_role_user_show_end — в шаблоне редактирования к списку прав отдельному пользователю

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

nginx+php-fpm и "Вставка изображения"

Доброго времни суток!

имеется сервер на Centos6, софт:
nginx 1.0.13
php 5.2.17
php-fpm
LS 0.5.1
Никаких плагинов нет включенных, скин — new-jquery

суть: При создании/редактировании топика не получается воспользоваться функцией загрузки изображения. Само изображение загружается в директорию uploads/images/… но окно «Вставка изображения» не закрывается, и соответственно в текас топика не попадает контейнер IMG с изображением. Устанавливал движок на сервер с ISP (nginx+apache) — там все работает как надо. Скопировал оттуда на nginx+php-fpm — не работает.
Кто нибудь сталкивался с такой трудностью?

конфиг nginx:

server {
        listen   95.163.16.25:80;
        server_name chapov.ru www.chapov.ru;
        error_log /var/www/chapov/hosts/chapov.ru/logs/error.log error;
        access_log  /var/www/chapov/hosts/chapov.ru/logs/access.log;
        include drop.lasso.conf;
        root /var/www/chapov/hosts/chapov.ru/html/;
        charset utf-8;


        if ($http_user_agent ~* "(w0000t|RPT-HTTPClient|LWP::Simple|Bot\\ mailto:craftbot@yahoo\.com|Express\\ WebPictures)") {
            return 444;
            break;
        }

        if ($request_filename !~ "\.(js|htc|ico|css|jpg|jpeg|gif|png|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|php)$") {
                rewrite ^(.*) /index.php last;
        }

        # php-fpm
        location ~* \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME /var/www/chapov/hosts/chapov.ru/html$fastcgi_script_name;
                fastcgi_param QUERY_STRING    $query_string;
                include                 /etc/nginx/fastcgi_params;
                fastcgi_intercept_errors on;
        }
}

Выводим в Top блогов количество постов вместо рейтинга.

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



Для начала находим Экшен блока. Структура LS подробно описана, поэтому легко находим нужный блок: /classes/blocks/BlockBlogs.class.php В блоке вызывается единственная функция: Blog_GetBlogsRating, с ней и будем работать.

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

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

Валидация данных в LiveStreet 0.6

В транковую версию LS на github.com добавлен новый функционал — валидация данных и полей сущностей. Этот функционал призван заменить функцию func_check(). За основу был взят функционал валидации Yii.

На данный момент доступны следующие типы валидации:
  • Boolean — проверка значения на булевый тип
  • Date — проверка значения на формат даты и времени
  • Email — проверка корректности емайл
  • Inline — валидация произвольным методом сущности или другого объекта
  • Number — проверка на числа
  • Required — проверка на пустое или конкретное значение
  • String — проверка строк на длину
  • Type — проверка на тип значения
  • Url — проверка на корректность URL


Как использовать

В сущности необходимо составить список правил валидации.
class PluginTest_ModuleMain_EntityTest extends Entity {

	protected $aValidateRules=array(
		array('login, name','string','max'=>7,'min'=>'3'),
		array('title','my','on'=>'register'),
	);

	public function ValidateMy($sValue,$aParams) {
		if ($sValue!='Мега заголовок') {
                    return 'Ошибочный заголовок';
                }
		return true;
	}
}


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