Создание новой страницы

Не раз видел, что у новичков (таких же как и я) возникал впорос как созать новую страницу без стандартного плагина «StaticPage», т.е. вручную.

Создаем страницу: site.ru/price/

1) Создаем папку ActionPrice здесь: templates\skin\grey\actions
2) Создаем в папке ActionPrice файл index.tpl. и пишем в нем вот ЭТО:

{include file='header.tpl'}

HI, I'AM PRICE-LIST!!

{include file='footer.tpl'}

3) в файле russian.php, который находится templates\language добавляем вот ЭТО:

'price' => 'Прайс-лист',

4) Создаем файл ActionPrice.class.php и пихаем его в classes\actions.
5) Открываем новоиспеченный файл ActionPrice.class.php и копируем в него вот ЭТО:

<?php
/**
 * Обработка страницы Price, т.е. УРЛа вида /price/
 *
 */
class ActionPrice extends Action { 

	protected $sMenuHeadItemSelect='';

	protected $sMenuItemSelect='price';

	protected $sMenuSubItemSelect='';



	
	/**
	 * Инициализация
	 *
	 */
	public function Init() {
	$this->Viewer_AddHtmlTitle($this->Lang_Get('price')); // Имя страницы title, берет из templates\language\russian.php
	}
	/**
	 * Регистрация евентов
	 *
	 */
	protected function RegisterEvent() {		
		$this->AddEventPreg('/^(page(\d+))?$/i','EventPrice'); // Регистрируем 	евент Price
}
	
	/**********************************************************************************
	 ************************ РЕАЛИЗАЦИЯ ЭКШЕНА ***************************************
	 **********************************************************************************
	 */
	
	/**
	 * Реализация евента
	 *
	 */

		
	protected function EventPrice() { // Регистрируем 	реализуем евент Price
	
	
	
		/**
		 * Устанавливаем шаблон вывода
		 */
		$this->SetTemplateAction('index');
	}
	
	
	
	
		
	/**
	 * При завершении экшена загружаем переменные в шаблон
	 *
	 */
	public function EventShutdown() {
		$this->Viewer_Assign('sMenuHeadItemSelect',$this->sMenuHeadItemSelect);
		$this->Viewer_Assign('sMenuItemSelect',$this->sMenuItemSelect);
		$this->Viewer_Assign('sMenuSubItemSelect',$this->sMenuSubItemSelect);
	
	}
}
?>

Не уверен, что в этом коде нет ничего лишнего, но по крайней мере работает))

6)В файле config.php после строки

$config['router']['page']['index'] = 'ActionIndex';


Пишем вот ЭТО:

$config['router']['page']['price'] = 'ActionPrice';


Все. У вас теперь новая страничка, делайте с ней что хотите)

__________________________________________________________

P.S.

Если вы хотите добавить страничку вида типа site.ru/price/kirpich то
1) В ActionPrice.class.php добавляем после ЭТОГО

$this->AddEventPreg('/^(page(\d+))?$/i','EventPrice'); 

вот ЭТО

$this->AddEvent('Kirpich','EventKirpich'); 


и после ЭТОГО

		$this->SetTemplateAction('index');
	}

вот ЭТО

	protected function EventKirpich() { 
	
	
	
		/**
		 * Устанавливаем шаблон вывода
		 */
		$this->SetTemplateAction('kirpich');
	}


2) Создаем файл kirpich.tpl здесь templates\skin\grey\actions\actionprice и пишем в нем вот ЭТО

{include file='header.tpl'}

HI, I'AM PRICE-LIST FOR KIRPICH!!

{include file='footer.tpl'}

Ну и все. Теперь нам неповоротливый плагин StaticPage не нужен точно.

28 комментариев

avatar
Зачем все это? Стандартного плагина и так хватает чтобы создавать какие угодно статические страницы.
avatar
Ну если вопросы возникают значит надо. Тем более редактор статистических страниц не всесилен. Гараздо больше возможностей открываетя когда страницы создаешь вручную.
avatar
Станд.плагин не позволяет делать страницы с вызовом php-скриптов
avatar
спасибо! как раз то что нужно!
avatar
добавил инфу как добавить страницу вида site.ru/price/kirpich
avatar
Как прописать условие для выделения пункта меню для страницы kirpich
avatar
<li {if $sAction=='price' and $sEvent=='kirpich'}class="active"{/if}<div><a href="{router page='price'}kirpich/">kirpich</a></div></li>
avatar
Вернее так (не закрыл тег )
<li {if $sAction=='price' and $sEvent=='kirpich'}class="active"{/if}><div><a href="{router page='price'}kirpich/">kirpich</a></div></li>
avatar
Спасибо за доку! Очень пригодилось. Сделал свою страницу с вызовом php-скрипта, который выдает все точки с Я.карты в одном списке:
www.smsrostov.ru/maplist/

В \templates\skin\new\actions\ActionMapList\index.tpl просто добавил вызов своего скрипта:

{include file='header.tpl'}

<div class=topic>
<div class="content">
	
<h1> Список всех точек карты Ростова-на-Дону</h1>
<hr>
	
{php}
include('./map_list.php');
{/php}

</div>
</div>

{include file='footer.tpl'}


Для создания навигации пришлось доточить напильником:
header_nav.tpl

{if $sAction=='map' or $sAction=='maplist'}
			{include file=menu.maplist.tpl}
		{/if}


в созданном menu.maplist.tpl

<ul class="menu">
		<li {if $sAction=='map'}class="active"{/if}><a href=/map/>Точки на карте Ростова-на-Дону</a></li>    
		<li {if $sAction=='maplist'}class="active"{/if}><a href=/maplist/>Точки Wi-Fi одним списком</a> New!</li>
	</ul>
avatar
а как можно администрировать содержимое этой страницы из административной панели?
то есть, хотелось бы некоторым пользователям дать права на редактирование данных, которые будут выводиться на том же maplist

и этот функционал как-то должен быть доступен из под их «админки»/«модераторской»
avatar
С чем может быть связана ошибка
: failed to open stream: Нет такого файла или каталога in ***/engine/classes/Router.class.php on line 201

создавал все тоже самое, только страницу TopicMap
avatar
+1
Для синио 1.0.1 хотелось бы узнать, как сие реализовать
avatar
А все разобрался, виноват. Еще код надо в literal заключать оказывается.
avatar
Под литералами любой скрипт же корректно работает?
avatar
Скажите, как такое проделать на версии 1.0.1?
avatar
все также. Работает :)
avatar
Первая страница, получилась. А остальные не видит. Даже если сделать полностью идентичную первой. Видна только первая. на остальных ругается: Fatal error: Class 'ActionTools2' not found in .../engine/classes/Router.class.php on line 261.
avatar
скорее всего не везде правильно переименовал название акшена
avatar
в ActionTools2.class.php
avatar
Я два часа убил на проверку перепроверку источника причины ошибки. Но я даже не смог создать price лист.
avatar
я полный ламер в данном деле и то умудрился сделать :)
avatar
Да чего там хитрого ошибку сделать. Где-то, что-то упустил прописать, или буковку не туда пришпандорил… Сделать ошибку легко. А вот найти её потом, бывает довольно сложно.
avatar
А как реализовать постраничность?
avatar
А как добавить сайдбар на такую страницу?
avatar
Если хотите сделать страницы, адрес которых содержит спецсимволы, то просто пишите в конфиге что-то вроде этого:
$config['router']['page']['your-page'] = 'ActionYourpage';
avatar
зачем писать в старых, не актуальных топиках?
avatar
Просто интересовался этим вопросом, т.к. в этом топике данный аспект не освещался. Потратил некоторое время на поиски, оказалось очень просто. Вот и написал в комменты к этому гайду)
avatar
Да, кстати, а как сайдбар вывести в данную страницу?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.