是否可以用Javascript获取MyBB PHP变量?我是一名用户脚本编码器,现在我使用:
var uid = $("#panel").find('a').attr('href').replace(/[^0-9]/g, '');
获取当前用户的用户 ID (uid)。但是,如果我使用 PHP 从用户那里获取 UID,它看起来像这样:
<?php echo {$mybb->user['uid']} ?>
现在进入实际问题。是否可以使用 $mybb->user['uid']
通过 Javascript 获取 UID?
我的回答是肯定的,你可以,但它有一些限制。
好吧,如果您还记得在每个标题中包含模板始终具有以下代码:
<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文件中定义。(当然,该变量必须在括号 { } 内)
例如,headerinclude
模板的相关 PHP 文件是 global.php
。
就是这样。玩得开心 MyBB :)
您可以将插件添加到您的论坛。它称为模板条件。安装完成后,您可以在所有模板中使用 Mybb->user 变量。这个插件有很多应用程序,但对于你的代码,你可以做:
<setvar uservar>$mybb->user['uid']</setvar>
var {$tplvars['uservar']} = $("#panel").find('a').attr('href').replace(/[^0-9]/g, '');
该插件位于MyBBHacks论坛的链接下方。
http://mybbhacks.zingaburga.com/showthread.php?tid=464
首先,您将无法直接访问javascript中的php服务器端变量,但是您可以做几种解决方法。
首先想到的是将其放在您的html页面中的某个地方
<script type="text/javascript">
<?php echo "var uid = '". $mybb->user['uid']."';" ?>;
</script>
这样做的缺点是,这个变量现在可以在 DOM 中直接查看和编辑。
如果您正在使用(或可以使用)模板,则可以将 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 变量。