В отсутствии в Новостях Версии для печати, да и скорее от необходимости скачивания Новости в формате Word предлагаю сделать данную функцию в модуле новостей.
Для этих целей была найдена бесплатная библиотека PHPRTF (http://www.phprtf.com/) .
При ее использовании вывод содержимого новости становится простым:
$rtf = new Rtf();
$sect = &$rtf->addSection();
$sect->writeText('Здесь текст новости', new Font(12));
$rtf->sendRtf('Название файла');
Теперь дело за малым настроить ее в работе с системой)
Скачиваем архив PHPRTF, кидаем папку rtf из архива в modules/news/ . Подключаем библиотеку. Создаем в файле news/user/index.php новую функцию CreateRtf():
function CreateRtf( по идее тут должны передаваться параметры от выбранной новости для печати)
{global $Mainclass;
# Подключение rtf файла
require_once($Mainclass->root_path.$Mainclass->GetModVal('path').'/rtf/rtf.php');
# Завершение подключения rtf
$rtf = new Rtf();
$sect = &$rtf->addSection();
$sect->writeText('здесь текст новости', new Font(12), new ParFormat('center'));
$rtf->sendRtf('название файла');
return $rtf;
}
Но вот как эту функцию правильно задействовать, я не знаю. Как передать ей переменные от выбранной новости?
Далее находим в news/user/index.php function NewsDoIt($task) строка 117 и ниже после
case 'tags':
Tags();
break;
добавляем
case 'rtf':
CreateRtf();
break;
Далее в функции вывода полной или краткой новости (кому как нравится, у меня в краткой) добавляем в конец переменных шаблона новую переменную rtffile с конструированием ссылки:
$content.=$Mainclass->Template->BaseTable($ntitle,$content,'',array(
'id' =>$arr['id'],
'display' =>'none',
'rating' =>($general or !$Mainclass->vars['m_news_rating']) ? '' : '{rating_'.$arr['id'].'}',
'whopost' =>$whop===false ? '' : $Mainclass->lang['news']['published_by'].'<a href="'.$whopost.'">'.$arr['author'].'</a>',
'more' =>$more_info,
'comments' =>$arr['allow_comm']==0 ? '' : '<a href="'.$url.'#comments">'.$Mainclass->lang['news']['comments'].$arr['comments'].'</a>',
'category' =>$Mainclass->lang['news']['category'].(($c=$Mainclass->Categories_l->GetDump($arr['main_cat'])) ? '<a href="'.$Mainclass->Categories_l->CategoryUrl($arr['main_cat']).'" title="'.strip_tags($c['description']).'">'.$c['title'].'</a>' : '<i>'.$Mainclass->lang['main']['no'].'</i>'),
'date' =>$Mainclass->lang['news']['published'].Strings::HumanDate($arr['date']),
'reads' =>$reads,
'moder' =>$general ? '' : DeleteEdit(array('DeleteNews'=>$arr['id']),array('EditNews'=>$arr['id'])),
'rtffile' =>'<a href="'.$Mainclass->Url->ConstructUrl(array(array('do'=>'Rtf'))).'">Скачать RTF</a>',
),
$general ? 'main' : '');
И в шаблоне Base-news.php (для краткой новости) вставляем новую переменную rtffile
Все. Как бы в таком варианте работает формирование пустого файла rtf и скачивание его. Но как доработать механизм передачи текста новости, названия новости, возможно картинок и т.п. в функцию function CreateRtf() я пока не знаю. Надеюсь на помощь сообщества Элеанор. Мне кажется скачивание новости полезная вещь. Жду предложений.