Живой пример работы:

Make PDF кнопка не требует ничего, кроме указания правильного значения href

<a class='btn btn-small btn-primary' href='?template=98&action=MakePDF' target='_blank' title='сохранить как .pdf'>Make PDF</a>

Make DOC кнопка не требует ничего, кроме указания правильного значения href

<a class='btn btn-small btn-primary' href='?template=98&action=MakeDOC' target='_blank' title='сохранить как .doc'>Make DOC</a>

Print кнопка требует jquery.printPage.js, обработки нажатия кнопки из phph-application.js.

<a class='btn btn-small btn-primary' id='btnPrint' href = '?template=98' />Print</a>

e-mail кнопка требует обработки нажатий кнопок из phph-application.js

<span id ='EmailID' style='display: none;'>
	<input class='input-medium search-query' name='email' id='email-input' type='text' placeholder='введите email'>
	<a class='btn btn-primary'  id='email-sender' href='?template=98'>Отправить</a>
</span></p>

Использование:

Кнопки можно установить где угодно: в макете дизайна, компоненте или даже объекте. Фактически, функционал можно навесить на любую ссылку, лишь бы соблюдались следующие условия:

  1. требуется поменять значения href: в template=98 следует указать номер макета-экспортера в вашей установке NetCat.
  2. у кнопок из примеров нельзя менять id (там, где они заданы). Зато можно менять их стили и классы.

На заметку:  в адресной строке можно передавать и любые другие параметры, например, задать шаблон компонента через nc_ctpl= Следует однако учесть, что из-за архитектурных ограничений NetCat шаблон компонента можно применить только к "Объекту в списке". В случае необходимости применить шаблон макета к "Полному выводу объекта", следует в шаблоне переместить его код в объект в списке, в адресной строке передать id текущего объекта, в системные настройки шаблона добавить примерно такой код: query_where .= "a.Message_ID = '$id'";

Подсказка: предпросмотр любой страницы (как она будет выглядеть при экспорте) можно осуществить, добавив к адресу ?template=98

Установка:

Вам понадобится:

К сожалению, у нас проблемы с поддержкой Рецептов. Когда-то мы не подумали о том, что сложно будет поддерживать актуальность инструкций. Поэтому, если вам нужно установить этот рецепт, напишите комментарий на его странице:

https://www.ph-ph.ru/NetCat/Content-Export-Tools

Мы попробуем помочь.

Исходный код макета:

Header:
";
ob_start(); 
echo "
<html>
	<head>
		<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
		<title>Предпросмотр макета экспорта</title>
	</head>
	<body>

Footer:
</body>
</html>
";
$html = ob_get_contents();


if ($_REQUEST['action']==MakePDF)
{
ob_end_clean();
include($DOCUMENT_ROOT.'/images/!phph-pack-collection/mpdf/mpdf.php');
$filetitle = $current_sub[EnglishName]; // имя генерируемого файла, кириллица допустима, задано имя раздела
$mpdf=new mPDF();
$mpdf->WriteHTML($html);
$mpdf->Output("$filetitle.pdf", 'D');
}

if ($_REQUEST['action']==MakeDOC)
{
// нужно передать в функцию адрес текущей страницы без action=MakeDOC, а то получится цикл
$pagelink = $_SERVER['REQUEST_URI'];
$pagelink = str_replace("&amp;action=MakeDOC", "", "$pagelink"); 

$filetitle = $current_sub[EnglishName]; // имя генерируемого файла, кириллица не допустима, пусть будет имя раздела тогда

// теперь все путем, запускаем генератор doc'ов:
ob_end_clean();
	header("Content-Type: application/vnd.ms-word");
	header("content-disposition: attachment;filename=".$filetitle.".doc");
	echo $html;
	exit();
//ff_makeDoc($pagelink,$filetitle);
}


$value = isset( $_POST[email] ) ? $_POST[email] : false;
if ($value != false)
{
$to = $value;
$from = "$current_catalogue[Email]";
$reply = "$current_catalogue[Email]";
$from_name = "noreply $subHost";
$subject = "автоматическое письмо с сайта $subHost";
$mailer = new CMIMEMail();
$mailer->mailbody(strip_tags($html),$html);
$mailer->send($to, $from, $reply, $subject, $from_name);
}

if ($_REQUEST['action']==source)
{
echo "<h1>Исходный код макета:</h2>";
$head= htmlspecialchars($template_env[Header]);
$foot= htmlspecialchars($template_env[Footer]);
echo "
<style type='text/css' media='all'>
pre {
  padding: 0 3px 2px;
  font-family: Menlo, Monaco, \"Courier New\", monospace;
  font-size: 12px;
  color: #883333;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  border-radius: 3px;
    display: block;
  padding: 8.5px;
  margin: 0 0 9px;
  font-size: 12px;
  line-height: 18px;
  background-color: #f5f5f5;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.15);
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
  white-space: pre;
  white-space: pre-wrap;
  word-break: break-all;
  word-wrap: break-word;
}
</style>
<b>Header:</b><br><pre>$head</pre><br>
<b>Footer:</b><br><pre>$foot</pre>
";
}

echo "