0.00
Рейтинг
0.00
Сила

Форматирование дат (На сайте: 1 год 5 месяцев 6 дней )

Хочу поделится хаком, как выводить дату в таком формате. Для этого необходимо в файл \engine\modules\viewer\plugs\function.date_format.php в function smarty_function_date_format вставить:

if(isset($aParams['day_back'])) {
		require_once('modifier.declension.php');
		$iTimeDelta = round((time()- $iDate)/(60*60*24));
		$year=floor($iTimeDelta/365);
		$mouth=floor(($iTimeDelta%365)/30);
		$day=($iTimeDelta%365)%30;
		$r = "";
		if($year>0) $r = smarty_modifier_declension(
						$year,
						$oEngine->Lang_Get('date_year_back',array('year'=>$year)),
						$oEngine->Lang_GetLang()
					);
		if($mouth>0) $r.= smarty_modifier_declension(
						$mouth,
						$oEngine->Lang_Get('date_mouth_back',array('mouth'=>$mouth)),
						$oEngine->Lang_GetLang()
					); 	
		if($day>0)	$r.= smarty_modifier_declension(
						$day,
						$oEngine->Lang_Get('date_day_back',array('day'=>$day)),
						$oEngine->Lang_GetLang()
					);	
		if($r!=""){
			return $r;
		}
		else return $oEngine->Lang_Get('date_day_back_less');
			
		
	}

В файл \templates\language\russian.php

'date_day_back' => '%%day%% день; %%day%% дня; %%day%% дней',
'date_mouth_back' => '%%mouth%% месяц; %%mouth%% месяца; %%mouth%% месяцев',
'date_year_back' => '%%year%% год; %%year%% года; %%year%% лет',

И при выводе даты прописать {date_format date=$oUserProfile->getDateRegister() day_back=«1»}

Предложение по улучшению роутера

На данный момент, для роутера нет никакой разницы между livestreet.ru/blog/ и livestreet.ru/blog. И это по моему скромному имху не правильно т.к. по двум разным урлам находятся совершенно одинаковые страницы.

Решение я для себя выбрал следующее:
/engine/classes/Router.class.php->GetRequestUri()
после
$sReq=preg_replace("/\/+/",'/',$_SERVER['REQUEST_URI']);

добавить
if(empty($_GET) && !strpos($sReq, '.') && substr($sReq, strlen($sReq) - 1 ,1) != '/'){
            header('Location: ' . $sReq . '/',TRUE,301);
            die;
}

В этом случае, все запросы к «директории», которые не заканчиваются на "/", будут перенаправляться с кодом 301 (Moved Permanently) на урл который заканчивается "/".

Ну и да, это очень любят поисковики.

З.Ы. Совершенно за, если кто-то скажет как это сделать лучше :)

UPD. Po6oT В комментариях, подсказал решение гораздо лучше моего.

Статичная страница на главной

Собственно сабж. Недавно начал разбираться с движком, но такой функции так и не нашел.
Как можно сделать вывод статичной страницы на главную? По умолчанию стоит /blog/

Заранее спасибо

upd. 04.10.2010:

В конфиге www\config\config.php
ищем:
$config['router']['config']['action_default'] = 'index';

меняем на:
$config['router']['config']['action_default'] = 'page';


В экшене плагина (www\plugins\page\classes\actions\ActionPage.class.php добавляем новый экшен
В функцию
protected function RegisterEvent() {
		$this->AddEvent('admin','EventAdmin');
		$this->AddEventPreg('/^[\w\-\_]*$/i','EventShowPage');
	}


Добавляем экшен по умолчанию (вместо «about» вашу страницу):
protected function RegisterEvent() {
		$this->AddEvent('admin','EventAdmin');
		$this->AddEventPreg('/^[\w\-\_]*$/i','EventShowPage');
		$this->SetDefaultEvent('about');
	}


Спасибо ort и DezMax за подсказку.

Непонятка с личным блогом

Добрый день!

Потестил движок, все понравилось, но возникла одна непонятка:

Как посмотреть чей то личный блог?

По адресу /my/user/ показывают все топики пользователя, включая темы в коллективных блогах.
А посмотреть записи только в личном блоге я не могу. Нажимаю на ссылку «Блог им. user»
и вместо персонального блога User опять попадаю в раздел все публикаций.

Мне кажется логичнее сделать выход на «все публикации» через профиль пользователя,
а при нажатии на ссылку вида «Блог им. user» все таки показывать только сообщения
из личного блога пользователя, без тем из других блогов.

Постраничное разбиение комментариев

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

Для включения постраничности в конфиге появились два параметра:
$config['module']['comment']['use_nested'] = true; 
$config['module']['comment']['nested_per_page'] = 50;
Первый переводит комментарии в режим дерева (nested set), второй задает число корневых элементов на одну страницу. Если значение nested_per_page = 0, то разбивки на страницы не будет, будет просто использоваться nested set для построения дерева.

Для перевода существующих комментариев в режим use_nested = true необходимо запустить конвертацию/восстановление структуры дерева по адресу — /admin/restorecomment/. Если комментариев много, то процесс конвертации может затянуться, поэтому не забудьте на время выставить в php.ini большой лимит выполнения php скриптов. После конвертации появится сообщение — restore ok.

Ссылка на изменения — trac.lsdev.ru/livestreet/changeset?new=1015%40trunk&old=1006%40trunk
Не забудьте выполнить SQL патч — trac.lsdev.ru/livestreet/browser/trunk/install/convert_0.4.2_to_0.4.3.sql

Борьба с 502 bad gateway или как установить xcache на 0.4.2

Итак после долгих мытарств и по мотивам livestreet.ru/blog/questions/5335.html решил написать как установить xcache на LS 0.4.2. Мне установка xcache реально помогла в решении проблемы ошибки 502 и в целом для более стабильной работы сайтов. Итак поехали:
Первым делом убираем memcache и eaccelerator. Я не стал ничего удалять из системы, просто закомментировал в php.ini строки относящиеся к eaccelerator, аналогично в /etc/php5/conf.d/memcache.ini также все закомментировал. Наверное это неправильно, кто знает как совсем удалить отпишитесь в каментах.

Теперь собственно установка xcache:

apt-get install php5-xcache


Установили, теперь настраиваем:
nano /etc/php5/apache2/conf.d/xcache.ini


Редактируем секцию админки:
Читать дальше →

Плагин «Картинка-анонс (аватар) для топика»

Своими усилиями реализовал плагин по мотивам хака: livestreet.ru/blog/tips_and_tricks/747.html

Плагин даёт возможность добавлять к топику картинку-анонс (аватарку) с возможностью её последующего вывода практически в любом месте шаблона (назначений может быть множество: от украшательства списка топиков, до организации слайдера с последними топиками).
Читать дальше →

Alpha канал при закруглении углов

Вот тут как-то писалось про закруглённые углы, но были и есть проблемы с альфой, белый цвет вместо прозрачности.
Рыл не долго, строка: 481, в файле: engine\lib\external\LiveImage\Image.php


$trans = imagecolorallocatealpha($corner, 255, 255, 255, 0);


нужно просто заменить на:


$trans = imagecolorallocatealpha($corner, 255, 255, 255, 127);


Вроде всё, у меня при любых закруглениях там где надо стоит альфа канал.

Удалить блоки после плагина lsblocks

Приветствую всех!

Господа, установил на 0.4.2 плагин Дополнительные блоки, понял, что оно мне не надо, удалил плагин, а кастомные блоки остались! И не могу их никак удалить, ибо не знаю, где они «засели». В шаблонах нет, в плагинах папку вообще снёс. И кстати, какой модуль отвечает за вывод блоков?