0.00
Рейтинг
0.00
Сила

Дмитрий

Установка 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

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

Краткий мануал по работе с блоками или как правильно изменять шаблоны 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 версии, както не подумал что это может быть полезно и другим ;) исправляюсь )

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

Система блоков - расставляем точки...

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

Самое главное, что я выяснил:
1. Блоки можно создавать самостоятельно.
2. Блоки можно размещать в произвольном месте страницы (нужно заранее указать эти места)
3. Блоки могут отображаться в зависимости от Action'ов и Event'ов
4. Блоки могут отображаться в зависимости от адреса страницы. Адрес страницы можно задать с помощью регулярных выражений.
Итак, основные моменты.
Читать дальше →

Валидация данных в 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;
	}
}


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

Увеличиваем скорость livestreet. Nginx. GZip и не только.

Недавно перешел с шаред хостинга на VPS и столкнулся с проблемой что VPS работает не очень быстро, при том что тариф взял не самый дешевый (1600MHz и 1024Mb). Перекопал кучу сайтов чтобы разобраться как все сделать лучшим образом, думаю многие с этим сталкивались, хочу сэкономить ваше время и подытожить важные моменты по настройке.
Для тестирования производительности изначально использовал приложение siege, когда меня там цифры стали более-менее радовать, уже начал использовать для тестов замечательный сайт loadimpact.com (количество бесплатных проверок ограничено, не злоупотребляйте сразу). Привожу картинки как было и как стало (сразу хочу заметить увеличение производительности не только из-за настройки nginx).
1. Debian 5 (64) nginx + apache + php-fcgi + eAccelerator + memcache (Апач по сути только для ISPmanager использовался)

2. Debian 5 (32) nginx + apache + mod_php + APC + memcache


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

Информеры или подсказки в LS на jQuery

Собственно прочитал пост про, то чегож не хватает в шаблонах и решил описать возможное решение пункта №2, а именно:
К каждому объекту на ЛС можно было бы добавить справку, например в виде значка ?, при наведении указателя мыши на который выводилась бы краткая справка в попап окне для чего нужен тот или иной блок/элемент.
И так, приступим.
У нас LS ведь дружит с jQuery, вот и им и будем пользоваться.
По сути дела знаю два способа вывести подобные подсказки, оба способа нельзя назвать простыми, но расскажу и покажу суть, может кто потом воспользуется.
Способ номер РАЗ… информеры
Начнем с приветствия:
Окно выводится при попадании на главную страницу сайта.
<script type="text/javascript">
	guider.createGuider({
		id:          "first",
		title:       "Подсказки с помощью jQuery",
		description: "Подсказки позволяют указывать на определенные части веб-интерфейса. Это окошко, например, показывает приветственное сообщение.",
		overlay:     true,
		width:       500
	}).show();
</script>

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

Пожелания к разработке шаблонов разработчиками

Это список важных замечаний к разработке шаблонов к LiveStreet CMS.
Особенно это будет полезно тем, кто выиграет конкурс на стандартный шаблон для ЛС.
Внедряя эти мелкие доработки, шаблон может стать более дружественным к пользователю и увеличит поток потенциальных ЛС-водцев.

Итак:

  1. Кнопка вступления в блог — она должна быть максимально доступной, большой и понятной. Вокруг неё должно быть логичное объяснение типа сноски что она делает.

  2. К каждому объекту на ЛС можно было бы добавить справку, например в виде значка ?, при наведении указателя мыши на который выводилась бы краткая справка в попап окне для чего нужен тот или иной блок/элемент.
  3. В личных сообщения проставить маленький значок «адресат прочитал письмо»
  4. Добавить подписи ко всем элементам (title) — vOFFka
  5. При добавлении записи убирать ссылку на создание блога при нажатии выдавать сообщение в углу «Недостаточно рейтинга для создания блога», если человек не достиг нужного рейтинга. — vOFFka , nickostyle
  6. чтоб верстальщики хотя бы процентов 30 css-классов называли одинаково — avadim
  7. можно сбоку добавить кнопку «Наверх», как в контакте, чтобы не скроллом прокручивать страницу до самого верха (ведь в некоторых темах и по 500 комментариев бывает). — Newman
  8. Вывести в более удобное место управление подписчиками (по заявек) в закрытый блог… — Bo0oM
  9. Кнопку «избранного» переместить в конец топика, чтобы не приходилось прокручивать вверх после прочтения статьи. — vOFFka
  10. если вы вносите языковую переменную в свой шаблон то делайте это не на уровне шаблона а уровне языковых файлов. — Fanta
  11. прописывайте языковые переменные не в стандартном языковом файле движка (/templates/language/russian.php) (чтобы не иметь проблем с обновлениями), а в языковом файле шаблона (/templates/skin/new-jquery/config/language/russian.php) — PSNet
  12. И во имя безопасности, кидайте .htaccess в папки — Bo0oM , с правильным содержимым, например:
    
    Options -Indexes
    <Files ~ "\.tpl$">
        Order allow,deny
        Deny from all
    </Files>
    

    PSNet
    , Россыпь таких файлов замедляет работу веб-сервера, поскольку он вынужден читать их при каждом обращении к файлам. Желательно объявить эту директиву однократно, а ещё лучше — указать её в конфигурационном файле веб-сервера. В последнем случае она будет читаться только один раз, при старте Апача. onthefly
  13. не ставить h1...h6 где попало, если и ставить, то внутри должен быть голый текст — kpoxas
  14. не использовать инлайновые css и js — onthefly
  15. Везде в вызовах хуков проставить соответствующие для даного хука основные переменные, например чтобы хук:
    {hook run='menu_profile'}

    выглядел так:
    {hook run='menu_profile' oUserProfile=$oUserProfile}

    ведь эта переменная там очень нужна — PSNet
  16. Блоки в ЛС нуждаются в инфографике, ведь правда блок:

    так выглядит лучше:

    тоже самое касается пунктов в профиле («добавить в друзья» и т.п.)

    PSNet
  17. Сделать, чтобы если пользователь сейчас на сайте, то в профиле отображалось, что он «онлайн»Newman
  18. В комментариях к топику как-нибудь выделять комментарии топикстартера (цветом или рядос с аватаркой значек ставить).Newman


Предлагаю дополнять топик мелочами, которые помогу сделать ЛС более интуитивным.

P.S. Большинство мелочей, кстати, реализовал в этом шаблоне.