【Ver1.3】超强文章函数EC所有版本支持,将EC打造成为CMS

2016-07-07 14:55 来源:www.chinab4c.com 作者:ecshop专家



ver1.3 版本更新信息:
(1)更新调出的文章支持伪静态URL路径.本问题由第5页75楼huangxueyao 会员朋友提出!在此表示感谢!之前忽略了!呵呵...
(2)2009-8-13日前使用的朋友,如果您的网店开启了静态化URL,那么请您进行本次更新(将新的lib_getdata.php替换成新的即可).没开启静态化的朋友仍然可以使之前的版本!

(3)以后还有函数主体的相关更新都将以附件方式提供下载!

本函数核心功能:
①文章分类ID获取
②文章ID获取
③商品分类ID关联文章获取
④商品ID关联文章获取
⑤与EC原代码文件分离方便日后版本升级
⑥不受EC版本限制,2.5以上均可使用!
⑦使用简单,只在EC原文件上增加一行代码
⑧完全个性化的使用,只要你想的到!
所有ID参都可以多项调用,并且支持分类等级的调用即通过一级分类下的ID,同时取得二级\三级...分类的内容.

函数功能体现(以下所有功能全都只在一个函数中):
(1)文章左图右列表展示(回复第1页2楼).就像一般CMS一样的显示方式.自动抽取文章内容中的图片做为展示图片.
功能截图:


(2)自己定义广告轮换(回复第1页5楼).将会教大家使用本函数来做自己的广告轮换.
功能截图:


(3)不同的商品分类页展示不同的广告(回复第2页29楼).不同的产品分类页完全自动显示不同的自定义广告.

样板例子:http://shop.17kaixin8.com/category.php?id=4


(4)不同的商品分类页展示不同的文章(回复第3页35楼).不同的产品分类页完全自动显示不同的关联文章(该教程例子由会员huangxueyao制作.谢谢! )

也谢谢管理员将本贴加为精华!!(我只能说一句,管理员您的选择是没错的!呵呵~~~开玩笑!)

下面开始所有工作的第一步:
(1)选择你EC的编码版本并下载以下附件和解压.你将会看到文件lib_getdata.php
UTF8:        

GBK:

(2)将lib_getdata.php文件放入你的网站目录/includes 文件夹下面.

(3)用DW等相关软件打开 你的网站目录/includes/init.php 文件,并找到这一行:

  1. require(ROOT_PATH . 'includes/lib_article.php');
复制代码

在该行下面增加以下代码:
  1. require(ROOT_PATH . 'includes/lib_getdata.php');
复制代码


ok!完成主要工作!!



新手使用必看8点,老手则必看第1,6点,其它自己节选或略过!
①希望新老手都可以认真看完本函数的参数使用说明和本贴里面的例子。
  1. /**
  2. * 按文章ID号/分类ID/商品ID号/商品分类ID号取得文章
  3. * @paramarray $id文章ID或文章分类ID
  4. * @paramstring$getwhat以何种方式取文章其中可选参数有:
  5. [1]art_cat(以文章分类ID获取) [2]art_id(以文章ID获取)
  6. [3]goods_cat(以商品分类ID获取)[4]goods_id(以商品ID获取)
  7. 其中的[3]和[4]必须有商品关联文章或文章关联商品
  8. * @paraminteger$num控制显示多少条文章.当参数为0时则全部显示
  9. * @paraminteger$start 从第几条数据开始取
  10. * @paramboolean$isrand 是否随机显示文章(默认为不显示)
  11. * @paramboolean$showall是否显示隐藏的文章(黑认为不显示隐藏文章)
  12. * @return array
  13. *
  14. * 函数原型:get_article_new( $id = array(0), $getwhat = 'art_id', $num = 0, $isrand = false, $showall = false, $start = 0)
  15. */
复制代码
②该函数的第一个参数即ID参数,是数组型并不只是调用一个的,例如可以array(5,12,7,21,9)
③我的例子里面库代码是UTF-8的.你可以使用DW等软件变成GBK编码的,但不要使用记事本等.当然这里也要改成<meta http-equiv="Content-Type" content="text/html; charset=GBK">

④我提供的显示库例子,只是跟据我的样例网站布局而来的,请参照上面的方法而不是完全COPY!
⑤函数本身经过各种测试没有问题,请注意自己在调用函数时候的参数和模板代码.
⑥推荐在你的库中先不使用任何模板代码,而先使用print_r()检查调用出来的结果是否正确.例如:
  1. <?php 
  2. $test = get_article_new(array(2),'art_cat',6);
  3. print_r($test);
  4. ?>
复制代码
⑦请在贴出错误的时候不要只贴错误内容和行号.请一起贴出包括本行的部份代码.
自己定义广告轮换,我只提供的是方法.如果直接使用我上面的例子,是肯定不行的.网上有很多FLASH的广告轮换.请自己跟据函数返回的结果来调用.但如果你不了解PHP\JS\XML等...则请略过~


附注:顺便介绍一下自动判断IP显示地区的天气预报EC插件(已经超过37家网站使用咯~也有很多不是EC的站点都通用)。具体可以参看:
http://bbs.ecshop.com/thread-90606-1-1.html

想要获取更多的RPC WebService可以参看这里http://app.17kaixin8.com/



这里所有实际运行效果:http://shop.17kaixin8.com/

这是会员朋友用本文章函数实现的页面:
http://www.yomata.com/article_cat.php?id=15
http://www.damige.com

回答:


现在开始利用本函数制作左图右列文章展示

在模板目录的库文件目录中增加:msg_img.lbi库文件
代码如下:

  1. <?php
  2. $this->assign( 'artimg1', get_article_new(array(2),'art_cat',6,false) );
  3. $this->assign( 'artimg2', get_article_new(array(1),'goods_cat',6,false,false) );
  4. ?>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <style type="text/css">
  7. <!--
  8. .msg_img{background: #EDEDED;width: 546px; height:150px; text-align: left;margin: 10px 0 0 0; padding-top:10px;}
  9. .msg_img h2{ background-color:#3D3D3D;width: 516px; height: 25px;color: #fff; line-height: 25px; text-indent: 20px; font-size: 12px;}
  10. .msg_img_cont{padding:5px;text-align:left;}
  11. .cont_left { width:100px; height:110px; overflow:hidden; padding:2px; text-align:center; float:left;}
  12. .cont_left img{width:100px; height:100px; border: #999 solid 1px;}
  13. .cont_right{ width:150px; height:110px; overflow:hidden; text-align:left; float:left; padding:0px 10px 0px 0px;}
  14. .cont_right ul{list-style: none; padding:5px 0px 0px 10px;}
  15. .cont_right ul li{ padding-bottom:5px;}
  16. -->
  17. </style>
  18. <div class="msg_img">
  19. <h2>最新动态</h2>
  20. <div class="msg_img_cont">
  21. <!-- {if $artimg1} -->
  22. <div class="cont_left"><!--显示文章图片-->
  23. <!--{foreach from=$artimg1 item=img1 key=index1}-->
  24. {if $index1 eq 0}
  25. {if $img1.img.0 neq ''}
  26. <a href="{$img1.url}" target="_blank"><img src="{$img1.img.0}" alt="{$img1.title|escape:html}" /></a>
  27. {else}
  28. 暂无图片
  29. {/if}
  30. {/if}
  31. <!--{/foreach}-->
  32. </div><!--/显示文章图片-->
  33. <div class="cont_right"><!--显示文章列表-->
  34. <ul>
  35. <!--{foreach from=$artimg1 item=art1 key=index1}-->
  36. {if $index1 neq 0}
  37. <li><a href="{$art1.url}" title="{$art1.title|escape:html}" target="_blank">{$art1.title|truncate:10:"..."}</a></li>
  38. {/if}
  39. <!--{/foreach}-->
  40. </ul>
  41. </div><!--/显示文章列表-->
  42. <!-- {else} -->
  43. <div class="cont_left">暂无图片</div>
  44. <div class="cont_right">暂无文章</div>
  45. <!-- {/if} -->


  46. <!-- {if $artimg2} -->
  47. <div class="cont_left"><!--显示文章图片2-->
  48. <!--{foreach from=$artimg2 item=img2 key=index2}-->
  49. {if $index2 eq 0}
  50. {if $img2.img.0 neq ''}
  51. <a href="{$img2.url}" target="_blank"><img src="{$img2.img.0}" alt="{$img2.title|escape:html}" /></a>
  52. {else}
  53. 暂无图片
  54. {/if}
  55. {/if}
  56. <!--{/foreach}-->
  57. </div><!--/显示文章图片-->
  58. <div class="cont_right"><!--显示文章列表2-->
  59. <ul>
  60. <!--{foreach from=$artimg2 item=art2 key=index2}-->
  61. {if $index2 neq 0}
  62. <li><a href="{$art2.url}" title="{$art2.title|escape:html}" target="_blank">{$art2.title|truncate:10:"..."}</a></li>
  63. {/if}
  64. <!--{/foreach}-->
  65. </ul>
  66. </div><!--/显示文章列表-->
  67. <!-- {else} -->
  68. <div class="cont_left">暂无图片</div>
  69. <div class="cont_right">暂无文章</div>
  70. <!-- {/if} -->
  71. </div>
  72. </div>
复制代码



这次的库文件更新效大,主要是一个库直接使用两次文章随意调函数,新朋友的话完全可以参考本次的新库写出自己想要的效果.至于库文件就不用多说了请大家自己查看(相信已经写的很清楚了吧).

但要提一下的就是在本次新库中的第4行即:
  1. $this->assign( 'artimg2', get_article_new(array(1),'goods_cat',6,false,false) );
复制代码
这里的参数使用了goods_cat,即以商品分类ID号为1 调用文章.但须要注意的就是如果你在实际使用中,该分类下的商品没有关联文章或者文章没有关联该分类的商品,就不会有数据出来!

还有就是所有的抽取出的内容图不再以默认的第一张了.完全可以自己定义要显示内容的第几张,当然前提是你的文章内容必须要这么多的图.

  1. {if $img1.img.0 neq ''}
  2. <a href="{$img1.url}" target="_blank"><img src="{$img1.img.0}" alt="{$img1.title|escape:html}" /></a>
复制代码
以上代码默认情况下$img1.img.0就是取内容中的第一张图,以此类推



如果你是新朋友~~这里可以略过不看(使用ver0.9的朋友查看)!!

使用之前文章随意调功能的老朋友即使用该贴的朋友:http://bbs.ecshop.com/thread-89715-1-1.html,并不用完全更新本次的库文件.但要更新以前的库文件并且要注意两点:
(1)要更新库里面调用的函数参数.
  1. $this->assign( 'artimg1', get_article_new(array(2),'art_cat',6,false) );
复制代码
如果你以前是用cat参数,则本次更新为:art_cat,如果你以前是没用使用参数直接取文章ID,那么本次更新为art_id.
以前该函数的第二个参数是cat或者随意写但这次更新的函数固定了四种,具体可以参看get_article_new()的函数说明,在第一楼的代码24行有说明.

(2)以前库文件里调用涉及图片的模板代码要修改
以前的代码:

  1. <a href="{$aimg1.url}" target="_blank"><img src="{$aimg1.img}" alt="{$aimg1.title|escape:html}" /></a>
复制代码
现在必须要改成:
  1. <a href="{$aimg1.url}" target="_blank"><img src="{$aimg1.img.0}" alt="{$aimg1.title|escape:html}" /></a>
复制代码
即抽取出的图片成为了数组的方式.如果你想调用文章内容里面的第二张图则可以写成$aimg1.img.1



现在我们利用该函数来做个广告轮换
(1)先进入后台添加一个文章的顶级分类,并将这个分类命名为:广告536*150
(2)在该分类下面增加相关文章,其实就是我们想要的广告.
请看下图广告增加方式,并请记得上传的图片尺寸大小是否符合:

这里是添加好的三条广告

(3)后台工作完成,现在我们要调出这三条广告图片了
我在网上随便找了个FLASH+XML的三图片焦点图轮换,现在配合该焦点图轮换设置好相关的库文件.
一.建立一个名为banner_pic.lbi的库代码如下:
  1. <?php
  2. //我这里添加完文章分类的ID是9,最后一个参数调用不显示的文章
  3. $bdata = get_article_new(array(9),'art_cat',0,false,true);  
  4. $xml = '<time>2</time><type>4</type>';
  5. foreach( $bdata as $key=>$value) {
  6. //['file_url']就是上传的图片链接,['link'] 就是广告的链接地址
  7. $xml .= '<step><img>' . $value['file_url'] . '</img><url>' . $value['link'] . '</url><tar>_blank</tar></step>';
  8. }
  9. //这里只是生成FLASH要调用的XML文件
  10. file_put_contents('xml/index_banner_550x150.xml',$xml);
  11. ?>
  12. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  13. <br />
  14. <div style=" border:#333 solid 1px;width:536px; height:150px; text-align:left; overflow:hidden;">
  15. <object classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="536" height="150">
  16. <param name="movie" value="banner/flash/lanrentuku_550x150.swf" />
  17. <param name="quality" value="high" />
  18. <embed src="banner/flash/lanrentuku_550x150.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="550" height="150"></embed>
  19. </object>
  20. </div>
复制代码
二.在首页模板适合的地方调用该库文件

当然广告调用都是很灵活的,你也可以直接自己写JS的广告方式或者直接调出广告图片就可以了.并不用局限在我的这个调用方式.只是重要的是看函数里面生成的数组的键值,一个是file_url,一个是link.
最后可以看一下效果:


注明:上述的例子是给有开发经验的朋友.我不会提供FLASH广告轮换的下载,因为网上一大推.而且各自都有不同的调用和使用方法.因此你可以通过参考上面库文件的方法举一反三.




如果你在使用本函数的过程中遇到了问题也可以在回贴中提出来!而你使用了本函数做出来的效果也可以在回贴中贴出URL地址给大家一起分享!谢谢大家对本函数的支持!如果你有更好的功能建意也请您提出来!!我会跟据情况调整!!

在这里祝大家HAVE FUN!

楼主太牛了,这个功能我正在后期扩展使用。

非常实用的插件,支持一个

广告轮播调用也太牛啦,这个功能我研究一下。以前直接废ftp上传,那叫一个累呀。

呵呵~你可以参看上面的例子自己写喜欢的轮播,也可以写直接的图片广告等!下次会发布不同的商品分类页调用不同的广告或者文章!

支持。。。。。

呵呵~你可以参看上面的例子自己写喜欢的轮播,也可以写直接的图片广告等!下次会发布不同的商品分类页调用不同的广告或者文章!
lshzhuhai 发表于 2009-7-13 15:01

这才是我要的,谢谢



可以调用多类别吗,而不只是调用一个类别而已,可以放在自已想放的位置

牛就一个字

LZ还是将那个FLASH广告给我们下载吧,实在搞不明白