GetOne("select keywords)"."/> GetOne("select keywords)".">

Home >CMS Tutorial >DEDECMS >How to solve problems related to dede:arclist keyword

How to solve problems related to dede:arclist keyword

藏色散人
藏色散人Original
2020-01-13 09:46:462244browse

How to solve problems related to dede:arclist keyword

How to solve {dede:arclist keyword='Dynamic acquisition of keywords'}?

Solution{dede:arclist keyword='Dynamic acquisition of keywords'}

Recommended learning: 梦Weavercms

The template has been modified recently. In order to make related articles more relevant, I plan to optimize it, but it will increase the time to generate the page. It would be good if it is not updated frequently.

I am working on it recently. For a website, I want to have a function, which is to have a div block that displays the title of an article with the same keywords as the current article. At the beginning it was written like this

{dede:arclist keyword='{dede:field name='keyword'}'}The result is definitely not allowed. . . . I couldn't find it online. So I read the code myself and wrote a simple solution myself.

In arclist.lib.php line 149

The code is as follows:

//关键字条件 
if($keyword!='')

Change the content in the middle of {} to

{ 
$rowGetKeyword = $dsql->GetOne("select keywords From `dede_archives` where id='$arcid'"); 
$keyword=$rowGetKeyword['keywords']; 
$keyword = str_replace(',', '|', $keyword); 
$orwheres[] = " CONCAT(arc.title,arc.keywords) REGEXP '$keyword' "; 
}

In this way, call { directly dede:arclist keyword='Write whatever you want here as long as it is not empty'} In this way, the keyword here is obtained dynamically. Otherwise it can only be fixed.

Just before I posted, I saw a tag in dede5.6

{dede:likeart titlelen='' row=''}
{/dede:likeart}

This tag has not been tested yet, but it should be this function. If not, just use the method I mentioned above. It has been tested and can be used.

How to modify DEDECMS-related articles based on keywords

DEDE-related articles are completely irrelevant. A friend of mine officially released related articles based on TAG on DEDE, which is also very good. Unfortunately, I am not based on The article over there always fails after changing the DEDE code. It may be due to limited capabilities, or of course there may be a problem with the code

Now I finally have a solution:

1 In the end of inc_functions.php?> Add

before ; The code is as follows:

//查询指定栏目里包含相应关键字的文章,并列出 
//参数说明:$showImg 是否显示缩略图,0表示不显示,1表示显示 
// $titleLen 标题长度,0表示无限 
// $rowCount 输出行数,0表示无限 
// $typeid 栏目ID,0表示所有栏目 
// $keyWord 关键字,字符串 
function ShowKeyWordArc($showImg,$titleLen,$rowCount,$typeid,$keyWord){ 
$dsql = new DedeSql(false); 
$sql = TypeGetSunID($typeid,$dsql); </p> <p>//关键字分词技术 
$ks = explode(" ",$keyWord); 
foreach($ks as $k){ 
$k = trim($k); 
if ($k!="") { 
$kwsqlarr[] = " (xkzzz_archives.title like &#39;%$k%&#39;)"; 
//$kwsqlarr[] = " (xkzzz_archives.keywords like &#39;%$k%&#39;) "; //如果需要相关到其它文章的关键字,解除此行注释 
} 
} 
$where = implode(&#39; OR &#39;,$kwsqlarr); </p> <p>$sql="Select tp.namerule,tp.typedir,xkzzz_full_search.aid,xkzzz_full_search.url,xkzzz_archives.* From xkzzz_full_search left join xkzzz_archives on xkzzz_full_search.aid=xkzzz_archives.ID left join xkzzz_arctype tp on xkzzz_archives.typeid=tp.ID where {$sql} and ((xkzzz_archives.title like &#39;%".$keyWord."%&#39;) or $where) order by xkzzz_full_search.aid 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); 
if ($showImg==0){ 
$ss=$ss."<LI><a href=&#39;".$url."&#39; target=_blank>"; 
if ($titleLen!=0) $ss=$ss.cn_substr($row->title,$titleLen); 
else $ss=$ss.$row->title; 
$ss=$ss."</A></LI>"; 
}else{ 
$ss=$ss."<LI><span class=&#39;sjdqimggl&#39;><a href=&#39;".$url."&#39; target=_blank>"; </p> <p>if ($row->litpic!="") $ss=$ss."<img src=&#39;".$row->litpic."&#39; alt=&#39;".$row->title."&#39; />"; 
else $ss=$ss."<img src=&#39;/images/titl.gif&#39;/>"; 
$ss=$ss."</a></span><span class=&#39;sjdqtxttl&#39;><a href=&#39;".$url."&#39; target=_blank>"; 
if ($titleLen!=0) $ss=$ss.cn_substr($row->title,$titleLen); 
else $ss=$ss.$row->title; 
$ss=$ss."</A></span></LI>"; 
} 
$i++; 
if (($rowCount!=0)&&($i>=$rowCount)) return $ss; 
} 
return $ss; 
}

2 Put

{dede:field name=’keywords’ function=’ShowKeyWordArc(0,32,10,0,”@me”)’/}

in the article template page, which means that related articles in all columns (key to the current article) related words), the maximum title length is 32, and a maximum of 10 items can be displayed. Thumbnails

or

{dede:field name=’keywords’ function=’ShowKeyWordArc(0,32,10,0,”高三 语文”)’/} 
可以找到标题里,含有“高三 语文”,或者含有“高三”或“语文”的文章

are not displayed. For example, this paragraph:

相关文章 
{dede:likeart titlelen=’24′ row=’10′}
[field:textlink/]< > 
{/dede:likeart}

will be changed to:

相关文章 
{dede:field name=’keywords’ function=’ShowKeyWordArc(0,32,10,0,”@me”)’/}

Disclaimer: This function was not written by me

Related articles based on keywords, which is very good in terms of user experience and SEO

But the only bad thing It’s just that it will be much slower when generating static, haha, the server will have to work hard again

The above is the detailed content of How to solve problems related to dede:arclist keyword. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn