Dedecms独立模型的文章页点击次数的调用与更新
Dedecms独立模型的文章页点击次数调用代码:
1 | <script src= "/plus/count.php?view=yes&aid={dede:field name='id'/}∣={dede:field name='mid'/}&cid={dede:field name='channel'/}" type= 'text/javascript' language= "javascript" ></script>次 |
在dedecms的文章页调用点击次数的代码是:<script src=”{dede:field name=’phpurl’/}/count.php?view=yes&aid={dede:field name=’id’/}∣={dede:field name=’mid’/}” type=’text/javascript’ language=”javascript”>次。但是用这个代码在独立模型的文章页是无法调出的。打开/plus/cont.php可以看到以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | //UpdateStat(); if (! empty ( $maintable )) { $dsql ->ExecuteNoneQuery( " Update `{$maintable}` set click=click+1 where {$idtype}='$aid' " ); } if (! empty ( $mid )) { $dsql ->ExecuteNoneQuery( " Update `jcode_member_tj` set pagecount=pagecount+1 where mid='$mid' " ); } if (! empty ( $view )) { $row = $dsql ->GetOne( " Select click From `{$maintable}` where {$idtype}='$aid' " ); if ( is_array ( $row )) { echo "document.write('" . $row ['click ']."' );\r\n"; } } |
可以看到是这段sql语句Update `{$maintable}` set click=click+1 where {$idtype}=’$aid’来增加点击次数的,其中{$maintable}就是我们新建的独立模型的表,那这个{$maintable}是指哪个表呢,往上看,是在这里
1 2 3 4 5 6 7 | //获得频道模型ID if ( $cid < 0) { $row = $dsql ->GetOne( "SELECT addtable FROM `jcode_channeltype` WHERE id='$cid' AND issystem='-1';" ); $maintable = empty ( $row [ 'addtable' ])? '' : $row [ 'addtable' ]; $idtype = 'aid' ; } |
$maintable的值取决于id=’$cid’,那$cid呢,再往上看,是在这里
1 | $cid = empty ( $cid )? 1 : intval (preg_replace( "/[^-\d]+[^\d]/" , '' , $cid )); |
可是再往上看,就没有了,说明需要在该页面GET传channel(独立模型的id)的值过来,所以呢,在普通文章的文章页调用的次数<script src=”{dede:field name=’phpurl’/}/count.php?view=yes&aid={dede:field name=’id’/}∣={dede:field name=’mid’/}” type=’text/javascript’ language=”javascript”>的代码中再增加一个参数$cid,值是多少呢?我们知道,在文章页调用channelid的代码是{dede:field name=’channel’/},所以综上,
Dedecms独立模型的文章页点击次数调用代码是:
1 | <script src= "/plus/count.php?view=yes&aid={dede:field name='id'/}∣={dede:field name='mid'/}&cid={dede:field name='channel'/}" type= 'text/javascript' language= "javascript" ></script>次 |