UMIhelp

Разработка дополнительного функционала => Custom макросы => Тема начата: serhio от 07 Августа 2013, 22:18:29

Название: Вывести список месяцев в которых есть новости
Отправлено: serhio от 07 Августа 2013, 22:18:29
Добрый день, нашел вот такой скрипт
		  public function getyear($id)
{
$select_year=getRequest('year');
$hierarchy=umiHierarchy::getInstance();
$childs=$hierarchy->getChilds($id);//получаем все новости ленты
$parent=$hierarchy->getElement($id);
$path=$parent->getAltName();//получаем путь к ленте новостей
$flag=true;
$result = '';
$year_array = array();
foreach ($childs as $key1 => $value1) //формируем массив всех годов, в которых есть новости
{
$element=$hierarchy->getElement($key1);
$date_news=$element->getValue('publish_time');
$temp=$date_news->getFormattedDate('Y');
$year_array[$temp]=1;
if ($flag)
{
$first=$temp;
$last=$temp;
$flag=false;
}
if ($first>$temp) $first=$temp;
if ($last<$temp) $last=$temp;
}
for($i = $last; $i >= $first; $i--) //формируем ссылки архива
{
if ($i==$select_year) $result.= "<span>$i</span>";
else if (!empty($year_array[$i])) $result.="<a href=\"/$path/?year=$i\">";
}
return $result;
}
Подскажите пожалуйста как дописать скрипт что бы ссылки выводились таким образом

март 2013
апрель 2013
январь 2013
ноябрь 2012

и т.д.

Заранее спасибо, а то всю голову уже сломал
Название: Re:Вывести список месяцев в которых есть новости
Отправлено: admin от 08 Августа 2013, 12:11:45
Если вы вместо сформированного списка годов, хотите получить список месяцев к каждому году. То это все делается на уровне php. То есть так же как сейчас php перебирает все новости
foreach ($childs as $key1 => $value1) ...

вы также оставляете эту часть меняя только внутренний блок, в котором помимо года начинаете вытягивать и собирать в какой-нибудь массив месяца. Дата каждой новости вы получаете благодаря строчке
$date_news=$element->getValue('publish_time');
, которая возвращает время в unix-timestamp формате

Единственное, что вам может понадобиться как знание umi/ Это то, как сформировать ссылку которая будет выводить новости за определенный год или месяц....
Если сейчас в вашем скрипте ссылка формируется с параметром ?year (<a href=\"/$path/?year=$i\">), который и указывает что вам нужны новости за опреденный год, то для вывода новостей за определенный год-месяц, вам надо использовать параметр month. То есть, ссылка для вывода новостей за март 2013 года будет выглядеть как (адрес_к_новостной_ленте?year=2013&month=3

у вас вопрос в том ключе как это сделать на php? или вам необходимы какие то
Название: Re:Вывести список месяцев в которых есть новости
Отправлено: serhio от 08 Августа 2013, 12:14:06
У меня вопрос как именно подправить этот скрипт что-бы он ещё и месяца дергал
Название: Re:Вывести список месяцев в которых есть новости
Отправлено: admin от 08 Августа 2013, 12:34:17
в написании php скрипта уже не помогу) это вопрос относиться полность к php, для этого есть много других ресурсов в сети