Здравствуй 
  Я пытаюсь понять, как лучше всего выполнить скрипт PHP внутри Joomla! 
  Я хочу перенаправить пользователей, если они не из X-страны (уже есть база данных и сценарий) 
  Я нашел это расширение, но хочу сделать свой собственный материал http://bit.ly/daenzU 
  1) Как я могу выполнить сценарий один раз для каждого посетителя?  Работа с файлами cookie? 
  2) Как я положу скрипт внутри Joomla!  шаблон, я изменю шаблоны / XXX / index.php 
  3) Основано на 2), Joomla!  загружает шаблоны / XXX / index.php каждый раз, когда загружается страница, поэтому мне нужно избегать сценария перенаправления, который будет выполняться дважды для пользователя 
Заранее благодарю за ваши идеи и предложения
НЕ изменяйте шаблон, это сделает трюк, но не подходит.
Я советую вам создать плагин, см. Документы Joomla о плагинах . Ниже приведен порядок выполнения событий.
 Создайте системный плагин и onAfterInitialise метод onAfterInitialise .  В этом методе добавьте весь свой код. 
  Чтобы предотвратить выполнение сценария дважды для каждого пользователя, задайте состояние пользователя, см. Документацию Joomla для состояний .  Вы также можете использовать session $session = JFactory::getSession() , см. Документацию . 
Вот код … для вашего плагина.
 // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); jimport( 'joomla.plugin.plugin' ); class plgMyPlugin extends JPlugin { // public function __construct(){ // your code here } // public function onAfterInitialise(){ $app = JFactory::getApplication(); // $state = $app->getUserStateFromRequest( "plgMyPlugin.is_processed", 'is_processed', null ); if (!$state){ // your code here // .... // Set the Steate to prevent from execution $app->setUserState( "plgMyPlugin.is_processed", 1 ); } } } 
Просто помните, что в Joomla 3.x (согласно документам ), чтобы проверить информацию о пользователе перед событием «Login», вам необходимо создать плагин в контексте «аутентификации». То есть, вы должны иметь свой плагин в 'root_to_joomla / plugins / authentication / myplugin / myplugin.php'.
Кроме того, ваш плагин должен быть классом с именем PlgAuthenticationMyplugin, он расширяет базовый класс плагина «JPlugin» и должен иметь открытый метод с именем «onUserAuthenticate».
 <?php ... class PlgAuthenticationMyplugin extends JPlugin { ... public function onUserAuthenticate($credentials, $options, &$response) { //your code here (check the users location or whatever) } .... 
Если вы хотите сделать это после события входа, ваш плагин должен быть в контексте пользователя, в root_to_joomla / plugins / user / myplugin / myplugin.php. И должен иметь общедоступный метод 'onUserLogin'.
 <?php class PlgUserMyplugin extends JPLugin { ... public function onUserLogin($user, $options) { //your test goes here } ... 
Здесь вы можете увидеть все другие связанные с пользователем события.