Как включить внешнюю переменную php за пределами WHMCS в WHMCS?

Я пытаюсь ввести имя пользователя с веб-сайта в WHMCS. Веб-сайт НЕ интегрирован с WHMCS. WHMCS установлен в подкаталоге моего сайта.

Структура каталогов сайта выглядит следующим образом:

mywebsite.com
  whmcs_directory

mywebsite.com — это веб-сайт с членами. Это не wordpress, это пользовательский сайт на php.

Каталог whmcs установлен как подкаталог моего веб-сайта (в папке внутри корня веб-сайта).

Я создал пользовательское поле в WHMCS под названием «имя пользователя».

Затем я написал javascript для ввода и заполнения поля имени пользователя. У меня эта часть отлично работает в viewcart.php. Что я имею в виду под «работает нормально», так это то, что я могу определить любое значение, например «myvalue», вручную и включить его с помощью javascript:

<script>
    $('document').ready(function () {
       $('#customfield1').val('myvalue')
    })
</script>

Я включил этот javascript в viewcart.php. Он вводит myvalue в поле ввода. Тем не менее, я не могу вставить туда настоящий php, и, очевидно, все имена пользователей не являются «myvalue». Мне нужно получить динамическую переменную php извне WHMCS.

===========================================================

Теперь я смог получить свой собственный код, используя необработанный php-файл с именем test.php. Я мог бы легко ввести имя пользователя с сайта в поле ввода в необработанном php-файле.

Я сделал это, просто включив заголовок, код «получить идентификатор пользователя» ниже, написав краткий php для его вызова, а затем внедрив его через javascript в поле ввода. Супер легко.

<?php 

  //get the header
  require_once('theheader.php');

  // get the user id
  $theuser = GetTheUser::loadUser($Auth->id);

  // make variable and stuff
  $username    = $theuser->username;
  echo isset($username) ? validation::safeOutputToScreen($username) : ''; 
?>

<!-- convert to js variable -->
var username = <?php echo json_encode($username); ?>;

<!-- inject username into username input -->
<script>
    $('document').ready(function () {
       $('#inputfield1').val(username)
    })
</script>

Это работает на моей необработанной php-странице test.php и вводит вошедшего в систему пользователя на моем основном сайте в поле ввода на странице test.php.

Однако, когда я пытаюсь включить код GetTheUser (обернутый в smarty {php}{/php}) в viewcart.tpl, к сожалению, это приводит к ошибке php, Fatal error: Class 'GetTheUser' not found in /home/mysite.com/whmcs/vendor/smarty/smarty/libs/SmartyBC.class.php(464) : eval()'d code on line 2.

Так что мне просто нужно как-то получить это имя пользователя и ввести его на страницу корзины в whmcs.

Я попытался добавить php-код в cart.php, но это приводит к тому, что whmcs сообщает мне the file is corrupted страницу ошибки php. Так что, к сожалению, невозможно поместить php в cart.php в whmcs.


Скажите, пожалуйста, как я могу получить свою внешнюю переменную php с mysite.com, которая является моим пользовательским сайтом php, и вставить ее в страницу корзины на моем whmcs mysite.com/whmcs/cart.php


person user8821282    schedule 23.10.2017    source источник


Ответы (1)


В WHMCS вы не редактируете основные файлы php, вы редактируете файлы шаблонов, находящиеся в папке шаблонов. Чтобы выбрать шаблоны, используйте Общие настройки, вы выбираете, какой шаблон использовать для клиентской области на вкладке «Общие», и какой шаблон использовать для корзины на вкладке «Заказ».

Вы можете получить имя пользователя следующим образом:

На веб-сайте:

mywebsite.com/test.php

Добавьте ссылку с переменной Get, содержащей имя пользователя:

<a href="mywhmcs/cart.php?act=view&un=someuser"></a>

Примечание: вместо этого вы можете использовать форму для отправки почтового запроса.

В WHMCS

Создайте следующий файл: includes/hooks/website.php

Добавьте в него этот код:

<?php
add_hook('ClientAreaPageCart', 1, function($vars) {
    if (isset($_GET['un'])) {
        $username = filter_var($_GET['un'], FILTER_SANITIZE_STRING);
        return array('username' => $username);
    }

});

Это хук, который выполняется при посещении страницы корзины.

В шаблоне формы заказа

(Находится в templates/orderforms/standard_cart, если вы не меняли значение по умолчанию)

Отредактируйте файл, связанный с службой, на которую вы ориентируетесь, например, файл шаблона для регистрации доменного имени: adddomain.tpl

Вы можете добавить переменную, которую мы подготовили в хуке выше, следующим образом:

<input type="hidden" name="username" value="{$username}" />

person wesamly    schedule 25.10.2017