|
|
12.06.2011, 22:13
|
|
Гость
Гость
|
Добрый вечер!
Работаю на системе версии 4.1 Corporate
Вопрос такой...
Возможно ли сделать вывод анонсов статей в виде календаря?
Но нужно вывести новости начиная с сегодняшнего дня и заканчивая последней новостью (какая бы дата у нее не была)... И вывести на одной странице все месяца в столбик...
Конкретика:
У нас сайт на котором представлена афиша концертов. У нас есть два зала в которых ежедневно проходят концерты, т.е. один концерт в большом зале и один в малом зале. Данную афишу нужно реализовать так чтобы оба зала отображались на одной странице, и числа этих сайтов совпадали между собой. Т.е. на странице в столбик сверху вниз концерты двух залов, слева большой зал справа малый. Например 2 июня в большом концерт и в малом концерт - эти концерты должны стоять друг напротив друга... если например 2 июня в большом концерт есть а в малом нет, то дни всервно стоят друг напротив друга но в малом ничего нет (пусто)...
Пытаемся реализовать данную идею с помощью встроенного модуля "Календарь"...
Если есть способ вывести все это другими средствами - мы будем непротив...
У нас пока не получается вывести все месяцы на одной странице и отключить отображение прошедших дней. Если можно расскажите как это сделать?
И еще вопрос... Раньше сайт поддерживал другой человек, он его и создавал... В общем сейчас я работаю на лицензионной версии системы, но не могу написать в тех.поддержку, т.к. нет соответствующих данных (т.к. эти данные ушли вместе с тем кто работал до меня)... Возможно ли каким-либо образом восстановить доступ в тех.поддержку для данной лицензии?
С уважением, Александр!
|
|
|
13.06.2011, 04:30
|
|
Asiat
Аниматика
Зарегистрирован: 2005-12-12
Сообщений: 576
|
По восстановлению доступа - это лучше вам напрямую в поддержку и написать, не на форуме. Только настраивать ваши анонсы вряд ли входит в их обязанности, так что особо надеяться не стоит.
Что касается реализации задачи, может быть Календарь чем-то и поможет, но ИМХО проще поднастроить новостной компонент. Конкретная реализация может зависеть от того, что в итоге вы хотите получить на страничке, я себе в общих чертах представляю примерно так:
1) В компоненте Новости создать доп. поле для привязки новости к конкретному залу (в списке объектов можно будет, например, назначать float:left/right по нему).
2) Отключение прошедших дней - с помощью системных настроек компонента. Например:
$query_where = "a.Date >= CURRENT_DATE";
(Кстати, еще удачнее - сделать раздел с архивом, куда и будут сваливаться все прошедшие анонсы)
3) Настроить группировку по датам. Расписывать не буду, кажется, реализация была в стандартном компоненте Новости.
|
|
|
13.06.2011, 16:27
|
|
Гость
Гость
|
Спасибо за совет! =)
Будем пробовать вашим методом! =)
Только если можно про группировку расскажите... Не можем найти ничего...
|
|
|
13.06.2011, 18:30
|
|
Asiat
Аниматика
Зарегистрирован: 2005-12-12
Сообщений: 576
|
Ну, вот для примера кусочек кода в список объектов, который по идее должен выводить заголовок для группы новостей в конкретном месяце. Доработайте, как вам надо.
".opt( $groupHeader=( $curDep == $f_Date_month ? NULL : $curDep=$f_Date_month) , "<span class='news_group_header'>".$groupHeader.".$f_Date_year</span>" )."
Аналогично можно для конкретной даты делать, чтоб не повторялась.
|
|
|
18.06.2011, 20:44
|
|
Александр
Зарегистрирован: 2011-06-15
Сообщений: 4
|
В общем сделали все так как Вы советовали... Все работает, все группируется как надо, но все-таки есть одно НО... =)
группируются числа 20 и 20, 22 и 22 и тд... Но если например в 1-ом зале числа идут не подряд а через одно (20, 22, 24), то числа второго зала цепляются к ним так 20 и 21, 22 и 23 и тд... Нам же нужно чтобы разные числа не группировались друг с другом а стояли отдельно... Сейчас попробую изобразить визуально...
Нужно ТАК:
20 - 20
21 - 21
22 - .....
23 - 23
..... - 24
25 - 25
Возможно как-нибудь такое осуществить?
Еще раз спасибо! =)
|
|
|
19.06.2011, 08:33
|
|
Asiat
Аниматика
Зарегистрирован: 2005-12-12
Сообщений: 576
|
Ну, так-то не совсем понял, что имеется сейчас.
Надо уже тогда подробнее: код полей компонента в студию (список объектов и сист. настройки), ссылку на раздел.
Единственная мысль, навскидку: у вас сортировка в компоненте выставлена по дате?
А то термин-то "группировка" был не особо удачный, в реале ничего не группируется, просто заголовок с датой показывается только один раз.
|
|
|
19.06.2011, 10:27
|
|
Александр
Зарегистрирован: 2011-06-15
Сообщений: 4
|
сортировка стоит по дате...
вот ссылка на раздел http://almamaterclub.ru/afishaNew/
Код списка
Код:(tr)(td)
";
if ($f_TipZala==1) {echo "$f_AdminButtons<div class='big-hall'><div class='nc_row' style='position:relative; height:200px;'>
".opt( $cc_settings[Group]=='date'&& $groupHeader=( $curDep == $f_Date_day ? NULL : $curDep=$f_Date_day ) , "<h2 class='nc_group'>$groupHeader.$f_Date_month.$f_Date_year</h2>" )
.opt( $cc_settings[Group]=='month'&& $groupHeader=( $curDep == $f_Date_month ? NULL : $curDep=$f_Date_month ) , "<h2 class='nc_group'>$groupHeader.$f_Date_year</h2>" )."
<h3><font class='font3'>".opt( $cc_settings[DateStyle]!='time' , "<span class='nc_date'>$f_Date_day.$f_Date_month</span>" )."</font><br>
".opt_case($cc_settings[FullLink]=='title' && ($f_Name || $f_ExtLink) , "<a href='".opt_case($f_Name,$fullLink,$f_ExtLink)."'>$f_Name</a>" , "$f_Name")."</h3>
".opt( $f_FotoAfisha , "<a href='$fullLink'><img class='nc_row_img' src='$f_FotoAfisha' alt='$f_FotoAfisha' width='150px' /></a>" )."
".opt( $f_FotoCalendar , "<a href='$fullLink'><img class='nc_row_img' src='$f_FotoCalendar' alt='$f_FotoCalendar' width='150px' /></a>" )."
".opt( $cc_settings['ShowComments'] && $cc_settings['CommentsSUB'] && $cc_settings['CommentsCC'] , "<div class='nc_comments_count'><span>Комментарии: </span>".(int)s_list_class($cc_settings[CommentsSUB], $cc_settings[CommentsCC], "&scID=$cc&objID=$f_RowID&CountComments=1", true)."</div>" )."
".opt( $cc_settings[DateStyle]!='disable' , "<div class='nc_datetime'>".
opt( $cc_settings[DateStyle]!='date' , "<span class='nc_time'>Начало концерта в $f_Date_hours:$f_Date_minutes <br></span>" ).
opt( $cc_settings[FullLink]=='date' && ($f_Text || $f_ExtLink) , "<a href='".opt_case($f_Text,$fullLink,$f_ExtLink)."'>").
opt( $cc_settings[FullLink]=='date' && ($f_Text || $f_ExtLink) , "</a>" )."</div>")
.opt($cc_settings[FullLink]=='more' && ($f_Text || $f_ExtLink) , "<span class='nc_more'><a href='".opt_case($f_Text,$fullLink,$f_ExtLink)."'>подробнее...</a></span>")."
<a href='$fullLink'>подробнее...</a>
<div style='clear:both'></div>
</div></div>";
}
"
(/td)(td)
";
if ($f_TipZala==2) {echo "$f_AdminButtons<div class='big-hall'><div class='nc_row' style='position:relative; height:200px;'>
".opt( $cc_settings[Group]=='date'&& $groupHeader=( $curDep == $f_Date_day ? NULL : $curDep=$f_Date_day ) , "<h2 class='nc_group'>$groupHeader.$f_Date_month.$f_Date_year</h2>" )
.opt( $cc_settings[Group]=='month'&& $groupHeader=( $curDep == $f_Date_month ? NULL : $curDep=$f_Date_month ) , "<h2 class='nc_group'>$groupHeader.$f_Date_year</h2>" )."
<h3><font class='font3'>".opt( $cc_settings[DateStyle]!='time' , "<span class='nc_date'>$f_Date_day.$f_Date_month</span>" )."</font><br>
".opt_case($cc_settings[FullLink]=='title' && ($f_Name || $f_ExtLink) , "<a href='".opt_case($f_Name,$fullLink,$f_ExtLink)."'>$f_Name</a>" , "$f_Name")."</h3>
".opt( $f_FotoAfisha , "<a href='$fullLink'><img class='nc_row_img' src='$f_FotoAfisha' alt='$f_FotoAfisha' width='150px' /></a>" )."
".opt( $f_FotoCalendar , "<a href='$fullLink'><img class='nc_row_img' src='$f_FotoCalendar' alt='$f_FotoCalendar' width='150px' /></a>" )."
".opt( $cc_settings['ShowComments'] && $cc_settings['CommentsSUB'] && $cc_settings['CommentsCC'] , "<div class='nc_comments_count'><span>Комментарии: </span>".(int)s_list_class($cc_settings[CommentsSUB], $cc_settings[CommentsCC], "&scID=$cc&objID=$f_RowID&CountComments=1", true)."</div>" )."
".opt( $cc_settings[DateStyle]!='disable' , "<div class='nc_datetime'>".
opt( $cc_settings[DateStyle]!='date' , "<span class='nc_time'>Начало концерта в $f_Date_hours:$f_Date_minutes <br></span>" ).
opt( $cc_settings[FullLink]=='date' && ($f_Text || $f_ExtLink) , "<a href='".opt_case($f_Text,$fullLink,$f_ExtLink)."'>").
opt( $cc_settings[FullLink]=='date' && ($f_Text || $f_ExtLink) , "</a>" )."</div>")
.opt($cc_settings[FullLink]=='more' && ($f_Text || $f_ExtLink) , "<span class='nc_more'><a href='".opt_case($f_Text,$fullLink,$f_ExtLink)."'>подробнее...</a></span>")."
<a href='$fullLink'>подробнее...</a>
<div style='clear:both'></div>
</div></div>";
}
"
(/td)(/tr)
Код системных настроек
Код:global $shop;
if(!isset($classID)){
$classID = $cc_env['Class_ID'];
}
// если у дочернего объекта не указана цена, берется цена родительского объекта
// для этого придется сделать JOIN
$query_join = " LEFT JOIN Message$classID as parent ON (a.Parent_Message_ID != 0 AND a.Parent_Message_ID=parent.Message_ID)";
$query_select = "IFNULL(a.$shop->PriceColumn, parent.$shop->PriceColumn) as Netshop_Price_Column,
IFNULL(a.$shop->CurrencyColumn, parent.$shop->CurrencyColumn) as Netshop_Currency_Column";
$result_vars = '$Price, $Currency';
// Получаем информацию по бардам и кладем ее в массив
$bards = array();
$res = mysql_query("SELECT `Message_ID`, `zagolovok`, `textAfisha`, `link` FROM `Message96` WHERE `Checked`='1'");
while ($row=mysql_fetch_assoc($res))
{
$bards[$row[Message_ID]] = array_merge( $row,
array("zagolovok"=>"$row[zagolovok]",
"textAfisha"=>"$row[textAfisha]",
"link"=>"$row[link]",
));
}
list( $year, $month, $day ) = explode('-', $GLOBALS[date]);
if(!$year) $year = date('Y');
if(!$month) $month= date('m');
if(!$day) $day = date('d');
if( !function_exists('imgNavigation') ){
function imgNavigation($prevText='Предыдущий концерт',$nextText='Следующий концерт',$deliver=' | '){
global $cc_settings;global $classID;global $cc;global $SortBy;global $f_RowID;global $current_sub;global $isNaked;
$out = NULL;
$SQLres = mysql_query("SELECT Message_ID FROM Message109 WHERE Sub_Class_ID=".$cc." AND Parent_Message_ID = 0 ORDER BY Date DESC");
if($SQLres) {
while( $SQLresult = mysql_fetch_array($SQLres) ) {
$IDs_array[] = $SQLresult['Message_ID'];
}
$i = 0;while( $i<count($IDs_array) ) {
if($IDs_array[$i]==$f_RowID) {
$out .= "<div class='nc_prev_next'>";
if( $i>0 ) $out .= "<span class='nc_prev_link'><a href='".$SUB_FOLDER.$current_sub[Hidden_URL].$current_sub[EnglishName]."_".$IDs_array[$i-1].".html'>$prevText</a></span>";
if( $i>0 && ($i+1)<count($IDs_array) ) $out .= $deliver;
if( ($i+1)<count($IDs_array) ) $out .= "<span class='nc_next_link'><a href='".$SUB_FOLDER.$current_sub[Hidden_URL].$current_sub[EnglishName]."_".$IDs_array[$i+1].".html'>$nextText</a></span>";
$out .= '</div>';
break;
}
$i++;
}
}
return $out;
}
}
насчет группировки - нам именно она нужна =)
может тогда лучше сделать календарем все?
|
|
|
19.06.2011, 20:18
|
|
Asiat
Аниматика
Зарегистрирован: 2005-12-12
Сообщений: 576
|
Это капец. Без пузыря ни за что не полезу.
Короче, вот мой пример, упрощенный. Тестовый компонент из двух полей - дата и тип.
Работающий пример здесь.
ПРЕФИКС (вынес туда стили, хотя вообще не верстальщик... не претендую)
----------------
Код:$f_AdminCommon
<style type='text/css'>
ul.anons_list {margin:0; padding:0; list-style:none;}
.anons_list li.date {clear:both; margin:10px 0; padding:5px 10px; background:#eee; font-size:14px; font-weight:bold;}
.anons_list li.anons {width:40%; padding:5px; background:#f0f0f0; border:1px dotted #ddd;}
.anons_list li.left {margin:5px 10% 5px 5px;}
.anons_list li.right {float:right; margin:5px 5px 5px 10%;}
</style>
<ul class='anons_list'>
СПИСОК
-------------
Код:".opt( $groupHeader=( $curDep == $f_Date_day ? NULL : $curDep=$f_Date_day) , "<li class='date'>".$groupHeader.".$f_Date_month.$f_Date_year</li>" )."
<li class='anons ".($f_Type==1 ? "left" : "right")."'>#$f_RowID / $f_Date - $f_AnonsDay / Type $f_Type</li>
НАСТРОЙКИ
-------------
Код:$query_select = "DATE_FORMAT(a.Date,'%Y%d%m') AS AnonsDay";
$result_vars = '\$f_AnonsDay';
СОРТИРОВКА (немного изменил, а то не нравилось, как блоки встают)
-------------
AnonsDay ASC,Type DESC, Date ASC
Отпишитесь, оно ли это, а то надо будет убрать с сайта.
|
|
|
19.06.2011, 21:01
|
|
Александр
Зарегистрирован: 2011-06-15
Сообщений: 4
|
Спасибо! По примеру внешне - ОНО! =)
Можете убирать с сайта! =)
Сейчас все попробуем =)
По результату отпишусь.
|
|
|
19.06.2011, 21:35
|
|
Александр
Зарегистрирован: 2011-06-15
Сообщений: 4
|
Все супер!
Единственное в этом коде ошибка - перед переменной $f_AnonsDay слеш не нужен =)
Код:$query_select = "DATE_FORMAT(a.Date,'%Y%d%m') AS AnonsDay";
$result_vars = '\$f_AnonsDay';
Извините за большое количество глупых вопросов =)
Просто всегда работал на XXXXXXX CMS, а тут вот NetCAT =)
В общем начинаю =)
Пузырь могу выслать почтой =)))
|