Пример загрузки файлов на сервер (upload) на языке php

Код формы (upload.html)
<html>
<head>
  <title>Загрузка файлов на сервер</title>
</head>
<body>
      <h2><p><b> Форма для загрузки файлов </b></p></h2>
      <form action="upload.php" method="post" enctype="multipart/form-data">
      <input type="file" name="filename">
 
      <input type="submit" value="Загрузить">
      </form>
</body>
</html>

Код скрипта обработки формы (upload.php)
<html>
<head>
  <title>Результат загрузки файла</title>
</head>
<body>
<?php
   if($_FILES["filename"]["size"] > 1024*3*1024)
   {
     echo ("Размер файла превышает три мегабайта");
     exit;
   }
   if(copy($_FILES["filename"]["tmp_name"],
     "c:/temp/".$_FILES["filename"]["name"]))
   {
     echo("Файл успешно загружен 
");
     echo("Характеристики файла: 
");
     echo("Имя файла: ");
     echo($_FILES["filename"]["name"]);
     echo("
Размер файла: ");
     echo($_FILES["filename"]["size"]);
     echo("
Каталог для загрузки: ");
     echo($_FILES["filename"]["tmp_name"]);
     echo("
Тип файла: ");
     echo($_FILES["filename"]["type"]);
   } else {
      echo("Ошибка загрузки файла");
   }
?>

</body>
</html>

В некоторых случаях требуется ограничить размер файла, который может быть загружен на сервер. К примеру, чтобы разрешить загрузку на сервер только файлов с размером не более 3 Мбайт, в приведенном скрипте содержится код:
if($_FILES["filename"]["size"] > 1024*3*1024)
{
  echo("Размер файла превышает три мегабайта");
  exit;
}

Вставка фотогалерей PICASA с помощью jQuery

Скачать можно тута.
Посмотреть пример 1
Посмотреть пример 2
Посмотреть пример 3
Посмотреть пример 4

Первым делом как всегда необходимо подключить все внешние таблицы стилей и скрипты:
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<link rel="stylesheet" href="css/slimbox2.css" type="text/css" media="screen" />
<script type="text/javascript" src="slimbox2.js"></script>
<script type="text/javascript" src="jquery.EmbedPicasaGallery.js"></script>


Первым делом идет фреймворк, далее таблица стилей лайтбокса, потом скрипт лайтбокса и скрипт нашей галереи.
После этого необходимо инициализировать нашу галерею (то есть придать ей настройки).
Это детальная настройка, которая по сути не особо нужна.
<script type="text/javascript">
  jQuery(document).ready(function() {
  jQuery("#images").EmbedPicasaGallery('СЮДА ПИШИТЕ ВАШ ЛОГИН в ГУГЛ',{
      matcher:            /./,         
      size:               '72',        // thumbnail size (32, 48, 64, 72, 144, 160)
      msg_loading_list :  'Loading album list from PicasaWeb',
      msg_back :          'Back',
      authkey :           'optional-picasa-authkey',
      albumid :           'go-directly-to-this-album-ignore-matcher'
      album_title_tag:    '<h2/>'
      thumb_id_prefix:    'pThumb_',
      loading_animation: 'css/loading.gif',
      thumb_finalizer:    function(){var $a = jQuery(this); ... use this to do something to the anchor AFTER slimbox got there },
      thumb_tuner:        function($div,entry,i){ ... $div - слой с миниатюрой, с информацией о фотке ...}
      link_mapper: function(el){  // see http://code.google.com/p/slimbox/wiki/jQueryAPI#The_linkMapper_function
            return [
                     el.href,
                     '<a href="'+el.href+'">'+el.title+'</a>'
                   ]
            }
   });
  });
</script>

Первое на что необходимо обратить внимание — жирный текст — сюда необходимо вписать Ваш логин в GOOGLE PICASA (и соответственно во всех других сервисах GOOGLE). Скрипт будет брать фотографии именно с этого аккаунта.

Теперь пойдем по списку:
  • matcher — важная настройка, так как она указывает на то, какие альбомы показывать, а какие нет. Оставьте /./ для отображения всех альбомов. Или допустим у Вас есть 10 альбомов с названием «Лучшие фото ...» (вместо ..., например, месяцы — Января, Февраля и т.д.), тогда можете вставить /Лучшие фото/ и только эти альбомы будут отображены. То есть скрипт ищет сходство в названии альбомов.
  • size — тут все понятно. Это размер миниатюр доступны — 32, 48, 64, 72, 144, 160
  • msg_loading_list — сообщение при загрузке списка альбомов
  • msb_back — надпись на кнопке «Назад»
  • authkey — опциональная настройка ключа авторизации в PICASA (можно не трогать)
  • albumid — тут можно указать id альбома без всяких названий в первой найстройке.

Минимумом настроек:
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery("#images").EmbedPicasaGallery('404666ru',{ 
loading_animation: 'css/loading.gif',
matcher: /123456/
});
})
</script>


Выводить галерею необходимо так:
<div id="images"></div>

Класс прописывается тут — jQuery("#images")

Эффект при наведении с помощью jQuery

Посмотреть пример можно тут.
Скачать можно тут.

Для HTML структуры мы создадим элемент div с классом и id “hs_container”. Внутри мы разместим разные поля для изображений с разными картинками. У первой картинки будет класс “hs_visible”, который позволит ей отображаться поверх остальных.
<div id="hs_container" class="hs_container">
<div class="hs_area hs_area1">
<img class="hs_visible" src="images/area1/1.jpg" alt=""/>
<img src="images/area1/2.jpg" alt=""/>
<img src="images/area1/3.jpg" alt=""/>
</div>
<div class="hs_area hs_area2">
<img class="hs_visible" src="images/area2/1.jpg" alt=""/>
<img src="images/area2/2.jpg" alt=""/>
<img src="images/area2/3.jpg" alt=""/>
</div>
<div class="hs_area hs_area3">
<img class="hs_visible" src="images/area3/1.jpg" alt=""/>
<img src="images/area3/2.jpg" alt=""/>
<img src="images/area3/3.jpg" alt=""/>
</div>
<div class="hs_area hs_area4">
<img sclass="hs_visible" src="images/area4/1.jpg" alt=""/>
<img src="images/area4/2.jpg" alt=""/>
<img src="images/area4/3.jpg" alt=""/>
</div>
<div class="hs_area hs_area5">
<img class="hs_visible" src="images/area5/1.jpg" alt=""/>
<img src="images/area5/2.jpg" alt=""/>
<img src="images/area5/3.jpg" alt=""/>
</div>
</div>


CSS
В нашей таблице стилей мы определим площади и их уровни. Поскольку они будут абсолютно позиционированы, мы также присвоим им координаты (позицию). Начнем с главного контейнера:
.hs_container{
  position:relative;
  width:902px;
  height:471px;
  overflow:hidden;
  clear:both;
  border:2px solid #fff;
  cursor:pointer;
  -moz-box-shadow:1px 1px 3px #222;
  -webkit-box-shadow:1px 1px 3px #222;
  box-shadow:1px 1px 3px #222;
  }

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

Каждая отдельная площадь будет также иметь overflow:hidden и абсолютное позиционирование:
.hs_container .hs_area{
  position:absolute;
  overflow:hidden;
  }

Мы позиционируем изображения внутри нашей площади и делаем их видимыми:
.hs_area img{
  position:absolute;
  top:0px;
  left:0px;
  display:none;
  }

Первое изображение будет видимым и поэтому мы ему придаем класс:
.hs_area img.hs_visible{
  display:block;
  z-index:9999;
  }

А теперь мы определим границы и позиции каждого поля:
.hs_area1{
  border-right:2px solid #fff;
  }
  .hs_area4, .hs_area5{
  border-top:2px solid #fff;
  }
  .hs_area4{
  border-right:2px solid #fff;
  }
  .hs_area3{
  border-top:2px solid #fff;
  }
  .hs_area1{
  width:449px;
  height:334px;
  top:0px;
  left:0px;
  }
  .hs_area2{
  width:451px;
  height:165px;
  top:0px;
  left:451px;
  }
  .hs_area3{
  width:451px;
  height:167px;
  top:165px;
  left:451px;
  }
  .hs_area4{
  width:192px;
  height:135px;
  top:334px;
  left:0px;
  }
  .hs_area5{
  width:708px;
  height:135px;
  top:334px;
  left:194px;
  }


JavaScript
Для эффекта смены слайдов мы будем использовать классный плагин jQuery Easing Plugin. Не забудьте его подключить вверху страницы.
Для начала давайте определим некоторые переменные.
//пользовательская анимация
  //смена слайдов
  var animations		= ['right','left','top','bottom','rightFade','leftFade','topFade','bottomFade'];
  var total_anim		= animations.length;
  //смените опции ниже на любую возможную из плагина easing 
  var easeType		= 'swing';
  //скорость смены
  var animSpeed		= 450;
  //кеширование
  var $hs_container	= $('#hs_container');
  var $hs_areas		= $hs_container.find('.hs_area');

Когда мы мышкой наводим на определенную площадь с изображением происходит одна из анимаций из нашего массива выше, и появляется следующая картинка. Мы будем использовать метку «over» для того, чтобы знать можем ли мы применять анимацию на определенной площади, так как мы не хотим ситуации, когда несколько анимаций будут происходит одновременно.

У нас будет сюжет для каждой анимации и мы четко определим ее поведение.
//для начала загрузить все изображения
  $hs_images          = $hs_container.find('img');
  var total_images    = $hs_images.length;
  var cnt             = 0;
  $hs_images.each(function(){
  var $this = $(this);
  $('<img>').load(function(){
  ++cnt;
  if(cnt == total_images){
  $hs_areas.each(function(){
  var $area 		= $(this);
  //Когда мышка переходит границу площади мы анимируем
  //изображение (случайная анимация из массива),
  //так, чтобы появилась следующая картинка.
  //"over" метка которая указывает на то, можем ли мы анимировать
  //площадь или нет
  $area.data('over',true).bind('mouseenter',function(){
  if($area.data('over')){
  $area.data('over',false);
  //Сколько изображений в этой площади?
  var total		= $area.children().length;
  //видимые изображения
  var $current 	= $area.find('img:visible');
  //индекс видимых изображений
  var idx_current = $current.index();
  //следующее изображение для показа
  var $next		= (idx_current == total-1) ? $area.children(':first') : $current.next();
  //показать следующее (пока еще не видимое)
  $next.show();
  //выбрать случайную анимацию
  var anim		= animations[Math.floor(Math.random()*total_anim)];
  switch(anim){
  //выезд справа
  case 'right':
  $current.animate({
  'left':$current.width()+'px'
  },
  animSpeed,
  easeType,
  function(){
  $current.hide().css({
  'z-index'	: '1',
  'left'		: '0px'
  });
  $next.css('z-index','9999');
  $area.data('over',true);
  });
  break;
  //теперь слева
  case 'left':
  $current.animate({
  'left':-$current.width()+'px'
  },
  animSpeed,
  easeType,
  function(){
  $current.hide().css({
  'z-index'	: '1',
  'left'		: '0px'
  });
  $next.css('z-index','9999');
  $area.data('over',true);
  });
  break;
  //...сверху
  case 'top':
  $current.animate({
  'top':-$current.height()+'px'
  },
  animSpeed,
  easeType,
  function(){
  $current.hide().css({
  'z-index'	: '1',
  'top'		: '0px'
  });
  $next.css('z-index','9999');
  $area.data('over',true);
  });
  break;
  //... снизу
  case 'bottom':
  $current.animate({
  'top':$current.height()+'px'
  },
  animSpeed,
  easeType,
  function(){
  $current.hide().css({
  'z-index'	: '1',
  'top'		: '0px'
  });
  $next.css('z-index','9999');
  $area.data('over',true);
  });
  break;
  //справа и расстворение
  case 'rightFade':
  $current.animate({
  'left':$current.width()+'px',
  'opacity':'0'
  },
  animSpeed,
  easeType,
  function(){
  $current.hide().css({
  'z-index'	: '1',
  'left'		: '0px',
  'opacity'	: '1'
  });
  $next.css('z-index','9999');
  $area.data('over',true);
  });
  break;
  //слева и расстворение
  case 'leftFade':
  $current.animate({
  'left':-$current.width()+'px','opacity':'0'
  },
  animSpeed,
  easeType,
  function(){
  $current.hide().css({
  'z-index'	: '1',
  'left'		: '0px',
  'opacity'	: '1'
  });
  $next.css('z-index','9999');
  $area.data('over',true);
  });
  break;
  //сверху и расстворение
  case 'topFade':
  $current.animate({
  'top':-$current.height()+'px',
  'opacity':'0'
  },
  animSpeed,
  easeType,
  function(){
  $current.hide().css({
  'z-index'	: '1',
  'top'		: '0px',
  'opacity'	: '1'
  });
  $next.css('z-index','9999');
  $area.data('over',true);
  });
  break;
  //снизу и расстворение
  case 'bottomFade':
  $current.animate({
  'top':$current.height()+'px',
  'opacity':'0'
  },
  animSpeed,
  easeType,
  function(){
  $current.hide().css({
  'z-index'	: '1',
  'top'		: '0px',
  'opacity'	: '1'
  });
  $next.css('z-index','9999');
  $area.data('over',true);
  });
  break;
  default:
  $current.animate({
  'left':-$current.width()+'px'
  },
  animSpeed,
  easeType,
  function(){
  $current.hide().css({
  'z-index'	: '1',
  'left'		: '0px'
  });
  $next.css('z-index','9999');
  $area.data('over',true);
  });
  break;
  }
  }
  });
  });
  //При нажатии в любом месте происходит смена на всех площадях
 
  $hs_container.bind('click',function(){
  $hs_areas.trigger('mouseenter');
  });
  }
  }).attr('src',$this.attr('src'));
  }); 

авто-рейтинг блогов в livestreet

Заметил, что за блог редко, кто голосует. Голосуют в основном за топики. Всем похуй и все такое.
Итак, чтобы сделать рейтинг блогов зависимым от оценок постов, опубликованных в этих блогах.
в Rating.class.php
Берем функцию
public function VoteTopic(UserEntity_User $oUser, TopicEntity_Topic $oTopic, $iValue)

которая обрабатывает голосование за посты
заменяем это:
/**
* Сохраняем силу и рейтинг
*/
$oUserTopic=$this->User_GetUserById($oTopic->getUserId());
$iSkillNew=$oUserTopic->getSkill()+$iValue*$iDelta;
$iSkillNew=($iSkillNew<0)? 0: $iSkillNew;
$oUserTopic->setSkill($iSkillNew);
$oUserTopic->setRating($oUserTopic->getRating()+$iValue*$iDelta/2.73);
$this->User_Update($oUserTopic);
return $iDeltaRating;

На это:
/**
* Сохраняем силу и рейтинг
*/
$oUserTopic=$this->User_GetUserById($oTopic->getUserId());
$iSkillNew=$oUserTopic->getSkill()+$iValue*$iDelta;
$iSkillNew=($iSkillNew<0)? 0: $iSkillNew;
$oUserTopic->setSkill($iSkillNew);
$oUserTopic->setRating($oUserTopic->getRating()+$iValue*$iDelta/2.73);
$this->User_Update($oUserTopic);

$oBlog=$this->Blog_GetBlogById($oTopic->getBlogId());
$oBlog->setRating($oBlog->getRating()+$iValue*$iDelta/2.73);
$this->Blog_UpdateBlog($oBlog);

return $iDeltaRating;

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

Пылесос

Теперь плагин умеет пылесосить в компаниях, xtext и wall. Также совместим с пятой версией и jquery шаблонами.

Ранее плагин удалял лишние фотки не принадлежащие ни одному топику и окончательно удалять коменты, «пылесосить» можно как из профия админа (_ваш_сайт_/settings/cleaner/) так и поставить в cron.

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

Скачать тут.

зы может будет полезен Topic Delete

Смена администратора домена(передача прав на домен) в зоне RU/SU зарегистрированного в РегРу

Смена администратора домена(передача прав на домен) в зоне RU/SU зарегистрированного в РегРу

Смена администратора домена зарегистрированного в РегРу производится на основании заявления от текущего Администратора.

Формы писем для смены Администратора домена
передача домена:
от физического лица или ИП
от юридического лица

принятие домена
от физического лица или ИП
от юридического лица

Если администратором является физическое лицо или ИП, то заявление необходимо подписать лично им в одном из офисов РегРу либо заверить нотариусом подпись и отправить почтой в один из офисов РегРу.

Если текущий администратор юридическое лицо, то заявление должно быть оформлено по правилам документооборота. Внимательно оформляйте заявление, в случае некорректного составления заявления смена администратора будет невозможна.
Заверения подписи у нотариуса на заявлении от юридического лица не требуется. Письмо может быть доставлено в офис РегРу курьером или по почте. К заявлению требуется приложить заверенные печатью компании копии свидетельства ИНН, ОГРН, копию приказа о назначении директора компании.
Регистратор запрашивает данные документы для проведения идентификации в соответствии с Правилами регистрации т.к. для проведения операции подпись на заявлении от юридического лица не требуется заверять нотариусом(как в случае с физ.лицом).
Без предоставления данных документов смена администратора будет невозможна.

Правила оформления заявлений
для физических лиц и ИП
для юридических лиц

Заявление нового администратора может быть доставлено в один из офисов РегРу курьером или по почте, личного присутствия лица, которому передается домен, не требуется.

Если новый администратор юридическое лицо, то заявление должно быть оформлено по правилам документооборота. Внимательно оформляйте заявление, в случае некорректного составления заявления смена администратора будет невозможна. Заверения подписи на заявлении от юридического лица не требуется.
К заявлению необходимо приложить реквизиты Компании — нового администратора:
• полное наименование юридического лица;
• юридический и фактический адреса с указанием почтового индекса;
• ИНН / КПП;
• телефон и электронный адрес.

Также в заявлении от нового администратора необходимо указать номер договора, по которому будет осуществляться администрирование домена или указать аккаунт(логин), на котором будет управляться домен после смены администратора.
Если на сайте регистратора, то посмотреть номер своего договора, а также дату заключения и форму (оферта / в письменном виде) можно после авторизации на сайте REG.RU в меню «Мои данные» / Ваш статус

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

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

Безбумажная продажа домена через гаранта
Продавцу и покупателю надо выполнить три пункта:
  1. Зарегистрироваться на сайте регистратора РегТайм(далее РТ) www.webnames.ru/scripts/auth.pl?registration=1
  2. Создать анкету со своими реальными данными www.webnames.ru/scripts/user_forms.pl
  3. Подтвердить анкету сканом паспорта(страницы 2,3 и страница с регистрацией, т.е пропиской), для этого кликнуть по ссылке «подтвердить данные» напротив анкеты в списке анкет(https://www.webnames.ru/scripts/user_forms.pl). Подтверждают в течение 1-3 дня. Если проверка затянулась, то можно позвонить www.webnames.ru/contacts.pl и попросить сверить данные вне очереди, часто идут на встречу.

Процесс продажи домена:
Продавец в своем аккаунте открывает аукционы РТ www.webnames.ru/auction/my/add.pl, тип аукциона выбирает «Прямая продажа доменов», в поле «Получатель» вписывает логин покупателя на сайте РТ, указывает свою цену(мин. 1 руб.), создает лот, а покупатель в своем аккаунте в списке аукционов «покупает» этот домен, с его баланса спишется указанная стоимость.
Стоимость услуг РТ по проведению аукциона (вознаграждение Организатора) составляет 10(десять) процентов от цены лота, но не менее 50(пятидесяти) рублей. Так же надо иметь ввиду что РТ взимает подоходный налог от стоимости домена. При создании аукциона можно выбрать подходящий вам вариант учета налога — за ваш счет или за счет покупателя.
В случае использования РТ как гаранта общая сумма вычетов составит около 30%.

Стоимость домена за минусом услуг РТ будет зачислена на баланс аккаунта продавца и он сможет заказать выплату в своем кабинете.

ВАЖНО! Продаваемый домен должен быть в аккаунте продавца в полном управлении, а не частичном. Если домен был зарегистрирован через партнера РТ или находится под управлением партнера, надо перевести его в аккаунт продавца. Для этого после регистрации на сайте www.webnames.ru подтвердите свои данные в аккаунте через аттестат WM не ниже персонального, после этого перейдите по ссылке www.webnames.ru/scripts/domain_move_prep.pl?action=take_from_partner, впишите свой домен и нажмите кнопку «Выполнить».

Если у вас нет возможности или желания получать аттестат WM, то перевести домен от партнера на свой аккаунт можно через тех.поддержку регистратора, для этого авторизуйтесь на сайте www.webnames.ru и с помощью формы обратной связи отправьте сообщение в произвольной форме, например:
— Доброго времени суток.
Прошу передать в мой аккаунт управление доменом
вашдомен.ru
который зарегистрирован у вас на мое имя.
--------------

Переводят в рабочее время в рабочие дни достаточно быстро.

Безбумажная передача домена при самостоятельном рассчете
Если аккаунты продавца и покупателя на сайте www.webnames.ru подтверждены данными аттестатов WM не ниже начального персонального и расчет за домен вы производите сами, то передача домена еще упрощается.
Для таких аккаунтов на странице управления доменом активна ссылка «Сменить администратора» продавец перейдя по этой ссылке и введя WMID и № договора покупателя с ООО РегТайм может просто передать домен покупателю, владелец при этом сменится. Передача невозможна в случае, если срок регистрации домена истёк.
Для выполнения этой операции Вам потребуется подтвердить свою подлинность с помощью системы WebMoney пройдя авторизацию через WM кипер.

Набор плагинов, которые нужны на любом LS я считаю

  • Адсенс. Собсно все описано, картинкой.
    Скачать и активировать, вот и все.
  • Происходит, автоматическое подключение блогов при создании топика. Т.е. пользователю, не нужно сначала вступать в блог, чтобы писать в него. Но если у вас от 100 коллективных блогов, например, то он не подойдет, ибо при написании любого топика, пользователю сразу вся сотня предложится для выбора.
    Скачать и активировать
  • Автоматически вставляет тег cut, если длина топика превышает заданный параметр. Если люди нубы, не знают что такое «под кат», то это как раз пригодится.
    Скачать и активировать
  • Автозаполнение города, в профиле, при регистрации.
    Скачать и активировать
  • Добавляет возможность вставлять видео, через код
    <iframe>
    , сейчас это новый код ютуба, да вконтактиве всякие и вимедии.
    Скачать и активировать.
    *алсо можно вставлять через тег
    <video>
    который в LS, прямо по ID видосов, или через ссылки вида youtu.be и прочих коротких.
  • Возможность использовать Граватары. Ну, кто не знает — gravatar.com
    Скачать и активировать
  • Приветствия. Вверху, в сайдбаре, цитаты рандомно появляются. Хотя конечно с лепры же стырено.
    Скачать и активировать
    Настройка текста тута: plugins/greetings/templates/skin/default/list.txt Тексты разделяются, просто — каждая отдельная строка выводится.
  • Расширенное залитие картинок. Добавление первьюшек и предпросмотра.
    Скачать и активировать
  • Листинг страниц с бегунком, как тут внизу. Портит индексацию, т.е. по странично роботы не ходят.
    Скачать и активировать
  • Автозаполнение поиска. Ну, вводите в поиск что-то, не успели дописать слово, а оно уже высветилось, если оно есть в базе.
    Скачать и активировать
  • Кстати, про поиск. Он в livestreet по умолчанию не работает. Нужно устанавливать aceadminpanel и потом еще acemysearch. Тогда все ок будет. Но во первых, этот модуль доп админки не прошит доконца, видел как из-за нее находили дырки. Во вторых, короче это еще и ресурс жрет, на говно тарифах типо виртуального хостинга или мелких vps с 128 памяти, будет не очень. (вообще, vps покупайте от 1гб всегда, к слову)
    Поэтому я советую заюзать поиск от гугла. Делать его тута.
    Или замутить поиск от яндекса. Делается вот так.

    Еще, об этом модуле админки. С помощью него вы можете удалять/банить пользователей. Делать списки инвайтов и еще пару плюшек. Но сразу хочу предупредить, в LS структура по ID в базе. Тут расчитано на то, что тут ничего не удаляется никогда, а просто рейтингом сносится в минусы, если мозолит глаза на главной. (рейтинги в конфиге двигла настриваются, там по разному можно структуры придумывать). Поэтому у вас могут возникнуть проблемы, если вы начнете удалять юзеров. Например коллективные лс собьются, если было лс на 3 человека, а одного из них удалили, то вывод этих трех id, в модуле лс, конечно проебался. И у чела будет глючный лс ящик, и он даже не сможет удалить такие лаго лс и отлистать в прошлое. Или например, в январе я случайно всех users удалил :) У меня везде комменты пропали, ибо вывод комментов идет с id коментатора. Ну короче совет — продумайте зарание структуру коллективных блогов, их тоже лучше не удалять. :)
  • Похожие записи. Например, откройте любую запись, и вы увидете похоже записи в сайдбаре. Они берутся из критериев: метки, автор, блоги. Находится схожесть короче.
    Скачать и активировать
  • Спойлер. Добавляется тег спойлер.
    Скачать и активировать
  • Все метки. Добавляет страницу, где будет абсолютно все метки, а не токо самые популярные, как в сайдбаре.
    Скачать и активировать
  • Добавляет, в сайдбар, где Блоги / Комментарии, еще блок Твиттор. В конфиге указывается аккуант и кол-во выводимых постов.
    Скачать и активировать
  • OpenId — регистрация через vkontakte, facebook, rambler, yandex, google, twitter.
    Скачать и активировать.
    Потом настройка в /plugins/openid/config/config.php
    Для авторизаций, нам нада регнуть свой домен в приложениях тех систем.
    Для rambler, yandex, google не нужно. А вот для facebook, vkontakte, twitter нужно.
    Итак. Вконтакте — vkontakte.ru/apps.php?act=add&site=1, Фб — facebook.com/developers/createapp.php, twitter — dev.twitter.com/apps/new.
    Потом соответсвенно заполняем полученные ID в конфиге и секретные ключи.
    Еще отмечу, для твитора важно сделать так. А в FB, нужно указать домен в настройках. т.е. не важно где у вас установлен LS, поле домен должно быть — корневой домен, а не поддомен или там /blog и еще что-то. Вот.
  • Комментирование, через VK и FB.
    Скачать и активировать
    Опять, как и с OpenId — создать приложения в соц сетях. И настроить конфиг.
  • OpenId через Loginza.
    Все тоже самое, что у OpenId, но не нужно никаких конфигов править. Вы пользуетесь, напрямую через сервис Loginza, который поддерживает Yandex. Т.е. как бы люди регаются, через их приложения, а не ваши ;)
    Скачать и активировать
  • Добавление в профиль, полей для джебберов, скайпов и прочего.
    Скачать и активировать
  • Возможность добавлять к постам подпись.

    Скачать и активировать
    Настройка, в конфиге config/config.php
    А саму подпись(для админа), делать тута: plugins\topicsignature\templates\skin\default\sign_admin.tpl
  • Плагин комментарии к статичным страницам
    Скачать и активировать.

Создание официальных страниц в vkontakte и facebook

Для VK
vkontakte.ru/public.php?act=new
*еще полезно:
vk.com/apps.php?act=add&site=1
vk.com/developers.php

Для facebook
www.facebook.com/pages/create.php
*еще полезно будет:
developers.facebook.com/apps
www.facebook.com/badges/
developers.facebook.com/docs/plugins/

Для twitter
twitter.com/about/resources
*еще
dev.twitter.com/apps/new

Для google+
www.google.ru/intl/ru/webmasters/+1/button/index.html

Если кому-то интересно, что-то, про социальные сети, и интеграции в сайты. Спрашивайте, в комментах, подскажем ;)