左右不逢缘 发表于 2020-12-17 10:43:53

门户内容页怎么获取当前文章之前的20片文章??

门户内容页怎么获取当前文章之前的20片文章??

就是调用当前文章之前20片文章列表

Discuz智能体 发表于 2025-3-17 07:18:02

在Discuz的门户内容页中,如果你想获取当前文章之前的20篇文章列表,可以通过以下步骤实现:

### 1. 获取当前文章的发布时间
首先,你需要获取当前文章的发布时间。可以通过以下代码获取:

$current_article_time = $article['dateline'];

### 2. 查询当前文章之前的20篇文章
接下来,你可以通过SQL查询获取当前文章之前的20篇文章。假设你的文章表是`portal_article_title`,你可以使用以下SQL语句:

$sql = "SELECT * FROM ".DB::table('portal_article_title')." WHERE dateline < $current_article_time ORDER BY dateline DESC LIMIT 20";
$previous_articles = DB::fetch_all($sql);

### 3. 处理查询结果
查询结果会返回一个包含20篇文章的数组,你可以根据需要对这些文章进行处理和展示。

### 4. 在模板中展示文章列表
最后,你可以在模板文件中循环输出这些文章。例如:

<ul>
<!--{loop $previous_articles $article}-->
    <li><a href="portal.php?mod=view&aid={$article['aid']}">{$article['title']}</a></li>
<!--{/loop}-->
</ul>

### 完整代码示例
以下是一个完整的代码示例,展示如何在门户内容页中获取并展示当前文章之前的20篇文章:

// 获取当前文章的发布时间
$current_article_time = $article['dateline'];

// 查询当前文章之前的20篇文章
$sql = "SELECT * FROM ".DB::table('portal_article_title')." WHERE dateline < $current_article_time ORDER BY dateline DESC LIMIT 20";
$previous_articles = DB::fetch_all($sql);

// 在模板中展示文章列表
$show_previous_articles = '';
foreach ($previous_articles as $article) {
    $show_previous_articles .= '<li><a href="portal.php?mod=view&aid='.$article['aid'].'">'.$article['title'].'</a></li>';
}

// 输出到模板
include template('portal/view');

在模板文件`portal/view.htm`中,你可以使用以下代码展示文章列表:

<ul>
    {$show_previous_articles}
</ul>

### 注意事项
- 确保你的SQL查询条件正确,避免查询到不相关的文章。
- 如果文章数量较多,建议对查询进行优化,避免影响页面加载速度。

通过以上步骤,你可以在Discuz的门户内容页中成功获取并展示当前文章之前的20篇文章列表。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-21 06:38:11

在Discuz!的门户内容页中,如果你想获取当前文章之前的20篇文章列表,可以通过以下步骤实现:

### 1. 获取当前文章的发布时间
首先,你需要获取当前文章的发布时间(`dateline`),这个时间戳将用于查询比当前文章更早发布的文章。

### 2. 查询比当前文章更早发布的20篇文章
使用SQL查询语句,根据当前文章的发布时间,查询比它更早发布的20篇文章。你可以使用`ORDER BY`和`LIMIT`来实现这个功能。

### 3. 在模板中调用数据
将查询到的数据传递给模板,并在模板中进行展示。

### 具体实现步骤:

#### 1. 在PHP文件中编写查询逻辑
假设你正在编辑门户内容页的PHP文件(例如`portal.php`),你可以在适当的位置添加以下代码:

// 获取当前文章的发布时间
$current_article_dateline = $_G['article']['dateline'];

// 查询比当前文章更早发布的20篇文章
$query = DB::query("SELECT * FROM ".DB::table('portal_article')." WHERE dateline < $current_article_dateline ORDER BY dateline DESC LIMIT 20");

$previous_articles = array();
while($article = DB::fetch($query)) {
    $previous_articles[] = $article;
}

// 将查询结果传递给模板
$_G['previous_articles'] = $previous_articles;

#### 2. 在模板文件中展示数据
在门户内容页的模板文件(例如`portal/view.htm`)中,你可以使用以下代码来展示查询到的文章列表:

<!-- 展示之前的20篇文章 -->
<ul>
<!--{loop $_G['previous_articles'] $article}-->
    <li>
      <a href="portal.php?mod=view&aid={$article['aid']}">{$article['title']}</a>
      <span>{$article['dateline']}</span>
    </li>
<!--{/loop}-->
</ul>

### 解释:
- `$_G['article']['dateline']`:获取当前文章的发布时间。
- `DB::query`:执行SQL查询。
- `ORDER BY dateline DESC`:按照发布时间降序排列,确保获取到的是比当前文章更早发布的文章。
- `LIMIT 20`:限制查询结果为20条。

### 注意事项:
- 确保数据库表名和字段名与你的Discuz!版本一致。
- 如果文章数量较多,建议对查询进行优化,避免影响页面加载速度。

通过以上步骤,你可以在门户内容页中展示当前文章之前的20篇文章列表。如果你有更多问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 门户内容页怎么获取当前文章之前的20片文章??