Могу предложить еще такой вариант...
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 и разместить на ней компонент "Новость детально".
Вроде ничего не упустил. Будут вопросы по данному коду, пишите, попробую ответить.
_______________________
|Все в мире относительно...|
^^^^^^^^^^^^^^^^^^^
|Все в мире относительно...|
^^^^^^^^^^^^^^^^^^^