+6.13
Рейтинг
19.33
Сила

Продажный кодер

ls.hook.inject([ls,'ajaxUploadImg'],'$("#topic_text").val("");','ajaxUploadImgBefore');
  • avatar kpoxas
  • 2
Вот хук
<?php
/**
 * Регистрация хука <paging> noindex
 *
 */
class HookPaging extends Hook {
    public function RegisterHook() {       
        $this->AddHook('module_viewer_display_before', 'AddTitlePaging',__CLASS__,-1000);
    }

    public function AddTitlePaging() {
        $aTitle = array (
            $this->GetPage(),
            $this->Viewer_GetHtmlTitle(),
    	);
        $this->Viewer_Assign("sHtmlTitle", trim(implode(' ',$aTitle)));
    }

    protected function GetPage($sAfter='-') {
        if (preg_match('/page(?<page>\d+)/i',Router::GetPathWebCurrent(),$aMatches)) {
            $aPage = array (
                'Страница',
                $aMatches['page'],
                $sAfter,
            );
            return implode(' ',$aPage);
        }
        return false;
    }
}
?>
можно сделать авторегистрацию, если вам нужно набить базу пользователями и долбить их e-mail уведомлениями. Как я сделал на своем сайте:
1. Подписка на блоги при регистрации — в попапе регистрации я предложил будущему пользователю выбрать, что именно его интересует. Из всех блогов я выбрал самые необходимые (получилось около 10), в конфиге плагина задал немного другие названия. Человек отмечает что ему нравится, и вуаля — после регистрации он УЖЕ подписан на эти блоги, а значит, что стоит там появится хотя бы одной новой теме — он тут же будет уведомлен об этом на почту.

2. Этого я еще НЕ сделал, но в планах: авторегистрации. Я хочу дать гостям возможность написать комментарий. При этом нужно будет указать свою почту и логин. Т.е заполнить еще два поля. Это не очень много. После публикации коммента, пользователя тут же авторизует, а на почту отправляется письмо с регистрационными данными и свежесгенерированным паролем. Минусы конечно есть, не отрицаю. Но и плюсы — однозначно.

Ну и конечно — уникальные возможности. Если у вас сайт про гаджеты — подумайте КАК сделать его привлекательным не только в плане контента. Если нужны автора — ППА, как сказал beauty_free. Это разумно. А у вас получился сайт для чтения. Вот и читают все, смысл регаться?
  • avatar aex
  • 0
На ЛС все можно сделать.
Ловите фирменный рецепт для высоконагруженных проектов на LS (испробовано на личном опыте путём множества проб и ошибок.)
Во-первых, устраняем узкие места.
Начать надо не с LS и даже не с самого веб-сервера, а с общесистемных заморочек.
Иногда бывает так, что много процессорного времени уходит на дисковые операции, т.е. IOwait.
Здесь две задачи: выставить адекватный IO Sheduler (CFQ, или даже Noop), и перенести всё — слышите, всё, что можно, в RAM FS. Особые джедаи-оверклокеры переносят весь движок в оперативку (об этом расскажу позже.)
Вот уж теперь приходит очередь сервера. Толстый и неповоротливый апач, падающий от SlowLori-атаки в одиночку (банальный питоноскрипт), сносим к Дискорду.
Качаем исходники nginx'а.
./configure --help

Вдумчиво курим мануал, и определяемся, что нам надо. Потом курим опять, и вновь конфигурируем для сборки с нужными флагами (Модуль STUB не забудьте, ага), выставляем все пути соответственно FHS!
make

Витиевато выражаемся, доставляем нужные зависимости и пакеты (опять-таки, если вы джедаист-пингвиновод, этот пункт пропускаем.)
checkinstall
(аккуратно собираем в пакет). Ставим.
Всё, теперь у нас красивый, быстрый, аки Рэйнбоу Дэш, сверкающий новизной nginx. Конфигурирование его может ускорить ещё на 20%.
Затем — php. Естественно, работать будем только, и только через CGI-интерфейс. Джедаисты качают исходники, собирают@компиляют. Ленивые кунг-фу панды ставят из пакетов.

Затем приходит время настраивать ШINDOШS nginx и собственно связку php-fpm. Приблизительные цифры могу посоветовать только тогда, когда скажете параметры этого вашего сервера и среднюю нагрузку на сайт (посещаемость). Для статики ставьте expires: max и отфутболивайте вплоть до ~75% запросов статики не с 200, а с 304 ответом, ня!

Переносим временные каталоги nginx в предусмотрительно откушенный кусок оперативной памяти.
Настраиваем mysql… тот же mysqltuner.pl вам в помощь, а временные каталоги вы уже поняли, куда. Само взаимодействие тоже строго через сокет — линукс же!

Затем ставим ускоритель. eAccelerator, спросите вы? Да как бы не так. Во-первых, он древнее Селестии и Луны вместе взятых, и не развивается уже очень долго. И потом, из-за его вредной привычки не следить за целостностью shared memory, и при высокой нагрузке то и дело отправлять в 502 сайт, я и отказался от него — ну стопорит обработку php-cgi, и всё тут. Доработка напильником как spawn-fcgi, так и php-fpm помогала лишь временно — до первой же лавины запросов.

Иногда советуют ставить memcached… ИМХО, излишний велосипед. Да, у него есть няшная фича распределения по нескольким серверам, но оно вам надо? Запускать отдельный кеширующий сервер, особенно на слабых хостингах/серверах суть лишняя головная боль. Поэтому выбрасываем это звено также.

Два вышеназванные «ускорителя» успешно заменяет xCache — кеш как опкода, так и переменных (var cache). Гибкая настройка, наличие «админки», быстродействие и нетребовательность к ресурсам процессора — что ещё надо для полного счастья? Благо, LS с ним работать умеет (и по сокету тоже), посему ставим. Аппетиты настраиваем в xcache.ini, если захотели стабильности и решили включить RO-protection, то файл также ложим в RAM FS.

Ставим сфинкс, ротацию топиков-комментов вешаем на крон, сам сфинкс просто вешаем на сокет.

Если не можете позволить себе полностью переместить LS в RAM FS, сделайте это хотя бы для каталога шаблонов — и немного, и ощутимо сэкономите ресурсы.

Вот, в принципе, и всё… по просьбе могу расписать любой пункт более подробно.

Да пребудет с вами мудрость Селестии.
Очень не хватает фишки с условным названием «Подозрительные юзеры», а именно:
юзеры по никам, осуществляющие вход/регистрацию с одного IP;
юзеры с одинаковыми комментариями4
юзеры с одинаковыми ссылками в профиле;
юзеры, зарегистрировавшиеся с разницей в 5-10 секунд;
юзеры, которые ни разу не были на сайте (кроме момента регистрации), но имеющие ссылку в профиле.
  • avatar Lexx
  • 1
прошу прощения что не совсем по теме, не про спойлер а скорее про кат.
кто-то когда-нибудь реализовывал спойлер/авто-кат для комментов? У меня на проекте зачастую пишутся очень некислые по размерам комменты, хотелось бы и к ним применять авто-кат, чтобы они не убивали скролы на мышках
Мне вот кажется, удобно было бы оставить одну ленту. Сделать в ней три подраздела: блоги, комментарии и активность

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

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

ТО есть в «блогах» мы выводим все активность в блогах.

В «комментариях» выводить:
— ответы к моим топикам
— ответы на мои комментарии
— комментарии друзей
— комментарии людей, на которых я подписан.

«Активность» — этот подраздел выводит уведомления о социальной активности моих друзей и тех, за кем я слежу
— добавление в друзья
— Добавление записи на стену
— голосование за пользователя
= пользователь vasya теперь следит за пользоателем petya

Голосования за топик, блог или коммент — убрать. Это, имхо, никого не колышет.
  • avatar Mitya
  • 4
Спасибо, помогло. Если кому-то будет полезно, делается так:

{if count($aTopics)>0}
	{foreach from=$aTopics item=oTopic name=foo}   
	   {assign var="sTopicTemplateName" value="topic_`$oTopic->getType()`.tpl"}
	   {include file=$sTopicTemplateName bTopicList=true}
	   
	   {if $smarty.foreach.foo.index == 5}

{include file='middlebanner.tpl'}


	   {/if}
	{/foreach}			
    {include file='paging.tpl' aPaging="$aPaging"}			
{else}
	<div class="padding">{$aLang.blog_no_topic}</div>
{/if}
отличное предложение, только не плагином, а опционально в конфиг движка.

для себя уже давно использую костыль (для05x, на 04x не пробовал): файл \engine\lib\external\Smarty\libs\sysplugins\smarty_internal_templatecompilerbase.php

найти строку (примерно 58)
$template_header .= "         compiled from \"" . $this->template->getTemplateFilepath() . "\" */ ?>\n";
после нее добавить
$template_header .= "<!-- Start " . $this->template->getTemplateFilepath() . " -->";
и найти строки (примерно 86)
if ($template->suppressFileDependency) {
            $template->compiled_template = $_compiled_code;
        } else {
            $template->compiled_template = $template_header . $template->createPropertyHeader() . $_compiled_code;
        }
и изменить на
if ($template->suppressFileDependency) {
            $template->compiled_template = $_compiled_code."<!-- End " . $this->template->getTemplateFilepath() . " -->";
        } else {
            $template->compiled_template = $template_header . $template->createPropertyHeader() . $_compiled_code."<!-- End " . $this->template->getTemplateFilepath() . " -->";
        }

на идеальность решения конечно не претендую, НО ОЧЕНЬ помогает при верстке.
ну и вынести все это настройкой в конфиг было бы идеальным решением
Я тут подумываю на быстрой регистрацией. Планирую проект для людей, далеких от it, им тяжело даются даже незначительные перемещение (на страницу регистрации) и заполнение полей.

Пока пришел к такому решению: для регистрации требовать только почту и ввод с картинки (или вопрос — неважно, любая капча). Все это в модальном окне + аякс регистрация с одномоментной авторизацией. В дальнейшем предлагать пользователю заполнить информацию о себе. В принципе, одного мыла достаточно, чтобы человек мог подписаться на обновления, голосовать, добавлять в избранное. Таких людей полно, они не пишут комментов, топиков, просто читают сайт, добавляют в избранное интересные материалы.

Постинг топиков и комментов ограничить для таких юзеров, при попытке опубликовать выдавать окно с пояснениями и поля ввода «логина» или «имени». Конечно, это может и перебор, но это у-доб-но! И все тут. По-крайней мере, так хочу реализовать у себя на сайте.
  • avatar CraSS
  • 0
Заюзал плагин камрада netlanc «Preview Pictures» для 0.5.x.

В общем-то все Ок, но есть у меня некоторые хотелки.

1. Выравнивание по центру.
Вроде как, у тэна img атрибут align имеет только такие значения:
<img align="bottom | left | middle | right |  top">


Как они работают можно посмотреть тут.

В связи с эти непонятно, зачем в меню есть пункт «Выравнивание по центру», т.к. оно не работает.

Мне пришлось добавлять в jevix.php тег p, у которого в атрибуте align есть значение center. Соответственно, обрамляешь ссылку на картинку
<p align="center"</p>
все Ок.
Возможно, не совсем правильно, но работает.

Так вот, хотелось бы, чтобы подобным образом работал пункт меню «выравнивание по центру», чтобе не приходилось писать
<p align="center"</p>
руками.

2. Рамка вокруг изображения и подпись

Хотелось бы иметь опциональную возможность (чекбокс, например) включения рамки вокруг изображения, а так же подписи. В точности, как тут.

Причем, хотелось бы, чтобы подпись под изображением по дефолту была такая же, как alt и title, но при желании ее можно было бы сделать другой.

3. Имена файлов картинок

У меня есть стойкое поверие (не могу подтвердить), что название файла влияет на его выдачу по поиску картинок в гугле, например.

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

Как-то так… Если что-то где-то криво сформулировал, не пинайте, то от незнания.

В общем, хотелось бы, чтобы кто-нибудь допилил сей полезный плагин. Будет ли это сам автор, или кто-то другой — не принципиально. Само-собой, не бесплатно.
  • avatar Denzel
  • 0
На тему активности, меня больше интересует вопрос: Можно ли организовать к ней счетчик «нового»? "+1, +5..." как это с топиками и комментариями? Правда лучше не совсем «новое», скорее счетчик «непрочитанного» со сбросом после просмотра. Другими словами сделать из «Активности» систему оповещений.