clothing模板,如何让flash旁边的公告只调用指定分类的文章?

2016-07-07 16:23 来源:www.chinab4c.com 作者:ecshop专家

clothing模板,如何让flash旁边的公告只调用指定分类的文章?

就是说,这里只显示某一种分类的文章,而不显示其他分类的文章呢?

高手帮帮忙啊,急急!

回答:
在 index.php 中修改 函数 index_get_new_articles 中的SQL语句就可以了

主要修改 WHERE a.is_open = 1 AND a.cat_id = 需要的分类的ID ' .



谢谢楼上的解答,再问一下

' WHERE a.is_open = 1 AND a.cat_id = ac.cat_id AND ac.cat_type = 1' .

这句里的前后两个1有什么不同吗?为什么我无论把那个数字设置为想要的文章分类ID,前台都调用不到文章呢?



感觉应该是在/themes/clothing/index.dwt里的

<!-- #BeginLibraryItem "/library/new_articles.lbi" --><!-- #EndLibraryItem -->

这句调用的,不过不知道怎么实现只调用某一个分类的文章啊??

自己顶一下

高手在哪里???

高手在哪里???

在 index.php 中修改 函数 index_get_new_articles 中的SQL语句就可以了

主要修改 WHERE a.is_open = 1 AND a.cat_id = 需要的分类的ID ' .
阳光小宇 发表于 2009-6-16 17:35


回楼上的,前面一个1应该是真的意思,而后面一个1应该是1、2、3、4、5......其中的一个吧!

做好网店我们需要不断探索,做最好的网购网站我们更需要努力!


希望我的回答对你有用!

谢谢楼上的关注,不过这种方式我试过,一篇文章都调用不到了

高手在哪里???



下面详细讲解一下具体的使用方法:
新建一个名为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了。这样做的好处就是完全不用改动原文件,实现自己想要的功能。尽量避免升级等其他麻烦的地方。就算以后升级该库文件也直接使用就可以了。
原帖地址:http://bbs.ecshop.com/thread-89377-1-1.html



感谢楼上的相助!

不过我很菜,不知道针对clothing模板来讲,要在flash旁边那个最新公告里调用指定文章的话,
<!-- #BeginLibraryItem "/library/company_msg.lbi" --><!-- #EndLibraryItem -->这行代码应该加在index.dwt(或者别的文件)的什么位置呢?

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

顺便说一句,ECSHOP论坛的发帖验证码还真是麻烦!

未命名.jpg (11.92 KB)

未命名.jpg


<?php

if(!function_exists("get_article_id")) {

function get_article_id($id, $num = 0) {

$wherestr = '';

$search = 'article_id=';

for( $i=0; $i<count($id); $i++ ) {

if( $i<count($id)-1 ) {

$wherestr = $wherestr . $search . $id[$i] . ' or ';

}

else {

$wherestr = $wherestr . $search . $id[$i];

}

}

$sql = 'SELECT * FROM ecs_article '.

' WHERE (' . $wherestr . ') AND ( is_open = 1 ) '.

' ORDER BY add_time DESC, article_type DESC, article_id DESC';

if ($num > 0) {

$sql .= ' LIMIT ' . $num;

}

$res = $GLOBALS['db']->getAll($sql);

$articles = array();

foreach ($res AS $id => $row) {

$articles[$id]['title'] = $row['title'];

$articles[$id]['url'] = 'article.php?id=' . $row['article_id'];

$articles[$id]['addtime'] = date($GLOBALS['_CFG']['date_format'], $row['add_time']);

}

return $articles;

}

}

$this->assign('company_msg',get_article_id(array(8,9))); // 这里指按ID号调用8,9号文章

?>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<div class="right_frame_title">

<p>公司要文</p>

</div>

<div class="right_frame">

<!--{if $company_msg }-->

<ul>

<!--{foreach from=$company_msg item=cmsg}-->

<li><a href="{$cmsg.url}" title="{$cmsg.title|escape:html}" target="_blank">{$cmsg.title|truncate:16:"..."}</a></li>

<!--{/foreach}-->

</ul>

<!--{else}-->

<ul><li>暂无文章</li></ul>

<!--{/if}-->

</div>

<div><img src="../images/right_frame_bottom.gif" alt="" width="190" height="10" /></div>

把红色的这句去掉
就不显示那白图片了

爱死你了,全解决了,再次感谢楼上的bjecshop !