+1.91
Рейтинг
2.45
Сила

Скин для LiveStreet за 5 минут - онлайн-"кухня"

в продолжение темы Перекрашиваем сайт, руководство css для начинающих от Vilz я решил создать онлайн-сервис для совсем упоротых, в котором все будет быстрее/выше/сильнее



Итак, с помощью livetemplate.net/ действительно можно сделать скин для лайвстрита за пару минут. Возможно, он даже получится красивым. Пока что это — альфа версия, работает оно только в хроме и файрфоксе. Предложения/пожелания/багрепорты и прочее просьба писать сюда. Спасибо за внимание :)

Файловый модуль File и тег file

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

TOC


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

Делаем счетчик просмотров для страницы с топиком



Вообщем решил я прикрутить к своему сайту, счетчик просмотров. А именно для страниц с топиком. Поиск по интернету дал решение, с которым я и делюсь ;)
Собственно на картинке всё видно, работает он как все стандартные счетчики, и учитывает только просмотр страницы…
Читать дальше →

БЕСплатный плагин Hookets - расширение функционала сайта без плагинов

Зачастую, нам требуется выполнить какой-нибудь короткий код или вывести какой-то html или java-код в каком-нибудь месте страницы. Например, вставить код счетчика, Google Analytics или какое-нибудь поле meta в заголовок. Конечно, можно вставить этот код в шаблон. Но что, если через какое-то время вы решите сменить шаблон? Или на вашем сайте используется переключатель шаблонов? Что если вам потребуется поменять этот кусочек в куче шаблонов, в нескольких местах? Что, если вы забудете его где-то поменять? И еще… Что, если вам надо сделать какие-то действия, которых нет в функционале, а заморачиваться с написанием плагина муторно?

UPD2: Какое-то сегодня утро доброе. И если девушка просит… В общем плагин резко-так стал бесплатным :)

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

Прикручиваем 3 Smarty к LS

В коментариях к одному из топиков, randomtoy попросил меня рассказать по подробней про прикрутку smarty 3 к ЛайвСтриту — рассказываю.

Там в общем-то ничего сложного нет.
1) Файл /engine/modules/viewer/Viewer.class.php
Не заработал метод Viewer -> TemplateExists()
Времени разбираться и делать по человечески не было, заменил внутренности функции на следующий код
if (file_exists($sTemplate)) return true;

foreach ($this->oSmarty->template_dir as $dir) {
   if (file_exists($dir . '/' . $sTemplate)) return true;
}
return false;


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

Вставка в плагин "Контакты и Социальные сервисы" полей Facebook и Twitter

Добавлял в плагин «Контакты и социальные сервисы» контакты в Facebook и Twitter. Все изменения делал в файлах плагина, измененный выложил здесь. В архиве папка с плагином и изображение icons-contacts.gif, которым нужно заменить родное в папке: /templates/skin/new/images/
Из него будут браться иконки еще двух социалок, чтобы это делалось вносим в файл /templates/skin/new/css/style.css после строк:
Читать дальше →

Дополнительная фотография в профиле

Пробовал вставить дополнительную фотографию в профиле по принципу этой статьи livestreet.ru/blog/1964.html. Не получилось, выдает ошибки. Мои действия:

1) Добавил поле в mysql в таблицу prefix_user, после foto назвал foto2. параметры прописал эдентичные.
2) В classes/actions/ActionSettings.class.php добавил после:

/**
* Загрузка фото, делаем ресайзы
*/			
if (isset($_FILES['foto']) and is_uploaded_file($_FILES['foto']['tmp_name'])) {				
if ($sFileFoto=$this->User_UploadFoto($_FILES['foto'],$this->oUserCurrent)) {	
$this->oUserCurrent->setProfileFoto($sFileFoto);			
} else {
$bError=true;
$this->Message_AddError($this->Lang_Get('settings_profile_foto_error'),$this->Lang_Get('error'));
}
}
/**
 * Удалить фото
*/
if (isset($_REQUEST['foto_delete'])) {
$this->User_DeleteFoto($this->oUserCurrent);
$this->oUserCurrent->setProfileFoto(null);
}

добавил вот это

/**
 * Загрузка фото2, делаем ресайзы
*/			
if (isset($_FILES['foto2']) and is_uploaded_file($_FILES['foto2']['tmp_name'])) {				
if ($sFileFoto2=$this->User_UploadFoto2($_FILES['foto2'],$this->oUserCurrent)) {	
$this->oUserCurrent->setProfileFoto2($sFileFoto2);			
} else {
$bError=true;
$this->Message_AddError($this->Lang_Get('settings_profile_foto_error'),$this->Lang_Get('error'));
}
}
/**
 * Удалить фото
 */
if (isset($_REQUEST['foto2_delete'])) {
$this->User_DeleteFoto2($this->oUserCurrent);
$this->oUserCurrent->setProfileFoto2(null);
}

3) В classes/modules/user/entity/User.entity.class.php после:

    public function getProfileFoto() {
        return $this->_aData['user_profile_foto'];
    }  

добавил

	    public function getProfileFoto2() {
        return $this->_aData['user_profile_foto2'];
    } 

и после

    public function setProfileFoto($data) {
    	$this->_aData['user_profile_foto']=$data;
    }  

добавил

	    public function setProfileFoto2($data) {
    	$this->_aData['user_profile_foto2']=$data;
    }

4) В classes/modules/user/mapper/User.mapper.class.php после

user_profile_foto = ? ,	

добавил

user_profile_foto2 = ? ,	

и после

$oUser->getProfileFoto(),

добавил

$oUser->getProfileFoto(),

5) В templates/skin/тема/actions/ActionSettings/profile.tpl после:

				{if $oUserCurrent->getProfileFoto()}
					<img src="{$oUserCurrent->getProfileFoto()}" border="0">					
					<input type="checkbox" id="foto_delete" name="foto_delete" value="on"> — <label for="foto_delete"><span class="form">{$aLang.settings_profile_foto_delete}</span></label><br />
				{/if}
				<p><label for="foto">{$aLang.settings_profile_foto}:</label><br /><input type="file" id="foto" name="foto"/></p>

добавил:

				{if $oUserCurrent->getProfileFoto2()}
					<img src="{$oUserCurrent->getProfileFoto2()}" border="0">					
					<input type="checkbox" id="foto2_delete" name="foto2_delete" value="on"> — <label for="foto2_delete"><span class="form">{$aLang.settings_profile_foto_delete}</span></label>
					<br />
				{/if}
				<p><label for="foto2">{$aLang.settings_profile_foto2}:</label><br /><input type="file" id="foto2" name="foto2"/></p>

При попытках загрузить фото и фото2 выдает множество ошибок, а если в ActionSettings заменить это

if ($sFileFoto2=$this->User_UploadFoto2($_FILES['foto2'],$this->oUserCurrent)) 

на это

if ($sFileFoto2=$this->User_UploadFoto($_FILES['foto2'],$this->oUserCurrent)) 

загрузится только foto2. В mysql в foto прописваются пути к картинкам которых просто нет в папке upload. Кто может помочь, 2й день работаю над этим. Над сайтом уже почти месяц осталось только это сделать. Жду ответов гуру)

Как запретить личным блогам выходить на главную.

Т.е. у меня сейчас стоит настройка, что коллективный топик набрав +5 всплывает на главной.

Но и личный топик набрав +5 тоже всплывает на главной.

А как сделать так, чтобы на главной всплывали ТОЛЬКО коллективные блоги, а личные блоги были доступны только по вкладке ВСЕ или по вкладке Личные?

История про нагрузку и как я с ней боролся.

Случилось так, что на одном из проектов full time стал переваливать за 1,5 сек и при этом сжирался весь проц. При этом все остальные показали были в норме: база — 0,002 сек, кеш — 0,01 сек.

Пришлось прикручивать профайлер и смотреть, в чем дело.

Виноват оказался Smarty, который из 1,5 секунд работал 1,2 (шаблон, на проекте, используется стандартный с легкими изменениями).

Копаясь дальше нашел самый сложный шаблон comments_tree.tpl, который выполняет в цикле инклюд шаблона comment.tpl.

Проблема решилась отказом от инклюда и переносом содержимого из comment.tpl в comments_tree.tpl.

full time на топиках с 400+ комментариев не превышает 0,4 сек.

Надеюсь кому-то поможет.

Время "запоминания" пользователя

Предлагаю способ как можно изменить время, на которое запоминается авторизация пользователя.
Версия: LiveStreet 0.4.2

1. Запишем в конфиг необходимое время авторизации.
Открываем config/config.php
На 54 строке находим:
$config['sys']['cookie']['path'] = '/';  // путь для установки куков

После неё вставляем строку:
$config['sys']['cookie']['time'] = 60*60*24*3; // время установки куков (в секундах)

Где вместо 3 можете написать нужное количество дней.

2. Исправим функцию авторизации пользователя.
Открываем classes/modules/user/User.class.php
На 441 строке находим:
setcookie('key',$sKey,time()+60*60*24*3,Config::Get('sys.cookie.path'),Config::Get('sys.cookie.host'));

Меняем на:
setcookie('key',$sKey,time()+Config::Get('sys.cookie.time'),Config::Get('sys.cookie.path'),Config::Get('sys.cookie.host'));


Всё готово.