+14.47
Рейтинг
52.59
Сила

Alexey Elizarov

Вот схема проекта в идеале. Когда страница генерируется php скриптом (или еще чем-нибудь), она записывается в кеш (в данном случае — memcache, но вообще неважно, хоть в файл). Ключем для кеша (то есть идентификатором, по которому его потом искать) служит URI запроса вместе с GET данными. В следующий раз при идентичном запросе nginx сначала поищет в кеше, используя ключ URI, вернет из кеша или опять запустит скрипт бэкенд php.

схема фронтенд кэширования

У меня вместо nginx кусок кода в index.php, а кеш пишется в файл, имя которого равно ключу кеша. Если POST запрос, то в URI параметр запроса невидны. Поэтому ключ сварганить для них нельзя. Да и не надо, POST запросы используются для отправки данных на сервер, а не для получения.
Но вот в некоторых блоках LS (те же блоки в сайдбаре) данные с сервера как раз-таки получаются POST — ом. Я считаю, что надо получать GET-ом, для их легкого кэширования. Поиск же сделан через GET:
livestreet.ru/search/topics/?q=%D0%BA%D0%B0%D0%BA
И его результаты легко закешить, а потом отдать, потому что URI запроса будет уникальным для разных ?q=.
  • avatar kpoxas
  • 3
по пагинации писал тут
Кроме того в <head> я бы добавил еще вот такой код для поисковиков:


{if $aPaging and $aPaging.iCountPage>1}   
   
    {if $aPaging.iPrevPage}  
        <link rel="prev" href="{$aPaging.sBaseUrl}{if $aPaging.iPrevPage>1}/page{$aPaging.iPrevPage}{/if}/{$aPaging.sGetParams}" /> 
    {/if}
    
    {if $aPaging.iNextPage}
        <link rel="next" href="{$aPaging.sBaseUrl}/page{$aPaging.iNextPage}/{$aPaging.sGetParams}" />               
    {/if}
         
{/if}
  • avatar gran
  • 5
Еще не плохо бы сделать функцию которая пробегает по всем размещенным изображениям и создает из оригинала все размеры заданные в конфиге, а то в конфиге можно указать новые размеры изоображений, а как быть с существующими блогами и пользователями, заново загружать аватарки?
  • avatar gran
  • 6
Может работу с файлами вынести в отдельный класс? Потому что функции сохранения и удаления файла могут использоваться не только для картинок, а если их использовать как сейчас что Image_SaveFile будет вводить в заблуждение. А может потом еще и другие появятся функции работы с файлами.
Все хорошо, но есть один неприятный момент. Крайне не рекомендуется юзать репозитории от dotdeb.org. Я на двух своих серверах напоролся на то, что очень странно работало mysql, которое приходит оттуда в пакете php5-mysql — на одном вообще не завелось, на другом работало с дикими тормозами. В сети также много криков боли и ярости по поводу dotdeb — так что юзать их я бы не рискнул, может, заведется, а может и нет. Пока единственный надежный путь юзать php5.3 из пакетов — это переключаться на ветку testing и ставить оттуда: www.zagirov.name/install-php-5-3-3-with-fpm-in-debian-squeeze. Но тут тоже есть проблема — на этот раз с пакетом php5-fpm, который то помещают в testing то убирают. Решить проблему надежнее всего через установку этого пакета из другой версии php, потому что он фактически для всех 5.3 одинаков: www.zagirov.name/debian-testing-install-php5-fpm

{if $oTopic || ($sAction=='index' and $aPaging.iCurrentPage=='1' and $sEvent=='')}
		<meta name="ROBOTS" content="index, follow">
		<meta name="description" content="{$sHtmlDescription}" />
		<meta name="keywords" content="{$sHtmlKeywords}" />
	{else}		
		<meta name="ROBOTS" content="noindex, follow">
	{/if}
Откройте в папке actions файл ActionRss.class.php. Видите в самом низу функцию getTopicText?
protected function getTopicText($oTopic) {
		$sText=$oTopic->getTextShort();
		if ($oTopic->getTextShort()!=$oTopic->getText()) {
			$sText.="
<a href=\"{$oTopic->getUrl()}#cut\" title=\"{$this->Lang_Get('topic_read_more')}\">";
			if ($oTopic->getCutText()) {
				$sText.=htmlspecialchars($oTopic->getCutText());
			} else {
				$sText.=$this->Lang_Get('topic_read_more');
			}
			$sText.="</a>";
		}
		return $sText;
	}
Отлично! Она и отвечает за формирования текста статей в RSS. Почему бы вам не исправить её, например, на такую?
protected function getTopicText($oTopic) {
		$sText=$oTopic->getText();
		return $sText;
	}
А вы молодец — сами всё сделали ;)
Думаю не в этом дело, у вас в хедере писем:
Received-SPF: neutral (google.com: 217.112.42.2 is neither permitted nor denied by best guess record for domain of mail@wallpapers.ru)
Должно быть так:
Received-SPF: pass (google.com: domain of webmaster@livestreet.ru designates 88.198.54.11 as permitted sender)
Добавьте в dns zone file TXT запись с spf с вашим ip сервера и будет тип топ.
И прописать Reverse DNS entry, конечно же, если не прописана.
  • avatar Popori
  • 3
К вопросу о том, чтобы читателю сайта было понятно за что у него начисляется уровень. В своё время писал подробные ответы на вопросы по сайту на ЛС. Может кому пригодится, и смогут адаптировать для предложенной системы. Рейтинговая система с уровнями и процентами хороша для игрового сообщества.

Что такое «Прямой эфир»?
В этом блоке отображаются последние комментарии и опубликованные топики пользователей. Чтобы его обновить, просто нажмите на кнопки «Комментарии» или «Публикации».

Что это за цифры и стрелочки?
На сайте действует рейтинговая система, основанная на голосовании за комментарии, топики, блоги и других людей. Цифры показывают рейтинг топика (комментария, блога), а значит и его важность, полезность, актуальность. Рейтинговая система является средством для саморегулирования сообщества.

Как поднять рейтинг и силу?
Рейтинг — это ваш статус в сообществе, который наделяет возможностями по мере его роста. Он изменяется, когда другие пользователи голосуют за ваш топик или непосредственно у вас в профиле.

Сила влияет на то, как сильно будет влиять ваш голос при голосовании за что-либо.
Например, пользователь с силой меньше 100 при голосовании за топик увеличивает его рейтинг на 1, а пользователь с силой больше 100 увеличивает рейтинг топика на 2.
Сила изменяется, когда другие пользователи голосуют за ваши комментарии, топики или непосредственно у вас в профиле. Соответственно, чтобы поднять рейтинг и силу нужно писать полезные и актуальные статьи на сайте Попори, чтобы другие пользователи захотели за них положительно проголосовать.

Здесь любой пользователь может написать топик?
Это не очередной сайт, где пишут только администраторы. Любой пользователь может написать топик, но не в каждый тематический блог — это зависит от рейтинга пользователя и порогового рейтинга конкретного блога. Если ваш топик, опубликованный в тематическом блоге наберёт 7 и более плюсов, он попадёт на главную страницу сайта Попори. По умолчанию вместе с регистрацией нового пользователя, создаётся и его персональный блог, в который он может всегда написать. Иными словами, это средство заявить о себе, когда не хватает рейтинга опубликовать материал в тематический блог, задать вопрос или написать оффтопик. Чтобы написать новый топик нажмите на кнопку с карандашом в меню и выберите тип топика. Подробнее о том, как создавать топики читайте в разделе помощи.

Почему, когда я хочу опубликовать топик в определённый блог, его нет в выпадающем списке пунка «В какой блог публикуем», но при этом он есть в разделе Блогов?
Это значит, что у выбранного вами блога стоит ограничение по рейтингу на публикацию в нём. Потому для начала топик стоит опубликовать в персональный блог, а уже по достижении порогового значения рейтинга, перенести в нужный тематический блог.

Я написал топик, но его нет в списке опубликованных. Куда он делся?
  1. Проверьте раздел Черновики — возможно, вы нажали кнопку «Сохранить в черновиках» вместо «Предпросмотр» или «Опубликовать».
  2. Если ваша статья сначала была видна в ленте топиков, а потом пропала, то проверьте подраздел Плохие — возможно ваш топик набрал граничное число отрицательных голосов и отсеялся из основной ленты.
  3. Возможно, ваш топик попал под разряд флуд/спам или иным способом нарушил правила сайта и был удалён администрацией.


Насколько важно правильно указывать метки?
Метки необходимы для совместной категоризации и описанию контента. На главной странице сайта и в подразделах расположено облако меток. В облаке наглядно представлены метки, по которым классифицирован опубликованный на сайте контент. Чем больше шрифт метки, тем чаще он используется для разметки контента, и наоборот. Также на основе меток формируется список похожих топиков в соответствующем блоке в сайдбаре.
  • avatar nartuk
  • 1
В шаблоне (topic_topic.tpl, topic-link.tpl, topic-photoset.tpl, topic-question.tpl) перед выводом имени ника вставляем:
{if $oUserProfile->getProfileSex()!='other'}{if $oUserProfile->getProfileSex()=='man'}Написала{else}Написал{/if}{/if}
Далее замените
{date_format date=$oTopic->getDateAdd()}
на
{date_format date=$oTopic->getDateAdd() hours_back="12" minutes_back="60" now="60" day="day H:i" format="d F Y, H:i"}

Что касается вывода комментариев, то они по умолчанию так и сделаны, как у вас нарисунке.
Господа недовольные покупатели шаблонов, у меня для вас плохая новость.

Нельзя создать действительно хороший проект, пытаясь набрать пул шаблонов и плагинов, собрав из этого конструктора сайт и объявить, что в результате вы получили нечто интересное, полезное и крутое. Все что вы получите — это просто набор плагинов + шаблон.
Главный тезис — все что вы здесь покупаете или скачиваете — должно восприниматья как платформа, база, фреймворк, на основе которого вы (подчеркиваю) _должны_ производить кастумизацию, дорабатывать, рефакторить, изменять структуру и привносить свои собственные идеи. Шаблон в данном случае — это концептуальная база, на основе которой необходимо реализовать свои идеи _самостоятельно_.
Данная самостоятельноть подразумевает не обязательно личное програмерство, но как минимум привличение профильных специалистов для соответсвующих задач.

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

Вот минимальный алгоритм создания мало-мальски интересного проекта (с технической точки зрения, без учета рентабельности идеи):
1. Изучить все что есть на сайте LS;
2. Выбрать необходимый для своего проекта функционала;
3. Скачать/купить его;
4. Собрать конструктор и поиграть с ним немного;
5. Подумать и выкинуть половину этого функционала, так как он не профильный для вашего проекта;
6. Подумать и придумать _собственную_ информационную структуру, свой функционал, свои интерфейсные фишки на базе уже изученного конструктора.
7. Заказать в индивидуальном порядке (а не массовым заказом) эти доработки и внедрить их в свой проект;
8. Поиграться с полученным результатом и (вуаля!), повторить с пунтка 5! Да-да, думать об уместности и уникальности функционала надо на всех этапах.
9. Относитесь к любому купленому плагину или шаблону как к подарку судьбы, что вам так или иначе достался готовый продукт, который вы можете дальше использовать как платформу для реализации своих _собственных_ идей (а не разрабатывать эту платформу самому).
10. И на последок — не забывайте благодарить всех авторов шаблонов и плагинов, а также основателя фреймворка. Как словами, так и материально.

И напоследок, завершающий тезис: если хотите создать настоящий сайт для людей, а не очередной клонированый ГС, осознайте, — это все равно что взять и на скорость 100 км/ч взять и разбить автомобиль об стену. Ну хотя бы малолитражный, вроде матиза. Это в плане стоимости вашего _мало-мальски уникального и интересного_ проекта. После этого вам остается расслабиться и ждать результатов вашей (а не разработчиков) прозоривости: на сколько вы смогли грамотно разработать тот самый функционал для своего профильного проекта.

Нет денег на то, чтобы разбить об стену свой автомоиль ради свой мечты (а ваш проект — это ведь ваша мечта, не так ли?) — учитесь привлекать нужных специалистов под долю в проекте или просто высшим смыслом этого проекта.

Учитесь создавать такие проекты, которые смогут дать смысл разработчикам вложиться в ваш проект своей квалификцией.
У меня работает только этот вариант:

$config['sys']['mail']['type'] = 'smtp';
$config['sys']['mail']['from_email'] = 'ваш логин@gmail.com';
$config['sys']['mail']['from_name'] = 'Почтовик';
$config['sys']['mail']['charset'] = 'UTF-8';
$config['sys']['mail']['smtp']['host'] = 'ssl://smtp.gmail.com';
$config['sys']['mail']['smtp']['port'] = 465;
$config['sys']['mail']['smtp']['user'] = 'ваш логин@gmail.com';
$config['sys']['mail']['smtp']['password'] = 'ваш пароль от почты';
$config['sys']['mail']['smtp']['auth'] = true;
$config['sys']['mail']['include_comment'] = true;
$config['sys']['mail']['include_talk'] = true;
  • avatar 1d10t
  • 0
ыыыы я придумал как %)
надо нагенерить с помощью reflection один большой файлик, описывающий все эти классы без тел функций и добавить как external source в proj props -> php include paths -> library %)

мля сам ныл два года!!! и допер только щас
  • avatar ort
  • 1
да как бы это только рекомендация, т.к. обязательство этого противоречит GPL. Это собственно и написано здесь — http://livestreet.ru/page/download/
Просто без этой ссылки какого либо supporta с моей стороны не будет