-13.90
Рейтинг
0.00
Сила

Григорий

попробуйте
{if $sMenuItemSelect=='index'}
или
{if $sAction=='index'}
Хук выполняет обратную задачу — устанавливает редирект только тех кто незарегистрированный пользователь.
Два вашей задачи
$aRedirectSettings=array(
	'mainpage'=>array('events'=>array(),'redirect'=>'index'),
);

+ в условии (18 строка) !($this->User_IsAuthorization()) убрать впереди восклицательный знак
Хук на вскидку

\classes\hooks\HookRedirect.class.php
<?php
//===============================================================
class HookRedirect extends Hook{
//===============================================================
	public function RegisterHook(){
		$this->AddHook('init_action','InitActionRedirectHook',__CLASS__,1000);
	}
//===============================================================
	public function InitActionRedirectHook(){
		$aRedirectSettings=array(
		//	экшен=>array('events'=>массив ивентов,'redirect'=>редирект)
			'page'=>array('events'=>array('','about',),'redirect'=>'login'),
		//	редирект c /page и /page/about на /login
			'people'=>array('events'=>array(),'redirect'=>'register'),
		//	редирект всех ссылок начинающихся с /people на страницу ошибки 404 ( 'register' - несуществующий урл)
		);
		if(!($this->User_IsAuthorization()) && !empty($aRedirectSettings)){
			$aActionSettings=isset($aRedirectSettings[Router::GetAction()]) ? $aRedirectSettings[Router::GetAction()] : null;
			if(!is_null($aActionSettings)){
				if((!empty($aActionSettings['events']) && in_array(Router::GetActionEvent(),$aActionSettings['events'])) || empty($aActionSettings['events'])) Router::Location(Router::GetPath($aActionSettings['redirect']));
			}
		}
	}
//===============================================================
}
?>


ЗЫ данным пользуйтесь на свой страх и риск, возможно это работает
  • avatar grigor
  • 0
Нашел. В engine — modules — text.class ищем cut и меняем на свое название.
  • avatar avadim
  • 0
Я тоже предпочитаю не трогать системные классы. Во всяком случае, стараюсь избежать этого везде, где возможно. Если нужно какую-то свою переменную передавать во Вьюер, чтоб она была доступна всегда и везде, можно использовать хук. Вот как-то так:

class HookLanguage extends Hook {
  public function RegisterHook() {
    $this->AddHook('init_action', 'CheckLanguage', __CLASS__);
  }
  
  public function CheckLanguage() {
    if (Router::GetAction()=='language') return;
		
    $oLang=$this->Language_GetLang();
    $this->Viewer_Assign('oLang', $oLang);
  }
}