关于discuz的变量问题

super18832324321 2017-11-22 09:28:39
自定义了一个.php文件,引入后,在discuz的模板里写成了:
						<!--{loop $WB_forum_new_user $nuser}-->
<li>
<img src="uc_server/avatar.php?uid=$nuser[uid]&size=small"/>
<a c="1" href="home.php?mod=space&uid=$nuser[uid]">$nuser[username]</a>
<em><!--{eval echo date("Y-m-d H:i:s",$nuser[regdate])}--></em>
</li>
<!--{/loop}-->

但现在的问题是,$nuser[username] 变量,只能在该<!--{loop $WB_forum_new_user $nuser}-->里使用,在外面是无效,

但我现在需要在另一个新建的文件用jq的replaceWith。来代替<!--{loop $WB_forum_new_user $nuser}-->里的内容,但还要使用里面的自定义变量,该怎么解决呢?
...全文
446 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
果酱很好吃 2017-11-22
  • 打赏
  • 举报
回复
要放在loop 里面,因为 $nuser 是 loop循环出来的啊 在loop外面使用 $tmp
super18832324321 2017-11-22
  • 打赏
  • 举报
回复
引用 3 楼 jam00 的回复:
<!--{eval $tmp = $nuser['username']}--> 外面使用 $tmp
这个方法和直接用 $nuser['username']原理是一样的,输出的值还是空的
super18832324321 2017-11-22
  • 打赏
  • 举报
回复
引用 3 楼 jam00 的回复:
<!--{eval $tmp = $nuser['username']}--> 外面使用 $tmp
吧<!--{eval $tmp = $nuser['username']}-->放外面,然后替换的内容里面用$tmp 还是不行,值是空的
果酱很好吃 2017-11-22
  • 打赏
  • 举报
回复
<!--{eval $tmp = $nuser['username']}--> 外面使用 $tmp
super18832324321 2017-11-22
  • 打赏
  • 举报
回复
引用 1 楼 jam00 的回复:
肯定只能在 loop 里面使用啊,loop 解析后就是一个 foreach loop 是discuz 内置的标签,不能替换
现在的问题就是怎么在外面使用loop里面的变量,
果酱很好吃 2017-11-22
  • 打赏
  • 举报
回复
肯定只能在 loop 里面使用啊,loop 解析后就是一个 foreach loop 是discuz 内置的标签,不能替换
super18832324321 2017-11-22
  • 打赏
  • 举报
回复
引用 15 楼 qq_34139573 的回复:
$(function(){
		$('#WB_DiyBox .User li').each(function(){
			var username = $(this).find('a').html();
			$(this).find('img').replaceWith('<div class="text-avat">'+username+'</div>');
		})
	})
替换的内容我已经写好了。我想直接能吧username在外面用出来
super18832324321 2017-11-22
  • 打赏
  • 举报
回复
引用 13 楼 Mechnaic 的回复:

<ul id="box">
    <!--{loop $WB_forum_new_user $nuser}-->
    <li>
        <img src="uc_server/avatar.php?uid=$nuser[uid]&size=small"/>
        <a c="1" href="home.php?mod=space&uid=$nuser[uid]"  data = "$nuser[username]">$nuser[username]</a>
        <em><!--{eval echo date("Y-m-d H:i:s",$nuser[regdate])}--></em>
    </li>
    <!--{/loop}-->
</ul>
<script type="text/javascript">
    $('#box li a').each(function(){
        var username = $(this).attr('data');
        alert(username);
        //....
    })
</script>

可以输出啊
弹窗是有,但是username 这个放外面该怎么用啊?
Mechnaic 2017-11-22
  • 打赏
  • 举报
回复
那你就获取到值以后用 js 拼接字符串来替换
果酱很好吃 2017-11-22
  • 打赏
  • 举报
回复
奇怪的要求,那为什么不直接循环 WB_Avatar_3

<div id="WB_Avatar_3" class="text-avat">
$nuser[username]
</div>
为何还要替换一遍
qq_34139573 2017-11-22
  • 打赏
  • 举报
回复
$(function(){
		$('#WB_DiyBox .User li').each(function(){
			var username = $(this).find('a').html();
			$(this).find('img').replaceWith('<div class="text-avat">'+username+'</div>');
		})
	})
Mechnaic 2017-11-22
  • 打赏
  • 举报
回复

<ul id="box">
    <!--{loop $WB_forum_new_user $nuser}-->
    <li>
        <img src="uc_server/avatar.php?uid=$nuser[uid]&size=small"/>
        <a c="1" href="home.php?mod=space&uid=$nuser[uid]"  data = "$nuser[username]">$nuser[username]</a>
        <em><!--{eval echo date("Y-m-d H:i:s",$nuser[regdate])}--></em>
    </li>
    <!--{/loop}-->
</ul>
<script type="text/javascript">
    $('#box li a').each(function(){
        var username = $(this).attr('data');
        alert(username);
        //....
    })
</script>

可以输出啊
super18832324321 2017-11-22
  • 打赏
  • 举报
回复
引用 11 楼 Mechnaic 的回复:

<a c="1" href="home.php?mod=space&uid=$nuser[uid]" data = "$nuser[username]" >$nuser[username]</a>

var username = $(this).attr('data');
我是要替换img标签
Mechnaic 2017-11-22
  • 打赏
  • 举报
回复

<a c="1" href="home.php?mod=space&uid=$nuser[uid]" data = "$nuser[username]" >$nuser[username]</a>

var username = $(this).attr('data');
super18832324321 2017-11-22
  • 打赏
  • 举报
回复
引用 10 楼 qq_34139573 的回复:
<ul id="box">
	<!--{loop $WB_forum_new_user $nuser}-->
	<li>
		<img src="uc_server/avatar.php?uid=$nuser[uid]&size=small"/>
		<a c="1" href="home.php?mod=space&uid=$nuser[uid]" >$nuser[username]</a>
		<em><!--{eval echo date("Y-m-d H:i:s",$nuser[regdate])}--></em>
	</li>
	<!--{/loop}-->
</ul>
<script type="text/javascript">
	$('#box li').each(function(){
		var username = $(this).find("a").html();
		//....
	})
</script>
					<ul class="User">
						<!--{loop $WB_forum_new_user $nuser}-->
						<li>
							<img src="uc_server/avatar.php?uid=$nuser[uid]&size=small"/>
							<a c="1" href="home.php?mod=space&uid=$nuser[uid]">$nuser[username]</a>
							<em><!--{eval echo date("Y-m-d H:i:s",$nuser[regdate])}--></em>
						</li>
						<!--{/loop}-->
					</ul>
					<script type="text/javascript">
						jQuery('.User li').each(function(){
							var username = $(this).find("a").html();
							//....
						})
					</script>
jq
jQuery(window).load(function() {
	jQuery('#WB_DiyBox .User img').replaceWith(
		jQuery('#WB_Avatar_3')
	);
});
要替换的内容:
<div id="WB_Avatar_3" class="text-avat">
$nuser[username]
</div>
这样不对吗?输出的值还是空的。
qq_34139573 2017-11-22
  • 打赏
  • 举报
回复
<ul id="box">
	<!--{loop $WB_forum_new_user $nuser}-->
	<li>
		<img src="uc_server/avatar.php?uid=$nuser[uid]&size=small"/>
		<a c="1" href="home.php?mod=space&uid=$nuser[uid]" >$nuser[username]</a>
		<em><!--{eval echo date("Y-m-d H:i:s",$nuser[regdate])}--></em>
	</li>
	<!--{/loop}-->
</ul>
<script type="text/javascript">
	$('#box li').each(function(){
		var username = $(this).find("a").html();
		//....
	})
</script>
super18832324321 2017-11-22
  • 打赏
  • 举报
回复
引用 8 楼 qq_34139573 的回复:
你是想用jq来做替换处理?在替换前可以用jq先获取原来的数据不行么?
不太懂你的意思,
qq_34139573 2017-11-22
  • 打赏
  • 举报
回复
你是想用jq来做替换处理?在替换前可以用jq先获取原来的数据不行么?
super18832324321 2017-11-22
  • 打赏
  • 举报
回复
引用 6 楼 jam00 的回复:
要放在loop 里面,因为 $nuser 是 loop循环出来的啊 在loop外面使用 $tmp
放在里面也不行,这样外部使用$tmp就等同于使用$nuser['username'],输出的值还是空的

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧