xiao9469 发表于 2023-6-11 13:56:17

求助将一段dz的htm页面中的代码转换成php和js语句

{eval $member = getuserbyuid($floor, 1);}<!--{if $floor['uid']}--><a class="tshuz_at" href='home.php?mod=space&uid={$floor['uid']}' target="_blank">{$floor['username']}</a><img class="authicn vm" id="authicon$floor" src="$_G['cache']['groupicon'][$member['groupid']]" title="$_G['cache']['usergroups'][$member['groupid']]['grouptitle']" style="display: revert;"><!--{if $floor ==$_G}-->      <img class="authicn vm" id="authicon$floor" src="{IMGDIR}/ico_lz.png" style="display: revert;"><!--{elseif $floor ==1}--><img class="authicn vm" id="authicon$floor" src="{IMGDIR}/ico_gly.png" style="display: revert;"><!--{elseif $floor ==2}--><img class="authicn vm" id="authicon$floor" src="{IMGDIR}/ico_cjbz.png" style="display: revert;"><!--{elseif $floor ==3}--><img class="authicn vm" id="authicon$floor" src="{IMGDIR}/ico_bz.png" style="display: revert;"></a><!--{/if}--><!--{else}-->{lang guest}<!--{/if}-->代码说明:这段代码是自己写的,放在htm页面运行正常,是在贴内楼层用户名旁显示用户组图标用的,效果如下:



楼层回复超过2条会自动折叠,打开折叠(点击查看)后的用户名处不出现用户组图标


发现点开折叠后它调用的是一个php页面,我不懂php。。求助大佬帮我将这段htm代码转换成php语句,或者教下怎么才能让php能调用这段htm代码,还有一个js文件也是类似需求

Discuz智能体 发表于 2025-3-18 13:58:14

要将你在Discuz!模板中的HTML代码转换为PHP和JavaScript代码,首先需要理解你当前的需求和代码的功能。你希望在帖子楼层中显示用户组图标,并且在楼层回复超过2条时自动折叠,点击展开后仍然显示用户组图标。

### 1. 将HTML代码转换为PHP代码

你当前的HTML代码片段如下:

{eval $member = getuserbyuid($floor, 1);}{$floor} {lang guest}

这段代码的作用是通过`getuserbyuid`函数获取用户信息,并显示楼层号和“guest”字样。

要将这段代码转换为PHP代码,可以直接在PHP文件中使用类似的逻辑:

<?php
$member = getuserbyuid($floor, 1);
echo $floor . ' ' . lang('guest');
?>

### 2. 在PHP中调用HTML代码

如果你希望在PHP中调用HTML代码,可以将HTML代码嵌入到PHP的`echo`语句中:

<?php
$member = getuserbyuid($floor, 1);
echo '<div>' . $floor . ' ' . lang('guest') . '</div>';
?>

### 3. 处理折叠后的用户组图标显示问题

你提到在折叠后的楼层中,用户组图标不显示。这可能是因为折叠后的内容是通过AJAX加载的,而你的用户组图标逻辑没有在AJAX加载的内容中执行。

你需要在JavaScript中处理AJAX加载的内容,确保在加载后执行显示用户组图标的逻辑。

假设你有一个JavaScript函数`loadFoldedContent`用于加载折叠内容,你可以在加载完成后调用一个函数来显示用户组图标:

function loadFoldedContent(floor) {
    // 假设通过AJAX加载折叠内容
    $.ajax({
      url: 'load_folded_content.php',
      type: 'POST',
      data: { floor: floor },
      success: function(response) {
            // 将加载的内容插入到页面中
            $('#folded-content-' + floor).html(response);
            
            // 调用显示用户组图标的函数
            showUserGroupIcon(floor);
      }
    });
}

function showUserGroupIcon(floor) {
    // 假设你有一个PHP文件返回用户组图标的HTML
    $.ajax({
      url: 'get_user_group_icon.php',
      type: 'POST',
      data: { floor: floor },
      success: function(iconHtml) {
            // 将用户组图标插入到对应的楼层中
            $('#user-group-icon-' + floor).html(iconHtml);
      }
    });
}

### 4. 在PHP文件中生成用户组图标

在`get_user_group_icon.php`文件中,你可以使用类似以下的代码来生成用户组图标的HTML:

<?php
$floor = $_POST['floor'];
$member = getuserbyuid($floor, 1);

// 假设你有一个函数getUserGroupIcon来获取用户组图标的HTML
$iconHtml = getUserGroupIcon($member['groupid']);

echo $iconHtml;
?>

### 5. 在模板中嵌入JavaScript

最后,确保在你的模板中嵌入了上述JavaScript代码,并且在折叠内容加载时调用`loadFoldedContent`函数。

<script>
$(document).ready(function() {
    // 假设你有一个按钮用于加载折叠内容
    $('.load-folded-content').click(function() {
      var floor = $(this).data('floor');
      loadFoldedContent(floor);
    });
});
</script>

### 总结

通过以上步骤,你可以将HTML代码转换为PHP代码,并在JavaScript中处理折叠内容的加载和用户组图标的显示。确保在AJAX加载内容后调用相应的函数来显示用户组图标。

如果你有更多具体的问题或需要进一步的帮助,请随时提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-21 17:05:05

要将你的这段Discuz模板代码(`htm`文件中的代码)转换成PHP和JavaScript语句,以便在点击折叠后也能正常显示用户组图标,你可以按照以下步骤进行操作。

### 1. 将HTML代码转换为PHP代码
你提到的代码片段是Discuz模板中的代码,它使用了Discuz的模板语法。为了在PHP中实现相同的功能,你可以直接在PHP文件中编写逻辑。

<?php
// 获取用户信息
$member = getuserbyuid($floor, 1);

// 判断用户是否为游客
if ($member) {
    echo $floor . ' ' . $member['username']; // 显示楼层和用户名
} else {
    echo $floor . ' ' . lang('guest'); // 显示楼层和“游客”
}
?>

### 2. 在JavaScript中动态加载用户组图标
为了在点击折叠后也能显示用户组图标,你可以通过JavaScript动态加载用户信息。假设你有一个PHP接口可以返回用户信息,你可以通过AJAX请求来获取数据并更新页面。

#### PHP接口(`get_user_info.php`)
<?php
// get_user_info.php
$uid = $_GET['uid']; // 获取用户ID
$member = getuserbyuid($uid, 1);

if ($member) {
    echo json_encode([
      'username' => $member['username'],
      'group_icon' => $member['group_icon'] // 假设用户组图标存储在group_icon字段中
    ]);
} else {
    echo json_encode([
      'username' => lang('guest'),
      'group_icon' => 'guest_icon.png' // 游客图标
    ]);
}
?>

#### JavaScript代码
function loadUserInfo(uid, element) {
    fetch(`get_user_info.php?uid=${uid}`)
      .then(response => response.json())
      .then(data => {
            element.innerHTML = `${uid} <img src="${data.group_icon}" alt="${data.username}" /> ${data.username}`;
      })
      .catch(error => console.error('Error:', error));
}

// 假设你有一个按钮或链接来展开折叠内容
document.querySelectorAll('.expand-button').forEach(button => {
    button.addEventListener('click', function() {
      const uid = this.getAttribute('data-uid');
      const userElement = this.closest('.user-info');
      loadUserInfo(uid, userElement);
    });
});

### 3. 在HTML中嵌入PHP和JavaScript
你可以在HTML中嵌入PHP代码来生成初始的用户信息,并使用JavaScript来处理折叠后的动态加载。

<div class="user-info">
    <?php
    $member = getuserbyuid($floor, 1);
    if ($member) {
      echo $floor . ' <img src="' . $member['group_icon'] . '" alt="' . $member['username'] . '" /> ' . $member['username'];
    } else {
      echo $floor . ' <img src="guest_icon.png" alt="' . lang('guest') . '" /> ' . lang('guest');
    }
    ?>
</div>

<button class="expand-button" data-uid="<?php echo $floor; ?>">展开</button>

### 4. 总结
- **PHP部分**:用于在页面加载时生成初始的用户信息。
- **JavaScript部分**:用于在用户点击展开按钮时,动态加载用户信息并更新页面。

通过这种方式,你可以在点击折叠后也能正常显示用户组图标。如果你有更多复杂的需求,可以根据这个基础进行扩展。

如果你有更多问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 求助将一段dz的htm页面中的代码转换成php和js语句