Доступ к MyBB PHP переменной с помощью Javascript
Можно ли получить переменную MyBB PHP с помощью Javascript? Я пользовательский кодер, и сейчас я использую:
var uid = $("#panel").find('a').attr('href').replace(/[^0-9]/g, '');
Чтобы получить идентификатор пользователя (uid) текущего пользователя. Однако, если бы я получил UID от пользователя с PHP, это выглядело бы так:
<?php echo {$mybb->user['uid']} ?>
Теперь к актуальному вопросу. Можно ли получить UID через Javascript, используя $mybb->user['uid']
?
4 ответа
Мой ответ - да, вы можете, но у него есть некоторые ограничения.
Хорошо, если вы помните, что в каждом заголовке есть шаблоны включающие следующий код:
<script type="text/javascript">
<!--
var cookieDomain = "{$mybb->settings['cookiedomain']}";
var cookiePath = "{$mybb->settings['cookiepath']}";
var cookiePrefix = "{$mybb->settings['cookieprefix']}";
var deleteevent_confirm = "{$lang->deleteevent_confirm}";
var removeattach_confirm = "{$lang->removeattach_confirm}";
var loading_text = '{$lang->ajax_loading}';
var saving_changes = '{$lang->saving_changes}';
var use_xmlhttprequest = "{$mybb->settings['use_xmlhttprequest']}";
var my_post_key = "{$mybb->post_code}";
var imagepath = "{$theme['imgdir']}";
// -->
</script>
Вы можете использовать переменные MyBB в любом шаблоне с одним условием: оно должно быть определено в соответствующем PHP-файле. (Конечно, эта переменная должна быть в скобках {})
Например, соответствующий файл PHP с headerinclude
шаблон global.php
,
Вот и все. Веселитесь вместе с MyBB:)
Вы можете добавить плагин на свой форум. Это называется шаблонные условия. После установки вы можете использовать переменную Mybb->user во всех шаблонах. Существует множество приложений этого плагина, но для вашего кода вы можете сделать:
<setvar uservar>$mybb->user['uid']</setvar>
var {$tplvars['uservar']} = $("#panel").find('a').attr('href').replace(/[^0-9]/g, '');
Плагин находится на форуме MyBBHacks по ссылке ниже.
Если вы используете (или можете использовать) шаблон, вы можете поместить переменную PHP в переменную JavaScript, определенную в содержимом этого шаблона. Если вы планируете запускать этот JavaScript на каждой странице, вы должны добавить определение переменной в блок скрипта в headerinclude
шаблон.
<script type="text/javascript">
<!--
var userID = {$mybb->user['uid']};
// -->
</script>
Этот пример сценария поместит uid пользователя в переменную JavaScript userID.
Обратите внимание, что <?php echo $mybb->user['uid']; ?>
не будет работать, так как система шаблонов MyBB не позволяет использовать внутри нее теги PHP. Вы можете вместо этого использовать {$mybb->user['uid'}
как альтернатива.
Также обратите внимание, что если вы используете плагин и проверяете шаблон в функции в вашем файле плагина, вам также необходимо глобализировать переменную PHP, которую вы собираетесь использовать.
Во-первых, вы не сможете напрямую получить доступ к переменной на стороне php-сервера в javascript, но есть несколько способов обойти это.
Первое, что приходит на ум, - это поместить это где-нибудь на свою HTML-страницу.
<script type="text/javascript">
<?php echo "var uid = '". $mybb->user['uid']."';" ?>;
</script>
Недостатком этого является то, что эта переменная теперь непосредственно просматривается и может редактироваться в DOM.