Функции:
function printBlock() {
PrintContent = $('#PrintContent').html();
$('body').addClass('printSelected');
$('body').append('<div class="printSelection">'+PrintContent+'</div>');
window.print();
window.setTimeout(pageCleaner,0);
return false;
}
function pageCleaner(){
$('body').removeClass('printSelected');
$('.printSelection').remove();
}
Если бы ссылка на печать была внутри блока то:
function printBlock(printLink) {
PrintContent = $(printLink).parents('#PrintContent').html();
...
Ссылка:
<a href="" onclick="printBlock();">Распечатать</a>
Стили:
.printSelected div{display:none}
.printSelected div.printSelection{display:block;}
.printSelected div.printSelection div{display:block;}
По статье:http://htmltricks.ru/archives/77
В шаблоне перед foreach где рисуем новости.
Рисуем форму (даты необходимо будет указывать в формате день-месяц-год
(xx-xx-xxxx), разделительный знак любой, нам важен порядковый номер цифр), для удобства можно использовать что-то вроде datePicker
, но это уже совсем другая история)):
<form method="get" id="set_period">
<label for="date1">С</label>
<input type="text" name="date1" id="date1" value="<?=$_GET['date1']?>" />
–
<label for="date2">ПО</label>
<input type="text" name="date2" id="date2" value="<?=$_GET['date2']?>" />
<a href="#" onclick="$('#set_period').submit();">Показать</a>
</form>
Формируем массив дат, в нужном нам формате, который позволяет сделать выборку по принципу «больше или равно — меньше или равно», т.е. в формате (год, месяц, день) без разделительных знаков.
<?$news_dates=array();
function ParceResultDates($date) {
$df_day=substr($date,0,2);
$df_mon=substr($date,3,2);
$df_ye=substr($date,6,4);
$d_format=$df_ye.$df_mon.$df_day;
return $d_format;
}
foreach($arResult["ITEMS"]as$arDates):
$news_dates[]=ParceResultDates($arDates['DISPLAY_ACTIVE_FROM']);
endforeach;?>
Далее в foreach где выводим новости:
<?
//if(($_GET['date1']!='')&&($_GET['date2']!='')):
//$date_from=ParceResultDates($_GET['date1']);
//$date_to=ParceResultDates($_GET['date2']);
//else:
//$date_from=ParceResultDates($arItem['DISPLAY_ACTIVE_FROM']);
//$date_to=ParceResultDates($arItem['DISPLAY_ACTIVE_FROM']);
//endif;
$date_from=($_GET['date1']!='')?ParceResultDates($_GET['date1']):ParceResultDates($arItem['DISPLAY_ACTIVE_FROM']);
$date_to=($_GET['date2']!='')?ParceResultDates($_GET['date2']):ParceResultDates($arItem['DISPLAY_ACTIVE_FROM']);
$current_active_from=ParceResultDates($arItem['DISPLAY_ACTIVE_FROM']);
if (($current_active_from>=$date_from)&&($current_active_from<=$date_to)):
?>
<!--Тут новости-->
<?endif;?>
Закоментрованная область — это если было бы необходимо указать только обе даты, иначе выводим все новости. Ниже 2 строки для того чтобы можно было указывать только начальную и/или конечную даты
а я уже хотел придумывать как перевернуть)
Суть такова: нужна сортировка элементов IBLOCK по их разделам. В примере сортировка статей по рубрикам.
В шаблоне перед списком элементов инфоблока добавляем форму:
<?
echo'<form method="get" id="s_change">';
echo'<select name="s_id" onchange="$(\'#s_change\').submit();">';
$options_array=array();
foreach($arResult["ITEMS"] as $array_section_id):
if(!in_array($array_section_id["IBLOCK_SECTION_ID"],$options_array)):
$options_array[]=$array_section_id["IBLOCK_SECTION_ID"];
endif;
endforeach;
foreach($options_array as $option_id):
$option_get_name=CIBlockSection::GetByID($option_id);
if($options_names_array=$option_get_name->GetNext()):
$option_name=$options_names_array['NAME'];
endif;
if($_GET['s_id']==$option_id):
$if_option_selected=' selected="selected"';
else:
$if_option_selected='';
endif;
echo'<option value="'.$option_id.'"'.$if_option_selected.'>'.$option_name.'</option>';
endforeach;
if(($_GET['s_id']=='all')||($_GET['s_id']==null)):
$if_print_all_selected=' selected="selected"';
else:
$if_print_all_selected='';
endif;
echo'<option value="all"'.$if_print_all_selected.'>Все рубрики</option>';
echo'</select>';
echo'</form>';
?>
Внутри foreach, в котором выводим сами статьи:
<?if(($_GET['s_id']!=null)&&($_GET['s_id']!='all')){
$FL=$_GET['s_id'];
}
else {
$FL=$arItem["IBLOCK_SECTION_ID"];
}
if($arItem["IBLOCK_SECTION_ID"]==$FL) {?>
<!--рисуем элемент-->
<?}?>
Что по-правильному называется «Вставка включаемой области».
В нужном нам месте пишем как-то так:
<?$APPLICATION->IncludeComponent("bitrix:main.include","",Array(
"AREA_FILE_SHOW" => "sect",
"AREA_FILE_SUFFIX" => "inc",
"AREA_FILE_RECURSIVE" => "Y",
"EDIT_TEMPLATE" => "standard.php"
)
);?>
после чего в режиме редактирования появится кнопка «Редактировать включаемую область раздела»
жмем на нее и редактируем)) поле первого сохранения все наверное поплывет, но мы не расстраиваемся и удаляем из созданного в корне файла sect_inc.php
:
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("");
?>
и
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
http://dev.1c-bitrix.ru/user_help/settings/settings/components_2/include_areas/main_include.php
Основной смысл чтобы слова не обрезались)
<?php
//добавляем к тексту пробел в конце, т.к. по пробелам будет делиться текст, без этого последнее слово будет обрезаться
$desc=$sample_text." ";
//2 - на сколько делим, 0.02 - сглаживание (%)
$l=intval(strlen($desc)/2+strlen($desc)*0.02);
//убираем переводы строк
$desc=ereg_replace("[\r\n]"," ",$desc);
//делим текст
preg_match_all("/(.{1,$l})[ \n\r\t]+/",$desc,$descArray);
?>
<table><tr>
<td><?=$descArray[1][0]?></td>
<td><?=$descArray[1][1]?></td>
</tr></table>
При проверке на валидность кода с Doctype: XHTML 1.0 Transitional
<marquee scrollamount='3'>Текст</marquee>
получаем следующую ошибку:
element "marquee" undefined
Решение:
<script type='text/javascript'>
<!--
document.write("<marquee scrollamount='3'>Текст</marquee>");
-->
</script>