问题:如何制作涉及数据库多表操作的标签,比如想在首页显示一最新推荐图片文章。 解决方法:按函数标签说明(/help/PowerEasy2006/1148.html),制件标签如下: 查询语句: select top 1 * from PE_Article where Elite={$PE_True} order by ArticleID DESC 标签内容: {Loop}{Infobegin} <table height=50 cellSpacing=0 cellPadding=0 width=530 align=center border=0> <tr> <td><A href="{$InstallDir}{$Field(0,GetUrl,Article,1)}" target=_blank><IMG height=50 src="{$InstallDir}Article/UploadFiles/{$Field(21,Text,0,0,0)}" width=530 border=0></A></td> </tr> </table> {Infoend}{/Loop} 通常网站中有几个文章类型的频道,而最新的文章又不确定在某个文章类型的频道下。那么把上述标签添加到首页,就可能存在图片不显示的问题。 比如首页显示的图片应该是http://www.***.net/zixun/UploadFiles_7381/200809/2008092616374776.gif 结果按上述标签形成的图片路径:http://www.***.net/Article/UploadFiles/200809/2008092616374776.gif 显然标签中“{$InstallDir}Article/UploadFiles/”是把图片都放在默认的文章频道中,写法是不正确的。 那么,我们如何把“Article”替换为图片实际所在的频道目录、“uploadfiles”替换成图片实际所在的频道的上传文件目录,显示标签的查询语句不对,没有调出具体的频道目录和频道上传目录。修改代码如下:
查询语句: select top 1 PE_Article.ArticleID,PE_Article.ChannelID,PE_Article.Title,PE_Article.DefaultPicUrl,PE_Channel.ChannelDir,PE_Channel.UploadDir from PE_Article inner join PE_Channel on PE_Article.ChannelID = PE_Channel.ChannelID where PE_Article.Elite={$PE_True} order by ArticleID DESC
标签显示代码: {Loop}{Infobegin} <table height=50 cellSpacing=0 cellPadding=0 width=530 align=center border=0> <tr> <td><A href="{$InstallDir}{$Field(0,GetUrl,Article,1)}" target=_blank><IMG height=50 src="{$InstallDir}{$Field(4,Text,0,0,0)}/{$Field(5,Text,0,0,0)}/{$Field(3,Text,0,0,0)}" width=530 border=0></A></td> </tr> </table> {Infoend}{/Loop}
当然,还可以通过修改显示代码,在前台显示图片文章标题、显示多个图片等等。 |