逝水年华 发表于 2023-6-28 09:37:56

求X3.5门户相关文章推荐代码

求X3.5门户相关文章推荐代码

百度一下,看用这个方法不能用,还有别的方法吗




操作方法很简单,在指定文件内加入一段代码,保存后上传到源文件目录内,在到Discuz后台更新全站缓存,就可以看到效果了,详细信息如下:
文件路径:..\source\module\portal\portal_view.php
文件名:portal_view.php
在该文件中找到以下代码:
$article['allowcomment'] = !empty($cat['allowcomment']) && !empty($article['allowcomment']) ? 1 : 0;
找到了以后,不是修改,而是在这个最新评论代码上面加上如上图所示的相关阅读代码哦,实现相关阅读的代码如下:
$article['relate'] = array();$query = DB::query("SELECT aid,titleFROM ".DB::table('portal_article_title')." where catid='$article' order by rand() limit 12");while ($value = DB::fetch($query)) {$value['uri'] = fetch_article_url($value);$article['relate'][] = $value;}



作者:Microant
链接:https://www.jianshu.com/p/42ba5d6ca05d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

浅生 发表于 2023-6-28 09:38:13

$article['relate'] = array();$query = DB::query("SELECT aid,titleFROM ".DB::table('portal_article_title')." where catid='$article' order by rand() limit 12");while ($value = DB::fetch($query)) {$value['uri'] = fetch_article_url($value);$article['relate'][] = $value;}

Discuz智能体 发表于 2025-3-18 06:19:10

在Discuz! X3.5中,实现门户相关文章推荐的功能可以通过修改`portal_view.php`文件来实现。你提到的代码片段是一个常见的实现方式,但需要注意的是,代码中可能存在一些小问题,比如SQL查询中的`$article`变量可能没有正确传递。下面是一个改进后的代码示例,确保相关文章推荐功能能够正常工作。

### 修改步骤:

1. **找到文件路径**:
   - 文件路径:`source/module/portal/portal_view.php`

2. **找到代码位置**:
   - 在文件中找到以下代码:
   $article = !empty($cat) && !empty($article) ? 1 : 0;

3. **添加相关文章推荐代码**:
   - 在上述代码的**上方**添加以下代码:
   // 获取当前文章的catid
   $catid = $article['catid'];

   // 查询相关文章
   $related_articles = array();
   $query = DB::query("SELECT aid, title FROM ".DB::table('portal_article_title')." WHERE catid='$catid' AND aid != '$article' ORDER BY rand() LIMIT 12");
   while ($value = DB::fetch($query)) {
         $value['url'] = fetch_article_url($value);
         $related_articles[] = $value;
   }

   // 将相关文章数据传递给模板
   $article['related_articles'] = $related_articles;

4. **在模板中显示相关文章**:
   - 打开门户文章模板文件(通常是`template/default/portal/view.htm`),在合适的位置添加以下代码来显示相关文章:
   <div class="related-articles">
         <h3>相关文章推荐</h3>
         <ul>
             <!--{loop $article['related_articles'] $related}-->
             <li><a href="{$related['url']}">{$related['title']}</a></li>
             <!--{/loop}-->
         </ul>
   </div>

5. **保存并上传文件**:
   - 保存修改后的`portal_view.php`文件,并将其上传到服务器上的相应目录。

6. **更新缓存**:
   - 登录Discuz!后台,进入“工具” -> “更新缓存”,点击“提交”以更新全站缓存。

### 代码解释:
- **$catid = $article['catid'];**:获取当前文章的栏目ID。
- **$query = DB::query(...);**:查询同一栏目下的其他文章,排除当前文章,并随机获取12篇文章。
- **fetch_article_url($value);**:生成文章的URL。
- **$article['related_articles'] = $related_articles;**:将相关文章数据传递给模板。

### 注意事项:
- 确保代码中的变量名和数据库表名与你的Discuz!版本一致。
- 如果你使用的是自定义模板,请确保在正确的模板文件中添加相关文章显示的代码。

通过以上步骤,你应该能够在门户文章页面中看到相关文章推荐的功能。如果还有其他问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 求X3.5门户相关文章推荐代码