Могу предложить еще такой вариант...
1.Для начала нужно открыть сессию в самом начале страницы, где будет расположен Компонент "Календарь".
2.Затем ставим на страницу сам календарь
3.Копируем в шаблон сайта шаблон вставленного календаря и переходим на страницу редактирования кода "Календаря".
Тут я заменил весь стандартный код на следующий:
Вот в этой части кода важно зарегистрировать переменную сессии (у меня это $_SESSION['MONTH']) и присвоить ей текущий массив дней недели текущего месяца:
Все, календарь в виде ссылок готов. Теперь нужно выводить наши новости по выбранной дате. Для этого переходим к шагу 4.
4.Создаем страницу, для вывода заголовков новостей (У меня она называется ArhivNews.php).
5.Не нужно ставить на эту страницу никаких компонентов, а просто пишим на ней PHP-код следующего содержания:
Все, теперь на этой странице будут выведены ссылки новостей.
Для того чтобы просматривать эти новости, достаточно создать страницу news_detail.php и разместить на ней компонент "Новость детально".
Вроде ничего не упустил. Будут вопросы по данному коду, пишите, попробую ответить.
1.Для начала нужно открыть сессию в самом начале страницы, где будет расположен Компонент "Календарь".
Код |
---|
<?session_start();?> |
2.Затем ставим на страницу сам календарь
Код |
---|
<p><?$APPLICATION->IncludeComponent( "bitrix:news.calendar", "ArhivNews", Array( "IBLOCK_TYPE" => "news", "IBLOCK_ID" => "20", "MONTH_VAR_NAME" => "month", "YEAR_VAR_NAME" => "year", "WEEK_START" => "1", "SHOW_YEAR" => "N", "SHOW_TIME" => "N", "TITLE_LEN" => "0", "SHOW_CURRENT_DATE" => "Y", "SHOW_MONTH_LIST" => "N", "NEWS_COUNT" => "0", "DETAIL_URL" => "/Main/archives/news_detail.php?ID=#ELEMENT_ID#", "CACHE_TYPE" => "A", "CACHE_TIME" => "3600", "DATE_FIELD" => "DATE_CREATE", "TYPE" => "EVENTS", "SET_TITLE" => "N" ) );?></p> |
3.Копируем в шаблон сайта шаблон вставленного календаря и переходим на страницу редактирования кода "Календаря".
Тут я заменил весь стандартный код на следующий:
Код |
---|
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td class="NewsCalMonthNav" align="left"> <?if($arResult["PREV_MONTH_URL"]):?> <a href="<?=$arResult["PREV_MONTH_URL"]?>" title="<?=GetMessage("IBL_NEWS_CAL_M_".$arResult["PREV_MONTH"])?>"><?=GetMessage("IBL_NEWS_CAL_PR_M")?></a> <?endif?> <?if($arResult["PREV_MONTH_URL"] && $arResult["NEXT_MONTH_URL"] && !$arParams["SHOW_MONTH_LIST"]):?> | <?endif?> <?if($arParams["SHOW_MONTH_LIST"]):?> <select onChange="b_result()" name="MONTH_SELECT" id="month_sel"> <?for($i=1;$i<=12;$i++):?> <option value="<?=htmlspecialchars($APPLICATION->GetCurPageParam($arParams["MONTH_VAR_NAME"]."=".$i."&".$arParams["YEAR_VAR_NAME"]."=".$arResult["currentYear"], Array($arParams["MONTH_VAR_NAME"], $arParams["YEAR_VAR_NAME"])))?>" <?if($arResult["currentMonth"] == $i) echo "selected";?>><?=GetMessage("IBL_NEWS_CAL_M_".$i)?></option> <?endfor?> </select> <script language="JavaScript" type="text/javascript"> <!-- function b_result() { var idx=document.getElementById("month_sel").selectedIndex; window.document.location.href=document.getElementById("month_sel").options[idx].value; } --> </script> <?endif?> <?if($arResult["NEXT_MONTH_URL"]):?> <a href="<?=$arResult["NEXT_MONTH_URL"]?>" title="<?=GetMessage("IBL_NEWS_CAL_M_".$arResult["NEXT_MONTH"])?>"><?=GetMessage("IBL_NEWS_CAL_N_M")?></a> <?endif?> </td> <?if($arParams["SHOW_YEAR"]):?> <td class="NewsCalMonthNav" align="right"> <?if($arResult["PREV_YEAR_URL"]):?> <a href="<?=$arResult["PREV_YEAR_URL"]?>" title="<?=$arResult["PREV_YEAR"]?>"><?=GetMessage("IBL_NEWS_CAL_PR_Y")?></a> <?endif?> <?if($arResult["PREV_YEAR_URL"] && $arResult["NEXT_YEAR_URL"]):?> | <?endif?> <?if($arResult["NEXT_YEAR_URL"]):?> <a href="<?=$arResult["NEXT_YEAR_URL"]?>" title="<?=$arResult["NEXT_YEAR"]?>"><?GetMessage("IBL_NEWS_CAL_N_Y")?></a> <?endif?> </td> <?endif?> </tr> </table> <br /> <table border="0" cellpadding="2" cellspacing="0"> <?if($arParams["SHOW_CURRENT_DATE"]):?> <tbody><tr><th colspan="7" style="color: rgb(255, 255, 255);" bgcolor="#064964"><?=GetMessage("IBL_NEWS_CAL_M_".$arResult["currentMonth"]).' '.$arResult["currentYear"]?></th></tr> <?endif?> <tr> <?/*Дни недели*/?> <?foreach($arResult["WEEK_DAYS"] as $WDay):?> <td class='NewsCalHeader'><?=$WDay["SHORT"]?></td> <?endforeach?> <?/*/Дни недели/*/?> </tr> |
Вот в этой части кода важно зарегистрировать переменную сессии (у меня это $_SESSION['MONTH']) и присвоить ей текущий массив дней недели текущего месяца:
Код |
---|
<?foreach($arResult["MONTH"] as $arWeek):?> <tr><?$_SESSION['MONTH']=$arResult["MONTH"]?> <?/*Дни недели*/?> <?foreach($arWeek as $arDay):?> <td align="left" valign="top" class='<?=$arDay["td_class"]?>' width="14%"> <?if($arDay["events"]):?> <span class='<?=$arDay["day_class"]?>'><a class='link-red-ul' href="ArhivNews.php?todayis=<?=$arDay["day"]?>"><b><?=$arDay["day"]?></b></a></span> <?else:?> <span class='<?=$arDay["day_class"]?>'><?=$arDay["day"]?></span> <?endif?> <?/*/Дни недели/*/?> </td> <?endforeach?> </tr > <?endforeach?> </table> |
Все, календарь в виде ссылок готов. Теперь нужно выводить наши новости по выбранной дате. Для этого переходим к шагу 4.
4.Создаем страницу, для вывода заголовков новостей (У меня она называется ArhivNews.php).
5.Не нужно ставить на эту страницу никаких компонентов, а просто пишим на ней PHP-код следующего содержания:
Код |
---|
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); $APPLICATION->SetTitle("Архив новостей"); ?> <?foreach($_SESSION['MONTH'] as $arWeek):?> <?foreach($arWeek as $arDay):?> <?if($arDay["day"]==$_GET['todayis']):?> <?foreach($arDay["events"] as $arEvent):?> <div class="NewsCalNews" style="padding-top:5px;"><?=$arEvent["time"]?><a href='<?=$arEvent["url"]?>' title="<?=$arEvent["preview"]?>"><?=$arEvent["title"]?></a></div> <?endforeach?> <?endif?> <?endforeach?> <?endforeach?> <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?> |
Все, теперь на этой странице будут выведены ссылки новостей.
Для того чтобы просматривать эти новости, достаточно создать страницу news_detail.php и разместить на ней компонент "Новость детально".
Вроде ничего не упустил. Будут вопросы по данному коду, пишите, попробую ответить.
_______________________
|Все в мире относительно...|
^^^^^^^^^^^^^^^^^^^
|Все в мире относительно...|
^^^^^^^^^^^^^^^^^^^