zoukankan      html  css  js  c++  java
  • dedecms如何利用tag来调取相关文章

    DEDE文章里,很多人都是只填了TAG,而没有填写关键字,更不要说手动去设置其相关文章了。

    所以,就希望有一个功能,可以列出当前文章的按TAG进行相关匹配的文章,作为其相关文章。

    例如:A文章的tag是“证券 金融 次贷”,B文的TAG是“美女 时尚”,C文的TAG是“美女 次贷”,D文的tag是“证券 贬值”,那么A文章用次此修改后得到的相关文章就是C和D,B文的相关文章是C,C文的相关文章是A和B,D文相关文章是A

    修改方法为以下两步(已在DEDE5.1 GBK版上调试通过,如果你是要修改UTF-8版本,切记不要用记事本打开DEDE自带的文件):

    第一步:在includeinc_functions.php文件的最后?>之前,插入以下函数代码

    function ShowTagLikeArc_by_id($titleLen,$rowCount,$typeid,$aid){

    $dsql = new DedeSql(false);

    if ($typeid!="0") $sql = TypeGetSunID($typeid,$dsql);

    else $sql =" 1=1 ";

    //找到所有的tag id

    $query="Select tid from #@__tag_list where aid=$aid";

    $dsql->SetQuery($query);

    $dsql->Execute();

    while($row=$dsql->GetObject()){

    $kwsqlarr[] = " (tl.tid='".$row->tid."') ";

    }

    $where = implode(' OR ',$kwsqlarr);

    if (trim($where)=="") $where=" 1<>1 ";

    $sql="Select DISTINCT tp.namerule,tp.typedir,#@__archives.* From #@__tag_list tl left join #@__archives on tl.aid=#@__archives.ID left join #@__arctype tp on #@__archives.typeid=tp.ID where {$sql} and ( $where) and #@__archives.ID<>$aid order by #@__archives.litpic desc,#@__archives.click desc"; //排序按有缩略图、点击率高的排名靠前

    $dsql->SetQuery($sql);

    $dsql->Execute();

    $ss="";

    $i=0;

    while($row=$dsql->GetObject()){

    $url=GetFileUrl($row->ID,$row->typeid,$row->senddate,$row->title,$row->ismake,$row->arcrank,$row->namerule,$row->typedir,$row->money);

    $ss=$ss."<li><a href='".$url."' title='".$row->title."'>";

    if ($titleLen!=0) $ss=$ss.cn_substr($row->title,$titleLen);

    else $ss=$ss.$row->title;

    $ss=$ss."</A></LI>";

    $i++;

    if (($rowCount!=0)&&($i>=$rowCount)) return $ss;

    }

    if ($ss=="") $ss="暂无相关文章";

    return $ss;

    }

    第二步:在文章内容页模板(通常是article_article.htm)里,加入调用此函数的标签:

    例如:{dede:field name='ID' function='ShowTagLikeArc_by_id(20,10,0,@me)' /}

    这个标签的意思就是:从所有栏目里,查找本篇文章的tag相关文章,一共找10条,标题显示最长为20个字

    又如:{dede:field name='ID' function='ShowTagLikeArc_by_id(0,0,2,@me)' /}

    这个标签的意思就是:从ID为2栏目及其所有子栏目里,查找本篇文章的tag相关文章,不限制文章数量,标题显示不限字数

    附注:

    1 生成出来的相关文章HTML形如:

    <li><a href="/html/xxxx/CCC.html" title="C文标题">C文标题</a></li>

    <li><a href="/html/xxxx/dddd.html" title="D文标题">D文标题</a></li>

    如果你的模板有样式方面的要求,可自行调整代码里的<li>部分

    2 目前得到的相关文章,是按有缩略图且点击率高的拍列靠前,如需有自己的排序要求,请修改代码里的order by #@__archives.litpic desc,#@__archives.click desc部分,不懂的请查阅跟帖或跟贴提问,其他网友代为回答,我将给予一定热心助人奖励

    —————————————————————————————————————————————————

    温馨提示:

    * 模板文件通常在template/default目录里,文章页的模板叫article_article.htm,且本拓展修改的标签,只能放在文章内容页。

    * 本修改,需要具备一定的模板和HTML的基础知识,如果完全没有这些基础知识,在修改模板使用标签时会遇到一定困难,请不要使用QQ问我,因为我也很难帮助你,也没有足够的时间帮助你,这就好比小学生遇到初中题目一样,需要你自己把基础知识进行学习和摸索

    * 具体的模板和HTML的知识,属于编辑模板的基础知识,最好还是自学一下,多看DEDE自带的模板、DEDE模板及标签的帮助文件、HTML基本概念、CSS的知识、善用论坛搜索和百度google,多掌握一点,对你自己的站长生涯也有好处。

    * 有问题,请先翻看前面的跟贴是否已解决,或跟帖详细描述,入门级问题我一般就不作回答了,如果你自己摸索了2个星期,又实在很想用这个代码,可以来找我,但千万别一遇到问题就问,因为我实在没有足够的精力回答所有问题,见谅!

    * 如果有特殊要求的,或者DEDE是特殊情况的(如版本不同、有特殊设置、修改过代码的),或者实在没有任何HTML、模板、PHP方面的知识但又很想使用这个的,可以联系我进行定制。

  • 相关阅读:
    react-native 之ScrollView的使用
    gitHub 克隆项目慢
    react native 给View添加点击事件
    React Native View属性onLayout
    react native 样式与布局
    react native 对日期的处理
    react native 顶部菜单栏效果的实现
    iOS self.navigationController 推出界面怎么一次性回到指定第一个
    Java
    2021-5-13讲课内容hibernate主键id映射_XML方式
  • 原文地址:https://www.cnblogs.com/dafa/p/3774757.html
Copyright © 2011-2022 走看看