Foren / National / Russian / Модули и плагины / Как создать новые tpl страницы в плагине

vpktz
#43940 2. Januar 2019, 10:59

 

Если хотите в своем плагине создавать вручную страницы tpl, которые будут работать внутри page, и выводить их внутри page.tpl, то это реализуется иначе. После праздников напишу пример создания такого плагина.

Буду презнателен. Потому что именно это поможет в понимании работы как и в php так и системе cotonti. И возможно я когда нибудь начну писать

плагины. 

Потому что очень хочу. 

Добавлено 2 дня спустя:

#43938 Dayver:

Да, если задача просто размещение статичных html и для этого не нужен функционал шаблонизатора то можно использовать модуль а потом просто кинуть в папку datas/html/ ваши .html файлы и открывать сможете по адресу ваш.сайт\index.php?e=view&v=имяфайлабезрасширения

Спасибо, ваш способ работает. 

Только одна проблема. любой html документ я создаю уже изначально имеет вид 

<div class="col first">
	<div class="block">
		<h2 class="plugin">Array</h2>


	</div>
</div>

И вся верстка уже изначально получается внутри них. А так как у меня весь контент на всем сайте всегда в теге 

<div id="content" data-uk-height-viewport="expand: true">

</div>

То у меня получается криво . 

Я так понимаю надо сам модуль поправить и делается это в единственном файле view.php который выглядит вот так:

<?php
/* ====================
[BEGIN_COT_EXT]
Hooks=module
[END_COT_EXT]
==================== */

/**
 * View module main
 *
 * @package view
 * @version 0.9.1
 * @author Cotonti Team
 * @copyright Copyright (c) Cotonti Team 2008-2012
 * @license BSD
 */

defined('COT_CODE') or die('Wrong URL.');

// Environment setup
define('COT_VIEW', true);
$env['location'] = 'views';

$v = cot_import('v', 'G', 'TXT');

if (mb_strpos($v, '.') !== false || mb_strpos($v, '/') !== false)
{
	die('Wrong URL.');
}

$incl_html = "datas/html/" . $v . ".html";
$incl_htm = "datas/html/" . $v . ".htm";
$incl_txt = "datas/html/" . $v . ".txt";

if (file_exists($incl_txt))
{
	$fd = @fopen($incl_txt, 'r') or die("Couldn't find a file : " . $incl_txt); // TODO: Need translate
	$vd = fread($fd, filesize($incl_txt));
	fclose($fd);
}
elseif (file_exists($incl_htm))
{
	$fd = @fopen($incl_htm, 'r') or die("Couldn't find a file : " . $incl_htm); // TODO: Need translate
	$vd = fread($fd, filesize($incl_htm));
	fclose($fd);
}
elseif (file_exists($incl_html))
{
	$fd = @fopen($incl_html, 'r') or die("Couldn't find a file : " . $incl_html); // TODO: Need translate
	$vd = fread($fd, filesize($incl_html));
	fclose($fd);
}
else
{
	cot_die();
}

if (preg_match('@<head>(.*?)</head>@si', $vd, $ext_head) == 1)
{
	$ext_head = $ext_head[1];
}
else
{
	$ext_head = '';
}

if (preg_match('@<body[^>]*?>(.*?)</body>@si', $vd, $ext_body) == 1)
{
	$ext_body = $ext_body[1];
}
else
{
	$ext_body = $vd;
}

$vt = '&nbsp;';

if (mb_stripos($ext_head, '<meta name="cot_title"') !== false)
{
	$vt = mb_stristr($ext_head, '<meta name="cot_title"');
	$vt = mb_stristr($vt, 'content="');
	$vt = mb_substr($vt, 9);
	$tag_title_end = mb_strpos($vt, '">');
	$vt = mb_substr($vt, 0, $tag_title_end);
}
elseif (preg_match('@<title>(.*?)</title>@si', $ext_head, $vt) == 1)
{
	$vt = $vt[1];
}

if (preg_match_all('@<script[^>]*?>(.*?)</script>@si', $ext_head, $ext_js) > 0)
{
	foreach ($ext_js[1] as $js)
	{
		$js = preg_replace(array('@<!--(.*?)\n@si', '@\/\/(.*?)-->\n@si'), array('', ''), $js);
		$morejavascript .= $js;
	}
}

if (preg_match_all('@<link[^>](.*?)>@si', $ext_head, $ext_links) > 0)
{
	foreach ($ext_links[0] as $link)
	{
		$moremetas .= $link;
	}
}

require_once $cfg['system_dir'] . '/header.php';
$t = new XTemplate(cot_tplfile('plugin'));

$t->assign(array(
	'PLUGIN_TITLE' => $vt,
	'PLUGIN_BODY' => $ext_body
));

$t->parse('MAIN');
$t->out('MAIN');

require_once $cfg['system_dir'] . '/footer.php';
?>

то я сам не осилил найти место где можно править изначальные теги потому как в php знаю процентов на 10. ТОлько самое основное.

Подскажите где тут надо исправить что бы не было изначальных html тегов в документе. Ну или был но мой.

<div id="content" data-uk-height-viewport="expand: true">

</div>

 


Dieser Beitrag wurde von vpktz (am 4. Januar 2019, 15:41, vor 5 Jahre) bearbeitet