Форумы / National / Russian / Тех. поддержка / Как выводить вновь создаваемую страницу tpl

Izhver
#1 09.10.2014 15:02

Уважаемые гуру.

Хочу расширить функционал регистрации путем добавления новой tpl страницы.

Проблема заключается в том, что я никак не могу вывести создаваемую страницу..

Не подскажете как прописывать ссылку? Возможно что нужно где то регить страницу?

Добавляю страницу users.register2.tpl с моими параметра и не выводтся она.

Возможно что не так делаю изначально. Я овольно слабый мастер котонти. ( no kicking).

Может ктото пояснит в целом как это делается. Хотелось бы узнать вплоть до логики наименований страниц.

Спасибо.

Macik
#2 09.10.2014 22:06

Ни один из файлов шаблона не будет (и не должен) выводится сам по себе.

Вставить в алгоритм регистрации дополнительный шаг просто так не получится.

Поэтому опишите подробно какой функционал должен быть на этой странице и на сколько необходима именно отдельная страница.

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Izhver
#3 10.10.2014 05:15

Macik, благодарю за отклик.

Логика такая: при регистрации юзер ппадает на основную страницу регистрации, где ему предлагается на выбор несколько групп. У меня пока две: Заказчик и Исполнитель. На этой странице происходит выбор группы, после чего пользователь перекидывается на ту форму регистрации, которую выбрал. Формы, соответственно, имеют различные поля. Ну вот и не перекидывает у меня почему то.

Вторая задача, которую я я пытаюсь решить подобным путем, это создание отдельной страницы внутри модуля маркет биржи для Яндекс поиска. Создал страницу market.search.tpl разместил на нем коды поиска но почему то и такая страница не срабатывает, хотя по функционалу поисковой системы, автоматически перекидывать должно. Перекидывать перекидывает, но страница не открывается. Видел подобные схемы реализовывались на бирже, но там в последнее время с поддрежкой туговато стало. Я отлично понимаю, что в том и прелесть котонти, что можно таким образом расширять ее функционал, но вот не достаточно пока ее знаю. Тыкните, плизз, где копать. Можен хуки какие надо добавлять, хотя <!-- BEGIN: MAIN --><!-- END: MAIN --> ставил на этой странице.

 

 

Отредактировано: Izhver (10.10.2014 05:24, 9 лет назад)
Yusupov
#4 10.10.2014 06:35

1) Порядок создания раздельной страницы регистрации для биржи описан тут. Вы пытались сделать также, прежде чем здесь спрашивать? 

2) Macik правильно вам ответил, в Cotonti не предусмотрено, чтобы страницы создавались простым созданием шаблона, поэтому, то как вы это делаете не сработает. Надо смотреть логику модуля и если вы ее действительно смотрели, то должны были увидеть, что также как и в модуле Page для просмотра элемента, списков элементов, их создания и редактирования есть определенные части кода, которые срабатывают только при определенных значениях параметра $m. В этой логине не предусмотрено, что вы сможете создать шаблон и он будет работать как отдельная независимая страница внутри этого модуля. Хотите его переделать, пожалуйтса, пишите плагин под имеющиеся хуки в этом модуле и расширяйте его возможности, для этого они и предусмотрены, как и во всем Cotonti.

Либо вариант, просто переделать модуль под себя, то есть переписать файл modules/market/market.php и дописать логику, чтобы при значении $m = 'search' вызывался ваш фрагмент кода из поддиректории inc/. 

К примеру в файле market.php есть такой фрагмент кода (логика):

if (!in_array($m, array('add', 'edit', 'preview')))
{
	if (isset($_GET['id']) || isset($_GET['al']))
	{
		$m = 'main';
	}
	else
	{
		$m = 'list';
	}
}

require_once cot_incfile('market', 'module', $m);

Добавьте в него ваше значение для $m, так:

if (!in_array($m, array('add', 'edit', 'preview', 'search')))
{
	if (isset($_GET['id']) || isset($_GET['al']))
	{
		$m = 'main';
	}
	else
	{
		$m = 'list';
	}
}

require_once cot_incfile('market', 'module', $m);

И в папке modules/market/inc/ создайте файл market.search.php с таким кодом:

<?php

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

list($usr['auth_read'], $usr['auth_write'], $usr['isadmin']) = cot_auth('market', 'any', 'RWA');
cot_block($usr['auth_read']);

$mskin = cot_tplfile(array('market', 'search'));
$t = new XTemplate($mskin);

Тогда ваш шаблон market.search.tpl будет работать.

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

Отредактировано: Yusupov (10.10.2014 06:43, 9 лет назад)
Alex300
#5 10.10.2014 06:37

Тут важно понять. Шаблон сам по себе - это способ отображения данных. Эти данные должен предоставить модуль или плагин. Они же дают команду шаблонизатору на отрисовку макета.

Скажем так, если Вы подарите кому то открытку - она сама не заполнится поздравлениями. Это должны сделать Вы. Вот в котонти шаблон - это та самая открытка, а  заполняют ее и отдают получателю модули и плагины.

В данном случае, вероятнее всего Вам нужен модуль или плагин, расширяющий возможности регистрации пользователя.

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
Отредактировано: Alex300 (10.10.2014 10:44, 9 лет назад)
Izhver
#6 10.10.2014 14:21

Спасибо всем кто откликнулся. Буалат, особое благодарю. Я не видел того что вы скинули. Логику я более менее представляю, но мне ка раз надо было понять что за что отвечает.  Буду рыть дальше. Надо изучать тщательней саму котонти, только вот с доками трудновато как и с английским.