和大家分享一下,文章随意调用功能

2016-07-07 15:02 来源:www.chinab4c.com 作者:ecshop专家



注意:本功能函数已经更新到最新了~~看到本贴的新老朋友请去这里
http://bbs.ecshop.com/thread-91717-1-1.html

最近有要求,要在首页调某用条文章!EC自带没有按文章ID去取文章的功能,因此只能重新写了个函数。还有因为本人特别害怕ECSHOP的版本升级,所以一般有代码级的改动时我都不愿意太多的去改EC的原文件(除非不得不改动原文件的情况)。一方面方便以后的升级,另一方面也使得代码有更好的通用性和复用性。

下面详细讲解一下具体的使用方法:
新建一个名为company_msg.lbi的库文件代码如下:

  1. <?php
  2. if(!function_exists("get_article_id")) {
  3. function get_article_id($id, $num = 0) {
  4. $wherestr = '';
  5. $search = 'article_id=';

  6. for( $i=0; $i<count($id); $i++ ) {
  7. if( $i<count($id)-1 ) {
  8. $wherestr = $wherestr . $search . $id[$i] . ' or ';
  9. }
  10. else {
  11. $wherestr = $wherestr . $search . $id[$i];
  12. }
  13. }

  14. $sql = 'SELECT * FROM ecs_article '.
  15. ' WHERE (' . $wherestr . ') AND ( is_open = 1 ) '.
  16. ' ORDER BY add_time DESC, article_type DESC, article_id DESC';
  17. if ($num > 0) {
  18. $sql .= ' LIMIT ' . $num;
  19. }
  20. $res = $GLOBALS['db']->getAll($sql);
  21. $articles = array();
  22. foreach ($res AS $id => $row) {
  23. $articles[$id]['title'] = $row['title'];
  24. $articles[$id]['url'] = 'article.php?id=' . $row['article_id'];
  25. $articles[$id]['addtime'] = date($GLOBALS['_CFG']['date_format'], $row['add_time']);
  26. }
  27. return $articles;
  28. }
  29. }
  30. $this->assign('company_msg',get_article_id(array(8,9))); // 这里指按ID号调用8,9号文章
  31. ?>
  32. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  33. <div class="right_frame_title">
  34. <p>公司要文</p>
  35. </div>
  36. <div class="right_frame">
  37. <!--{if $company_msg }-->
  38. <ul>
  39. <!--{foreach from=$company_msg item=cmsg}-->
  40. <li><a href="{$cmsg.url}" title="{$cmsg.title|escape:html}" target="_blank">{$cmsg.title|truncate:16:"..."}</a></li>
  41. <!--{/foreach}-->
  42. </ul>
  43. <!--{else}-->
  44. <ul><li>暂无文章</li></ul>
  45. <!--{/if}-->
  46. </div>
  47. <div><img src="../images/right_frame_bottom.gif" alt="" width="190" height="10" /></div>
复制代码
从第4行到31行的代码是中心功能,主要用来实现按需调用文章,函数名:get_article_id()。但在这里将它一起写进了company_msg.lbi的库文件中,如果你觉得麻烦或者自己想在其他地方等又使用到该函数,那么可以直接将这函数写进EC 的includes/lib_arcicle.php文件末尾或其他需要使用的文件(但这种方式已经改了原代码了),为什么这么做相信有开发经验的都知道了这里不再多说。

33行的$this->assign('company_msg',get_article_id(array(8,9)));主要就是通过调用该函数来取得自己想要的文章。本函数包括两个参数 $id (数组型)和 $num (整型) ,$id 就是想要调用的文章ID,$num 是控制显示多少条默认的情况下就是全部显示。

在这个例子中是取ID号8和9的文章,当然也可以取8,6,120,11等自己想取的文章ID。

35-50行,这个不用多说了,其实也就是库文件的显示样式。懂HTML的话这个完全可以自己重新设计,我为了方便一起写出来了。

最后一部当然就在,想要显示的地方调用该库文件咯。例如在index.dwt 的左则等布局好的地方加入
  1. <!-- #BeginLibraryItem "/library/company_msg.lbi" --><!-- #EndLibraryItem -->
复制代码
就OK了。这样做的好处就是完全不用改动原文件,实现自己想要的功能。尽量避免升级等其他麻烦的地方。就算以后升级该库文件也直接使用就可以了。

下次将会发布自动调用文章里面第一张图,做为新闻的功能。就是像一般的CMS那样,左边有图片,右边有文章列表。

本人也是新手~不足之处还请大家指正!

回答:
研究一下!

按照楼上的楼上的大侠教的方法,已经调用成功!加在了index.dwt文件的相应位置,不过又有新问题,调用以后,被调用到的文章下面出现了一条框框 如图,不知道是什么问题呢?

恩 我调试过了 能用

如何提高商城销售收入教程

多了个框框的话你可能是COPY了
  1. <div><img src="../images/right_frame_bottom.gif" alt="" width="190" height="10" /></div>
复制代码
这段代码,其实这个只是我自己的模板用的。。。。。
删掉应该没问题了

其他人用的话,不要完全将布局代码也不动不动的就复制啊~~~~~~行35-50已经是个人的布局和显示样式了~当然模板代码不用改,但是<div>那些自己总该会写吧

收藏 做个记号.

做个记号,期待LZ发布第二个东东出来,我现在都是通过广告形式来做成好似左图右字的情况。

gbk格式如何改?

<meta http-equiv="Content-Type" content="text/html; charset=GBK">
这样就是GBK啦~当然还要用DW转为GBK的编码

第二个功能其实已经是做好的了~但现在,在想是不是一起整合为这个随意调用,并增加分类ID的调用~

感谢,正要找这里教程呢

我已经更新了左图右列表的自动取内容图的功能,有需要的朋友请看该贴:
http://bbs.ecshop.com/thread-89715-1-1.html

非常感谢LZ的共享,多多交流