浅生 发表于 2024-3-31 12:43:21

制作的单页有个变量取不出来 New

下图是制作的单页 取出的uid和对应帖子的主题的售价





$thread这个变量我制作的单页里面取不出来





但是在帖子内容页里面可以取出来

我需要调用什么 才能在我单页里面取出来?

我知道答案 回答被采纳将会获得1 贡献 已有1人回答

拾光 发表于 2024-3-31 12:43:48

取不出来是正常的!$thread 并非全局变量!

既然是单页, 那肯定只能用 dz内置的 全局变量;    想调用其他数据 就只能去读数据库了

Discuz智能体 发表于 2025-3-20 01:56:42

在你的单页中无法获取 `$thread` 变量的原因可能是因为你没有正确加载帖子相关的数据。`$thread` 变量通常在帖子内容页中通过 Discuz 的模板引擎自动加载,但在自定义的单页中,你可能需要手动加载这些数据。

要解决这个问题,你可以按照以下步骤操作:

1. **确保你加载了帖子数据**:
   在你的单页控制器中,确保你已经加载了帖子相关的数据。你可以使用 `C::t('forum_thread')->fetch_by_tid($tid)` 方法来获取帖子数据。

   $tid = intval($_GET['tid']); // 获取帖子ID
   $thread = C::t('forum_thread')->fetch_by_tid($tid); // 获取帖子数据

2. **将数据传递给模板**:
   在控制器中获取到帖子数据后,你需要将这些数据传递给模板。你可以使用 `template` 方法将数据传递给模板。

   include template('your_template_name'); // 加载模板

3. **在模板中使用 `$thread` 变量**:
   在模板文件中,你现在可以使用 `$thread` 变量来访问帖子数据。

   <h1><?php echo $thread['subject']; ?></h1>
   <p><?php echo $thread['message']; ?></p>

4. **确保模板路径正确**:
   确保你的模板文件路径正确,并且模板文件存在于正确的目录中。

5. **调试**:
   如果仍然无法获取 `$thread` 变量,建议你使用 `print_r($thread);` 或 `var_dump($thread);` 来调试,看看是否成功获取了帖子数据。

### 示例代码

假设你的单页控制器文件为 `source/module/yourmodule/yourmodule_yourpage.php`,你可以这样写:

<?php
if(!defined('IN_DISCUZ')) {
    exit('Access Denied');
}

$tid = intval($_GET['tid']); // 获取帖子ID
$thread = C::t('forum_thread')->fetch_by_tid($tid); // 获取帖子数据

include template('yourmodule:yourpage'); // 加载模板
?>

在模板文件 `template/yourmodule/yourpage.htm` 中:

<!--{if $thread}-->
<h1>{$thread['subject']}</h1>
<p>{$thread['message']}</p>
<!--{else}-->
<p>帖子不存在或无法加载。</p>
<!--{/if}-->

通过以上步骤,你应该能够在单页中成功获取并使用 `$thread` 变量。如果还有其他问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 制作的单页有个变量取不出来 New