CMS Eleanor - Поиск
Полная версия этой страницы: Официальный форум Eleanor CMS » Формирование даты добавления новости
Официальный форум Eleanor CMS » Поддержка пользователей системы Eleanor CMS » Первые шаги
Страницы: 1, 2
Помогите пожалуйста, нужно чтобы дата {date} выводилась в модуле новостей в формате:
<strong class="date">ЧИСЛО</strong>  <strong class="month">ТРИ ПЕРВЫЕ БУКВЫ МЕСЯЦА</strong>


Заранее благодарен :)
Alexander
Первые три буквы месяца на каком языке?
Alexander, желательно на русском, но можно и на английском. :rolleyes:

П.С. когда я тут на форуме в профиле жму "Изменить личные данные" выходит ошибка.
Alexander
SkyNETxD, самый примитивный вариант, это в модуле в запросе найти ...,`date`,... и заменить на ...,UNIX_TIMESTAMP(`date`) `date`,...
Далее, после строки вроде

$arr=$Mainclass->Db->Fetch_assoc()


написать:
$arr['date']=date('n M',$arr['date']);

Вот список всех возможных параметров:
Цитата
* a - "am" или "pm"
* A - "AM" ил "PM"
* B - время Swatch Internet
* d - день (число) месяца, 2 цифры с ведущим нулём, если необходимо; т. е от "01" до "31"
* D - день недели, буквенный, 3 буквы; например, "Fri"
* F - месяц, буквенный, long; например, "January"
* g - час, 12-часовой формат без ведущих нулей; т.е. от "1" до "12"
* G - час, 24-часовой формат без ведущих нулей; т.е. от "0" до "23"
* h - час, 12-часовой формат; т.е. от "01" до "12"
* H - час, 24-часовой формат; т.е. от "00" до "23"
* i - минуты; т.е. от "00" до "59"
* I (заглавная i) - "1", если Daylight Savings Time, "0" - в противном случае.
* j - день (число) месяца без ведущих нулей; т.е. от "1" до "31"
* l ('L' в нижнем регистре) - день недели, буквенный, long; например, "Friday"
* L - boolean, указывающее, високосный ли год; т.е. "0" или "1"
* m - месяц; т.е. от "01" до "12"
* M - месяц, буквенный, 3 буквы; например, "Jan"
* n - месяц без ведущих нулей; т.е. "1" to "12"
* O - Разница с временем по Гринвичу, в часах; например, "+0200"
* r - RFC 822 формат даты; например, "Thu, 21 Dec 2000 16:01:07 +0200" (введён в PHP 4.0.4)
* s - секунды; т.е. от "00" до "59"
* S - простой английский суффикс для дня (числа) месяца, 2 символа; т.е. "st", "nd", "rd" или "th"
* t - количество дней в данном месяце; т.е. от "28" до "31"
* T - установка Timezone/Часовой пояс на данной машине; например, "EST" или "MDT"
* U - секунды эпохи Unix Epoch (начиная с January 1 1970 00:00:00 GMT)
* w - день недели, числовой, т.е. от "0" (Sunday) до "6" (Saturday)
* W - ISO-8601 week number of year, weeks starting on Monday (added in PHP 4.1.0)
* Y - год, 4 цифры; например, "1999"
* y - год, 2 цифры; например, "99"
* z - день года; т.е. от "0" до "365"
* Z - смещение часового пояса, в секундах (т.е. от "-43200" до "43200"). Смещение часовых поясов к западу от UTC всегда отрицательное, а для поясов в востоку от UTC - всегда положительное.

ЗЫ. Личные данные - знаю. Потерпите пока без них. Все исправится в порядке очереди.
Сделал как вы сказали, после чего {date} пустая, в логах:
Notice: A non well formed numeric value encountered Line: 403 in file Z:\home\test1.ru\www\modules\news\user\index.php
 URL: /news/наши-новости/netlevel-надёжный-хостинг-для-eleanor-cms.html
 Date: 2010-06-08 21:47:32
 IP: 127.0.0.1

В 403-й строке как раз находиться:
$arr['date']=date('n M',$arr['date']);
Alexander
UNIX_TIMESTAMP точно добавили?
Alexander, да
$result=$Mainclass->Db->Query('SELECT `id`,`url`,`main_cat`,`title`,UNIX_TIMESTAMP(`date`) `date`,`text`,`author`,`author_id`,`show_detail`,`votes`,`total`,`reads`,`comments`,`allow_comm` FROM `f_news` INNER JOIN `f_news_l` USING(`id`) WHERE `language`IN(\'\',\''.$Mainclass->lang_name.'\') AND'.$date_sql.' `status`=1 AND (`groups`=\'\''.$ug.') ORDER BY `pinned` DESC, `date` DESC LIMIT '.$offset.', '.$limit,__file__,__line__);

Это 234 строка у меня.
Alexander
SkyNETxD, покажите, пожалуйста, весь участок кода от $arr=$Mainclass->Db->Fetch_assoc()
	$arr=$Mainclass->Db->Fetch_assoc();
	$arr['date']=date('n M',$arr['date']);
	if(false===$seppos=strpos($arr['text'],'[separator]') and !$arr['show_detail'])
		return ExitPage(false);
	if(!$Mainclass->Account->is_bot)
		$Mainclass->Db->Update('news',array('!reads'=>'`reads`+1'),'`id`='.$arr['id'].' LIMIT 1',__file__,__line__);
Alexander
SkyNETxD, зачем скидывать весь файл? А во-вторых я не нашел в Вашем коде ни одного UNIX_TIMESTAMP
Поправил, так оно у меня на порядок строк выше в query, 234 строка, а $arr['date']=date('n M',$arr['date']); это уже 403-я строка.
Alexander
Выведите содержимое $arr['date'] до $arr['date']=date('n M',$arr['date']);
Alexander, первый раз $arr['date'] встречается в 261 строке.
'date'		=>$Mainclass->lang['news']['published'].Strings::HumanDate(substr($arr['date'],0,-3),true,true),


вот тот участок:
		$result=$Mainclass->Db->Query('SELECT `id`,`url`,`main_cat`,`title`,UNIX_TIMESTAMP(`date`) `date`,`text`,`author`,`author_id`,`show_detail`,`votes`,`total`,`reads`,`comments`,`allow_comm` FROM `f_news` INNER JOIN `f_news_l` USING(`id`) WHERE `language`IN(\'\',\''.$Mainclass->lang_name.'\') AND'.$date_sql.' `status`=1 AND (`groups`=\'\''.$ug.') ORDER BY `pinned` DESC, `date` DESC LIMIT '.$offset.', '.$limit,__file__,__line__);
		if($Mainclass->vars['m_news_ncg'])
		{
			$general=false;
			$type='main';
		}
		while($arr=$Mainclass->Db->Fetch_assoc($result))
		{
			$sizes[$arr['id']]=array($arr['total'],$arr['votes']);
			$url=($Mainclass->vars['m_news_long_url'] ? $Mainclass->Categories_l->CategoryUrl($arr['main_cat'],'','',false) : '').$Mainclass->Url->ConstructUrl(array(array($arr['url'],'nid'=>$arr['id'])),!$Mainclass->vars['m_news_long_url']);
			$show_link=(false!==$seppos=strpos($arr['text'],'[separator]') or $arr['show_detail']);
			if($seppos!==false)
				$arr['text']=substr($arr['text'],0,$seppos);
			$ntitle=$show_link ? '<a href="'.$url.'">'.$arr['title'].'</a>' : $arr['title'];
			$more_info=$show_link ? '<a href="'.$url.'#more"><b>'.$Mainclass->lang['news']['detail'].'</b></a>' : '';
			$reads=$show_link ? sprintf($Mainclass->lang['news']['views'],$arr['reads']) : '';
			$whopost=$Mainclass->Login->UserLink($arr['author'],$arr['author_id']);
			if(!$show_link)
				$arr['allow_comm']=0;
			$content.=$Mainclass->Template->BaseTable($ntitle,Strings::ParseOwnBB($arr['text']),'',array(
																							'id'		=>$arr['id'],
																							'display'	=>'none',
																							'rating'	=>($general or !$Mainclass->vars['m_news_rating']) ? '' : '{rating_'.$arr['id'].'}',
																							'whopost'	=>$whopost===false ? '' : $Mainclass->lang['news']['published_by'].'<a href="'.$whopost.'">'.$arr['author'].'</a>',
																							'more'		=>$more_info,
																							'comments'	=>$arr['allow_comm']==0 ? '' : '<a href="'.$url.'#comments"><strong class="comments">'.$Mainclass->lang['news']['comments'].$arr['comments'].'</strong></a>',
																							'category'	=>$Mainclass->lang['news']['category'].(($c=$Mainclass->Categories_l->GetDump($arr['main_cat'])) ? '<a href="'.$Mainclass->Categories_l->CategoryUrl($arr['main_cat']).'" title="'.strip_tags($c['description']).'">'.$c['title'].'</a>' : '<i>'.$Mainclass->lang['main']['no'].'</i>'),
																							'date'		=>$Mainclass->lang['news']['published'].Strings::HumanDate(substr($arr['date'],0,-3),true,true),
																							'reads'		=>$reads,
																							'moder'		=>$general ? '' : DeleteEdit(array('delete'=>$arr['id']),array('edit'=>$arr['id'])),
																						),
																						$general ? 'main' : $type);
		}
		if(!$general)
		{
			if($Mainclass->vars['m_news_rating'])
			{
				if(!$Mainclass->vars['m_news_vote_general'])
					$Mainclass->Functions->PrepareVoting(array_keys($sizes));
				foreach($sizes as $k=>$v)
				{
					$steps=(!$Mainclass->vars['m_news_vote_general'] and $Mainclass->Functions->CanVoting($k)) ? $Mainclass->vars['m_news_rating_steps'] : -1*$Mainclass->vars['m_news_rating_steps'];
					$content=str_replace('{rating_'.$k.'}',$Mainclass->Functions->ShowRating($v[0],$v[1],$steps,array('id'=>$k)),$content);
				}
			}
			$content.=$pages ? $Mainclass->Template->OpenTable().$pages.$Mainclass->Template->CloseTable() : '';
		}
		else
			$Mainclass->Cache->Put('news_mainpage_'.$Mainclass->lang_name,$content,3600,false);
	}
	Head();
	echo $content;
}

function NewsCategory($cid,$curl_trace)
{global $Mainclass,$title,$jscripts,$head_addon;
	$cat_dump=$Mainclass->Categories_l->GetDump($cid,$curl_trace);
	if($cat_dump===false)
		ExitPage(false);
	$cats=$Mainclass->Categories_l->UserInterface($cat_dump);
	$title[]=$Mainclass->lang['news']['news'];
	$title[]=$cat_dump['title'];
	$Mainclass->SetModVal('description',$cat_dump['s_descr']);
	$Mainclass->SetModVal('keywords',Strings::MakeKeywords($cat_dump['description']));
	$jscripts[]='js/rating.js';
	$head_addon.=$Mainclass->Functions->RssLink(array('cid'=>$cat_dump['id']),sprintf($Mainclass->lang['news']['news_from'],$cat_dump['title']));
	if(include($Mainclass->root_path.$Mainclass->GetModVal('path').'/plugins.php'))
	{
		$Plug=new $class_name($Mainclass);
		$Mainclass->Blocks->AddModuleRules(array('cid'=>$cat_dump['id']),$Plug->GetSplinter());
		unset($Plug);
	}
	$content='';
	$sizes=array();
	$ug=$Mainclass->Account->GetUserGroups();
	sort($ug,SORT_NUMERIC);
	$ug=' OR `groups` LIKE \'%,'.implode(',%,',$ug).',%\'';
	$cnt=$Mainclass->Cache->Get('news_pages_cid_'.$cat_dump['id'],false);
	if($cnt===false)
	{
		$Mainclass->Db->Query('SELECT COUNT(`id`) FROM `f_news` WHERE (`main_cat`=\''.$cat_dump['id'].'\' OR `cats` LIKE \'%,'.$cat_dump['id'].',%\') AND `status`=1 AND (`groups`=\'\''.$ug.')',__file__,__line__);
		list($cnt)=$Mainclass->Db->Fetch_row();
		$Mainclass->Cache->Put('news_pages_cid_'.$cat_dump['id'],$cnt,360,false);
	}
	$pages=ceil($cnt/$Mainclass->vars['m_news_per_page']);
	$page=$pages - (isset($_GET['page']) ? (int)$_GET['page'] : $pages) + 1;
	if($page<=0)
		$page=1;
	$offset=0;
	$limit=$Mainclass->vars['m_news_per_page'];
	$newl=$cnt % $Mainclass->vars['m_news_per_page'];
	if($page==1)
	{
		if($newl)
			$limit=$newl;
	}
	else
		$offset-=$Mainclass->vars['m_news_per_page'] - $newl;
	$offset+=abs(($page-1)*$Mainclass->vars['m_news_per_page']);
	$url_cat=$Mainclass->Categories_l->CategoryUrl($cat_dump['id'],'','',false);
	$result=$Mainclass->Db->Query('SELECT `id`,`url`,`title`,UNIX_TIMESTAMP(`date`) `date`,`text`,`author`,`author_id`,`show_detail`,`total`,`votes`,`reads`,`comments`,`allow_comm` FROM `f_news` INNER JOIN `f_news_l` USING(`id`) WHERE `language`IN(\'\',\''.$Mainclass->lang_name.'\') AND (`main_cat`=\''.$cat_dump['id'].'\' OR `cats` LIKE \'%,'.$cat_dump['id'].',%\') AND `status`=1 AND (`groups`=\'\''.$ug.') ORDER BY `pinned` DESC, `date` DESC LIMIT '.$offset.', '.$limit,__file__,__line__);
	while($arr=$Mainclass->Db->Fetch_assoc($result))
	{
		$sizes[$arr['id']]=array($arr['total'],$arr['votes']);
		$url=($Mainclass->vars['m_news_long_url'] ? $url_cat : '').$Mainclass->Url->ConstructUrl(array(array($arr['url'],'nid'=>$arr['id'])),!$Mainclass->vars['m_news_long_url']);
		$show_link=(false!==$seppos=strpos($arr['text'],'[separator]') or $arr['show_detail']);
		if($seppos!==false)
			$arr['text']=substr($arr['text'],0,$seppos);
		$ntitle=$show_link ? '<a href="'.$url.'">'.$arr['title'].'</a>' : $arr['title'];
		$more_info=$show_link ? '<a href="'.$url.'#more"><b>'.$Mainclass->lang['news']['detail'].'</b></a>' : '';
		$reads=$show_link ? sprintf($Mainclass->lang['news']['views'],$arr['reads']) : '';
		$whopost=$Mainclass->Login->UserLink($arr['author'],$arr['author_id']);
		if(!$show_link)
			$arr['allow_comm']=0;
		$content.=$Mainclass->Template->BaseTable($ntitle,Strings::ParseOwnBB($arr['text']),'',array(
																						'id'		=>$arr['id'],
																						'display'	=>'none',
																						'rating'	=>$Mainclass->vars['m_news_rating'] ? '{rating_'.$arr['id'].'}' : '',
																						'whopost'	=>$whopost===false ? '' : $Mainclass->lang['news']['published_by'].'<a href="'.$whopost.'">'.$arr['author'].'</a>',
																						'more'		=>$more_info,
																						'comments'	=>$arr['allow_comm']==0 ? '' : '<a href="'.$url.'#comments">'.$Mainclass->lang['news']['comments'].$arr['comments'].'</a>',
																						'category'	=>$Mainclass->lang['news']['category'].$cat_dump['title'],
																						'date'		=>$Mainclass->lang['news']['published'].Strings::HumanDate(substr($arr['date'],0,-3),true,true),
																						'reads'		=>$reads,
																						'moder'		=>DeleteEdit(array('delete'=>$arr['id']),array('edit'=>$arr['id'])),
																					));
	}
	if($Mainclass->vars['m_news_rating'])
	{
		if(!$Mainclass->vars['m_news_vote_general'])
			$Mainclass->Functions->PrepareVoting(array_keys($sizes));
		foreach($sizes as $k=>$v)
		{
			$steps=(!$Mainclass->vars['m_news_vote_general'] and $Mainclass->Functions->CanVoting($k)) ? $Mainclass->vars['m_news_rating_steps'] : -1*$Mainclass->vars['m_news_rating_steps'];
			$content=str_replace('{rating_'.$k.'}',$Mainclass->Functions->ShowRating($v[0],$v[1],$steps,array('id'=>$k)),$content);
		}
	}
	$content=MenuNews().$Mainclass->Template->OpenTable().$cats.$Mainclass->Template->CloseTable().$content;
	$prefix=$Mainclass->Url->Prefix(false,false);
	if($Mainclass->Url->furl)
	{
		$Mainclass->Url->SetPrefix($url_cat);
		$Mainclass->Url->ending=$Mainclass->vars['m_news_category_ending'];
	}
	else
		$Mainclass->Url->SetPrefix(array('cid'=>$cat_dump['id']),true);
	$pages=Strings::Pages($cnt,$Mainclass->vars['m_news_per_page'],array(),false,-1);
	if($pages)
		$content.=$Mainclass->Template->OpenTable().$pages.$Mainclass->Template->CloseTable();
	$Mainclass->Url->SetPrefix($prefix);
	Head();
	echo $content;
}

function ShowNews($nid,$news)
{global $Mainclass,$title,$jscripts,$head_addon;
	if($nid)
		$where='`id`='.(int)$nid;
	elseif($news)
		$where='`url`=\''.$Mainclass->Db->EscapeString($news).'\'';
	else
		ExitPage(false);
	$ug=$Mainclass->Account->GetUserGroups();
	sort($ug,SORT_NUMERIC);
	$ug=' OR `groups` LIKE \'%,'.implode(',%,',$ug).',%\'';
	$Mainclass->Db->Query('SELECT `id`,`url`,`main_cat`,`title`,`date`,`text`,`author`,`author_id`,`show_detail`,`show_sokr`,`total`,`votes`, `reads`,`comments`,`allow_comm`,`s_descr`,`s_title`,`af` FROM `f_news` INNER JOIN `f_news_l` USING(`id`) WHERE `language`IN(\'\',\''.$Mainclass->lang_name.'\') AND '.$where.' AND `status`=1 AND (`groups`=\'\''.$ug.') LIMIT 1',__file__,__line__);
	if($Mainclass->Db->Num_rows()==0)
		return ExitPage(false);
	$arr=$Mainclass->Db->Fetch_assoc();
	$arr['date']=date('n M',$arr['date']);

Alexander
SkyNETxD, вот этот участок надо удалить.
Alexander, извиняюсь.. не очень понял, что необходимо удалять?
Alexander
Цитата (SkyNETxD @ 2021-09-18 23:30)
'date'        =>$Mainclass->lang['news']['published'].Strings::HumanDate(substr($arr['date'],0,-3),true,true),
Alexander, удалил, после чего начал выводится текстом {date}
Alexander
Хорошо. А теперь, вместо того, что удалили, напишите:

'date'        =>$Mainclass->lang['news']['published'].$arr['date'],
Alexander, выдало: 1276033855 в короткой новости, а в полной новости всё супер - 6 Jun.. странно..

И мне бы ещё их сделать вышеуказаным(в первом посте) форматом класов.
Alexander
SkyNETxD, ну правильно. нужно же в нескольких местах внести правки. Там таких мест 4-5.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.