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

    1) Пользуемся поиском по форуму! Зачастую информация может находиться не по разделу!

    2) Раздел ИНФО-продуктов относительно новый, но имеем уже более 3000 высококлассных материалов (пользуемся сортировкой по прификсам).

    3) И самое важное, КАК КАЧАТЬ БЕЗ ОГРАНИЧЕНИЙ, вся информация находится по этой ссылке КУПИТЬ VIP

    4) Временная акция, получи +5 постов за вступление в нашу группу "Вконтакте" Более подробно ТУТ

    5) Веди активную жизнь на форуме и получай рубли на личный счёт!

    Скрыть объявление
  2. На нашем форуме Null-Prog действует серьёзное правило касательно размещения материалов!

    ДЛЯ РЕЛИЗЁРОВ: категорически запрещается выкладка материалов на файлообменники типа Deposit, letitbit и другие, требующие просмотров рекламы, обрезающие скорость и тд. Нарушителям, первые 2 раза предупреждения, далее БАН. Тему по этому поводу можно посмотреть ТУТ

    Скрыть объявление
  3. В тестовом режиме на нашем форуме открыт онлайн конструктор сайтов. Вы можете попробовать создать свой сайт у НАС, интуитивно понятный интерфейс, переведёт на 95%, быстрый экспорт проекта, от вас только перетаскивать элементы и вставить в них необходимый текст!

    Все вопросы ТУТ

    Скрыть объявление

  4. Скрыть объявление
  5. Уважаемые форумчане, открывается новый раздел форума, посвящённый ремонту и эксплуатации автомобилей. Просмотреть его можно ТУТ

    Так как раздел новый, информация будет пополнять каждый день. Если есть какие либо замечания по этому разделу, отписываемся в соответствующий раздел форума, либо в личку.

    Напоминаю, сообщения в разделе АВТО не учитываются, общение не ограничено.

    Скрыть объявление
  6. Объявляется набор Модераторов на различные раздел форума, свои заявки можно оставлять в ЭТОМ разделе, перед оставлением заявки рекомендуется ознакомиться с ПРАВИЛАМИ для модераторов.

ХАК Вызываем php-файл прямо из шаблона

Тема в разделе "Статьи, обзоры, инструкции", создана пользователем Sam Jack, 7 июн 2015.

  1. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    13.755
    Симпатии:
    4.725
    untitled.png
    Внимание!Способ ниже пригоден лишь для движка версии 1.2 и выше
    Сейчас мы рассмотрим способ вызова .php файлов прямо из шаблонов движка.Но вначале маленький ликбез.Ведь не всем понятно,что я имею в виду.Не все улавливают разницу между html и языком программирования php.
    HTML-язык гипертекстовой разметки.Это видимые нами странички на сайтах,текст и блоки на этих страничках.HTML статичен,то есть можно сказать-мёртв.Его можно сравнить к примеру с текстом в нотепаде,что написал,то и видишь.Решить нужную нам задачу,этот текст не может.
    Если обратиться к вики,то PHP-препроцессор гипертекста,т.е. он как бы является родителем HTML.Это полноценный язык программирования.В нём есть функции,условия,переменные.В отличии от html который обрабатывается браузером напрямую,php-обрабатывается сервером.Шаблоны ксени не могут без танца с бубном понять,что от них хочет php.
    Итак переходим к делу.На случай если у вас возникнут какие-то косяки,обратимся к англоязычному первоисточнику .
    In Xenforo 1.2 a new tag called <xen:callback> was introduced. This allows calling a php file directly from a template.

    Here's an example where banner.php is called.

    1) First create an index.php file and put it in the /library/Example/Banner folder
    Код:
    <?php
    class Example_Banner_index
    {
      public static function getHtml()
      {
      include '/home/path_to_file/www/banner.php';
      return $output;
      }
    }
    ?>
    2) Create a index.php file
    Код:
    <?php
    $output = 'Hello World';
    ?>
    3) Add this to the ad_above_top_breadcrumb template
    Код:
    <xen:callback class="Example_Banner_index" method="getHtml"></xen:callback>
    Суть:в ксенфоро 1.2 был введён специальный тэг <xen:callback> позволяющий напрямую вызывать php файлы из шаблонов.
    Итак давайте рассмотрим на простом примере какую мы можем извлечь пользу из этого мануала.Возьмём простенький php скрипт определяющий айпи,юзер-агент и реферер пользователя и выводящий эту информацию на экран монитора.
    Код:
    <?php
    header('Content-Type: text/html; charset= utf-8');
    $get_ip = getenv("REMOTE_ADDR");// Назначаем переменную для вывода ip пользователя
    $get_browser = getenv("HTTP_USER_AGENT");// Назначаем переменную для вывода юзер-агента
    $get_referer = @$_SERVER['HTTP_REFERER'];// Назначаем переменную для вывода заголовка реферера
    // Выводим на экран
    echo "Дата:$get_time <br>";
    echo "Ваш IP:$get_ip<br>";
    echo "Юзер-агент:$get_browser<br>";
    echo "Реферер:$get_referer<br>";
    ?>
    Сохранив код выше в файле с расширением php,мы можем закинуть эту страничку на фтп и перейдя в браузере на неё-увидеть свои данные (код выше исполнился на сервере и вернул нам ответ в виде текста).Но к примеру нам захотелось сделать на своём форуме блок с такой информацией,чтобы каждый пришедший видел,что его палит всевидящее око Администрации)Напрямую эти кодеса в шаблон мы запихнуть не можем,поэтому выполним три простых шага.
    1.Создаём файл index.php со следующим содержанием:
    Код:
    <?php
    class Example_Test_index {
      public static function getHtml() {
        include 'library/Example/Test/ipinfo.php';
        return $output;
      }
    }
    ?>
    и кладём его по пути:library/Example/Test/
    2.Создадим файл ipinfo.php и вставим туда наш экспериментальный php код:
    Код:
    <?php
    header('Content-Type: text/html; charset= utf-8');
    $get_ip = getenv("REMOTE_ADDR");// Назначаем переменную для вывода ip пользователя
    $get_browser = getenv("HTTP_USER_AGENT");// Назначаем переменную для вывода юзер-агента
    $get_referer = @$_SERVER['HTTP_REFERER'];// Назначаем переменную для вывода заголовка реферера
    // Выводим на экран
    echo "Дата:$get_time <br>";
    echo "Ваш IP:$get_ip<br>";
    echo "Юзер-агент:$get_browser<br>";
    echo "Реферер:$get_referer<br>";
    ?>
    кидам его в папку с нашим index.php (можно поместить в любое место изменив путь в index.php)
    3.Создаём новый шаблон в админке со следующим содержанием:
    Код:
    <div class="section">
    
    <div class="secondaryContent">
    
    <h3>Ваши данные</h3>
    
    <xen:callback class="Example_Test_index" method="getHtml"></xen:callback>
    
    </div>
    
    </div>
    назовём его к примеру xfws_test.
    Всё.Теперю этот шаблон мы можем подключить в сайдбар строчкой <xen:include template="xfws_test" />
    С помощью <xen:callback class="Example_Test_index" method="getHtml"></xen:callback> можно вывести инфу из нашего файла в любом шаблоне:в профиле пользователя,в объявлении и т.д.Сейчас наш блок выглядит вот так:
    [​IMG]
    Теперь приведём содержание php файла палящего айпи в более опрятный вид.
    Код:
    <?php
    header("Content-type: text/html; charset=utf-8");
    $get_ip = getenv("REMOTE_ADDR");
    $get_browser = getenv("HTTP_USER_AGENT");
    $get_referer = @$_SERVER['HTTP_REFERER'];
    echo <<<html
    <p>Ваш IP:$get_ip</p>
    Юзер-агент:$get_browser</p>
    Реферер:$get_referer</p>
    html;
    ?>
    Добавим красок и ссылку на сервис для полной информации об ip
    Код:
    <?php
    header("Content-type: text/html; charset=utf-8");
    $get_ip = getenv("REMOTE_ADDR");
    $get_browser = getenv("HTTP_USER_AGENT");
    $get_referer = @$_SERVER['HTTP_REFERER'];
    echo <<<html
    <p style="line-height:1.5;color: rgb(150, 150, 150);">Ваш IP:<a target="_blank" href="http://whatismyipaddress.com/ip/$get_ip">$get_ip</a></p>
    <p style="line-height:1.5;color: rgb(150, 150, 150);">Юзер-агент:<span style="color:#6cb2e4";>$get_browser</span></p>
    <p style="line-height:1.5;color: rgb(150, 150, 150);">Реферер:<span style="color:#6cb2e4";>$get_referer</span></p>
    html;
    ?>
    [​IMG]
    Я сделал немного неправильно,повторяя в коде одинаковые css свойства.Можно было вынести их отдельно,назначив классы элементам.Но это лишь пример и в таком варианте мне кажется он понятней.
    Если доработать этот php скрипт,то можно выводить более обширную и понятную инфу.Здесь же мы в принципе применили лишь три строчки кода.
     
    Метки:

Поделиться этой страницей

iHax Community
Рейтинг@Mail.ru Яндекс.Метрика мониторинг сайтов
Форум программного обеспечения/
Загрузка...