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

19
На примере будущего 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-архив с примером

QipSmiles hotfix (docker47.free.fr browser warning)

6

Замена смайл-пака maliste

smiley.s3.amazonaws.com/maliste.zip
Распаковать в qipsmiles/smiles/ с заменой файлов.

MySQL комманды для замены смайлов в уже сохраненном контенте




На 0:50 видно окошко, в котором надо вписать эти комманды:
update `prefix_topic_content` set `topic_text`=replace(`topic_text`,'http://moktoipas.com/smileys/','http://smiley.s3.amazonaws.com/maliste/');
update `prefix_topic_content` set `topic_text`=replace(`topic_text`,'http://docker47.free.fr/divers/smileys/basic/','http://smiley.s3.amazonaws.com/maliste/');
update `prefix_topic_content` set `topic_text`=replace(`topic_text`,'http://docker47.free.fr/divers/smileys/_MSN/','http://smiley.s3.amazonaws.com/maliste/');
update `prefix_topic_content` set `topic_text`=replace(`topic_text`,'http://docker47.free.fr/divers/smileys/_gg3d.com/','http://smiley.s3.amazonaws.com/maliste/');

update `prefix_topic_content` set `topic_text_short`=replace(`topic_text_short`,'http://moktoipas.com/smileys/','http://smiley.s3.amazonaws.com/maliste/');
update `prefix_topic_content` set `topic_text_short`=replace(`topic_text_short`,'http://docker47.free.fr/divers/smileys/basic/','http://smiley.s3.amazonaws.com/maliste/');
update `prefix_topic_content` set `topic_text_short`=replace(`topic_text_short`,'http://docker47.free.fr/divers/smileys/_MSN/','http://smiley.s3.amazonaws.com/maliste/');
update `prefix_topic_content` set `topic_text_short`=replace(`topic_text_short`,'http://docker47.free.fr/divers/smileys/_gg3d.com/','http://smiley.s3.amazonaws.com/maliste/');

update `prefix_comment` set `comment_text`=replace(`comment_text`,'http://moktoipas.com/smileys/','http://smiley.s3.amazonaws.com/maliste/');
update `prefix_comment` set `comment_text`=replace(`comment_text`,'http://docker47.free.fr/divers/smileys/basic/','http://smiley.s3.amazonaws.com/maliste/');
update `prefix_comment` set `comment_text`=replace(`comment_text`,'http://docker47.free.fr/divers/smileys/_MSN/','http://smiley.s3.amazonaws.com/maliste/');
update `prefix_comment` set `comment_text`=replace(`comment_text`,'http://docker47.free.fr/divers/smileys/_gg3d.com/','http://smiley.s3.amazonaws.com/maliste/');


После выполнения mysql-комманд не забудьте сбросить кеш объектов


Если что-то ну никак не получается, обращайтесь в аську (она в профиле написана).
  • +1
  • 01 апреля 2012, 23:45
  • 1d10t

Плагин "Ajax подгрузка по скроллу"

16

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


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

Плагин "DAO: Маркет" + сборка (-20%)

7


Представляю сообществу долгожданный плагин для продажи цифрового контента. Он позволяет создать раздел для продажи или бесплатного размещения пользователями цифрового контента. Схож по функционалу с каталогом livestreetcms.
Интеграция с плагином paуment(прием денег) и обновленным кошельком(личный счет, вывод заработанного).

Демо: http://dev.lsmods.ru/market/ (в плагине возможна покупка без регистрации, а на демо включен тестовый режим оплаты, деньги не списываются).


Описание функционала

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

17
В транковую версию 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;
	}
}



Читать дальше
  • +11
  • 03 марта 2012, 14:24
  • ort

Livestreet-клиент для ios (ipad,iphone) и android

8
7 фото
Хорошии топики (главный экран приложения)
image

Всем привет.


Хочу показать свой универсальный клиент для iphone, ipad и android.
Пока тестируем приложение на разных устройствах.
При написании использовались следующие технологии — html5+css3+jquery+phonegap.


Показать все 7 фото →

Адаптирован шаблон "m." для 0.5.1

7
В далеком 2010 году Vilz сделал для нас легкий шаблон для мобильных телефонов, но дальнейшая разработка прекратилась.
Теперь шаблон адаптирован к LiveStreet 0.5.1. Никаких новых функций нет. Шаблон не поддерживает «фотосет».





Баги, предложения и восторженные возгласы инсайд

Плагин DAO. Обзор нововведений.

2


За февраль для плагина DAO было выпущено 2 обновления. Текущая версия 2.2.1. Среди важных нововведений — назначение редакторов объектов(теперь один объект могут обслуживать несколько человек), привязка объектов к нескольким дополнительным категориям, интеграции с sitemap, шаблоном simple. Подробный список нововведений под катом.



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

Удаление UTF-8 BOM из консоли

5
linux (debian tested)
find путь/к/лайвстриту/ -type f \( -name '*.tpl' -o -name '*.php' \) -exec sed -i '1 s/^\xef\xbb\xbf//' {} \;


freebsd (7.2 tested)
find ./ -type f \( -name '*.tpl' -o -name '*.php' \) -exec sed -i -e '1 s/^\xef\xbb\xbf//' {} \;


найти файлы с BOM
find ./ -type f \( -name '*.tpl' -o -name '*.php' \) -print0 | xargs -0r awk '/^\xEF\xBB\xBF/ {print FILENAME}{nextfile}'


sed почему-то иногда не отрабатывает, поэтому php, find, awk, xargs:
php -r "ob_start();
passthru('find ./ -type f \( -name \'*.tpl\' -o -name \'*.php\' \) -print0 | xargs -0r awk \'/^\xEF\xBB\xBF/ {print FILENAME}{nextfile}\'');
foreach(array_filter(explode(\"\n\",ob_get_clean())) as \$f){
	echo \"remove BOM from \$f...\n\";
	file_put_contents(\$f, substr(file_get_contents(\$f), 3));
};"