PHPCMS页面专题汇总列表内调用该专题内文章方法

好吧,由于工作需求,外加自己过分追求完美,晚上研究了一下,PHPCMS专题总列表页内的某个专题含有该专题的几篇文章的方式,其实原理很简单,核心思想是
1.嵌套循环.
2.数据库中存储总列表内某专题的id值等于该专题某文章列表的id值.


昨晚其实最后效果还有点问题,今天上午一上班继续解决,终于弄好了,现在跟大家分享心得.

前文可能这样说大家看不大明白,我先截取两张图片给大家看:

PHPCMS页面专题汇总列表内调用该专题内文章方法

想实现的效果:通俗点讲就是假设你后台有5个专题,而且这5个专题内有若干篇相关文章,你希望这个专题列表页面不单单显示出这5个专题信息,在列表中每个单独的专题区域能够显示该专题下的文章.

实现原理:很显然从逻辑上来讲就是一个嵌套循环,大循环,循环的是有多少个专题,挨个输出,而在每个已经输出的专题中,再次运行一次小循环,来循环当前专题内的所有文章.

准备工作:当然理解了原理,有了思想之后,就好办了,先看看PHPCMS V9专题管理的数据库表.这里有两个表”v9_special“和”v9_special_content“,一看就知道了,前者是管理有多少个专题的,后者是存放这些专题的所有内容的.而两个表如何关联起来,由于我数据库和php学的都不好(大家都知道我之前做网页设计和前端的–!),所以代码也许略有不合理的地方.我之前尝试用系统默认的PC标签”pc:special“来写,但是未能实现,于是只好用我认为最暴力的方式,直接读取数据库的”pc:get sql=’ ‘“,接着观察两个表的字段.他们功能连接的方式是v9_specialidv9_special_contentspecialid.那么再循环过程中将这两个值关联起来就可以了.

实现方法:由于这个站展示在公司网站上了,所以就不写CSS出来了,大家只需要理解了,可以自己想怎么用就怎么用.我的代码是这样写的:

<div class="hifi_PubArea">
  <!--嵌套循环输出专题及专题内文章By小白-->
  {pc:get sql="SELECT * FROM v9_special ORDER BY createtime DESC" num="10" return="data"}
  <ul class="hifi_ListPage_MainList">
    {loop $data $r}
    {php $sid=$r['id']}
    <li>
      <div class="Title">
        <div class="LeftTitle">{if time()-$r['createtime'] <= 24*3600}<img src="{IMG_PATH}hifidiy/hifi010.gif" />{else}{/if}<a href="{$r['url']}">{$r['title']}</a><span>[<a href="{$CATEGORYS[$catid]['url']}">{$catname}</a>]</span></div>
        <div class="RightTitle"> <span class="author">{if $r['username']}{$r['username']}{else}hifidiy{/if}</span> </div>
      </div>
      <div class="Content">
        <div class="DivImg"><a href="{$r['url']}"><img src="{thumb($r['thumb'],165,95)}" alt="{$r['thumb']}" /></a></div>
        <div class="DivContent">{str_cut($r['description'],240)}[<a href="{$r['url']}">查看</a>]
          <div class="subArticle">
            {pc:get sql="SELECT * FROM v9_special_content WHERE specialid = '$sid'  ORDER BY updatetime ASC" num="4" return="data"}
            <ul>
              {loop $data $t}
              <li><a href="{$t['url']}">{$t['title']}</a></li>
              {/loop}
            </ul>
            {/pc}
          </div>
        </div>
      </div>
    </li>
    {/loop}
    <div class="bk"></div>
  </ul>
  <div id="pages">{$pages}</div>
  {/pc}
</div>

关键部位我已经做了高亮,方便大家查看.我顺便简单讲解一下, 第一行高亮表示从v9_special表获取所有字段内容,当然里面有个id字段的所有值也获取了,接下来将这个值赋值给sid,那么在第一个循环内,$sid==id,并继续执行下个循环(第二条高亮部分),从v9_special_content内获取所有字段的内容,当然这里加了个条件因为这个表内包含了不止一个专题的文章,因此我将条件设定为specialid==$sid,这样就不会出现文章调用问题了.至于数量顺序什么的就很简单了,这里不再熬述.

好了,其实写完这篇文章想想,好像很简单的一个自定义功能,但是为什么昨天晚上做了半天效果出不来呢,呵呵,还是编程语言基础不扎实,还得努力啊!

搭建latin1与utf-8的PHP环境想不乱码都不行的艰苦日子

好的,经过数天折磨,为了解决本地数据库乱码问题绞尽脑汁,费尽了精力.最终以失败告终,尝试了各种字符组合,安装了无数次phpcms系统.重装了无数次操作系统,用了各种版本IIS,各种mysql,各种php,无论是64位系统还是32位系统,配置了各种php.ini, my.ini……最终以失败告终.

我放弃了,心中怒喊一声I QUIT!……不过工作还得继续…我可怜巴巴的问很少在公司负责管理服务器的上级领导.结果说是,本地数据库表内汉字的确是乱码,我简直要疯了,原来这是一个不可能完成的MISSION…除了坑爹二字形容我的心情就是不免内心一阵抱怨…之前还总说我环境不对,所以会出现莫名的问题,我看跟环境没关系,IIS 5.1, 6.0, 7.5配置PHP可不是简单事情,浪费我多少青春,接下来我就要总结这些其实很傻的结论.越来越觉得这几天傻的出奇.

继上次写了一篇PHPCMS V9安装步骤详细介绍及说明(有效避免乱码产生),其实我开始觉得有时候有些乱码不可避免(虽然内心还是觉得latin1和utf-8应该有办法在数据库表内值进行转码).

首先不得不承认,如果没有什么特殊情况,请下载安装phpcms V9 UTF-8版,在安装过程中,选择创建UTF8的数据库,这一步做好了一般无论是环境整合包还是单独配置各个插件都不会出现乱码.

另一方面,如果没有特别需求,真的不建议用IIS搭建PHP服务器,可能个人感觉吧,总觉得那玩意就是玩ASP的,甚至ASP.NET都支持不好.而方便又轻松的选择是XAMPP, WAMP等等,当然或许用官方的PC_webServer也不错,不过他们都差不多.至于操作系统,普通应用比如说博客,企业站什么的,根本不在乎,别说什么linux好,数据库上千M了我看看执行效率是不是跟windows会有点点差距.

如果单独安装mysql进行配置的时候建议在选择字符集的那里选择utf-8,默认是选择了第一个,建议手动选择第三个,并在下拉菜单默认的latin1更改为utf-8.说到mysql配置,我不得不说我遇到的一个小问题,在mysql配置的最后一步,总会卡到未响应,只好强制关闭,原因很简单其实在之前的配置过程中,有一段英文是防火墙添加3306断口例外.勾上就没问题了.

当然,我的情况就是服务器上数据库创建时用的是latin1,而我有没有权限更改这个,我只有用phpcms备份数据库并将备份文件拷贝下来的权限.所以还原的时候本地数据库用latin1也会是乱码,如果本地数据库是utf-8,会产生更为糟糕的结果,数据无法导入.

至于怎么让本地服务器汉字恢复正常,我准备从备份的sql文件下手,研究一下…期待我的成果吧!

Apache创建本地域名的服务器(WAMP环境)

最近在弄公司网站服务器上的数据库跟公司办公用的电脑的本地服务器的数据同步,可是弄得焦头烂额,直到现在还有个问题phpmyadmin里面的中文字符都成了乱码的问题没有解决,今天就说说搭本地服务器那点事.

安装好WAMP之后,这里以WampServer Version 2.2为例.安装到了E:\WAMP\
在www目录内有一个phpcms文件夹,存放着phpcms系统安装的所有文件,首先安装这个PHPCMS访问地址是http://localhost/phpcms/install,那么安装好后,本地通过访问http://localhost/phpcms/查看站点首页,而服务器上的却是顶级域名,明显会在本地测试上带来诸多不便.如果想改成浏览器内直接输入http://p.com即可访问的办法是什么样的呢?

首先修改本机的hosts文件,XP在C:\WINDOWS\system32\drivers\etc\hosts,,如下:
示例:
127.0.0.1 localhost
127.0.0.1 p.com

然后找到E:\wamp\bin\apache\Apache2.2.21\conf\extra\httpd-vhosts.conf,,添加:

<VirtualHost *:80>
ServerAdmin whidy@p.com
DocumentRoot “E:/wamp/www/phpcms/”
ServerName “p.com”
ErrorLog “E:/wamp/www/phpcms/error.log”
CustomLog “logs/dummy-host2.appservnetwork.com-access_log” common
</VirtualHost>

接着找到E:\wamp\bin\apache\Apache2.2.21\conf\httpd.conf
修改#LoadModule vhost_alias_module modules/mod_vhost_alias.so 去掉#,意思是启用apache的虚拟主机功能
以及#Include conf/extra/httpd-vhosts.conf 去掉#,意思是从conf/extra/httpd-vhosts.conf这个文件导入虚拟主机配置

最后重启服务器,试着在浏览器内输入p.com,看看是否成功了呢?

如果出现错误就继续修改E:\wamp\bin\apache\Apache2.2.21\conf\httpd.conf
此处的

Options FollowSymLinks ExecCGI Indexes
AllowOverride None
Order deny,allow
Deny from all
Satisfy all

更改为

Options FollowSymLinks ExecCGI Indexes
AllowOverride None
# Order deny,allow
# Deny from all
# Satisfy all

当然,如果你有多个站点需要用这样的方式管理,那么这里就需要通过添加端口达到目的.

例如本机IP为:192.168.1.88
那如何控制 80,81,82 来访问不同的文件目录,而达到多个站点同时访问的目的?

打开appserv的安装目录,找到httpd.conf文件,找到:
Listen 80
加入:

Listen 80
Listen 81
Listen 82

然后参照前文虚拟主机的设置方法.不同的是,这个后边的端口号按自己需求更改就成了(当然不要忘记修改hosts文件哟~).例如:

<VirtualHost *:81>
ServerAdmin whidy@whidy.net
DocumentRoot “d:/wampx64/www/whidy”
ServerName w.net
ErrorLog “logs/w-error.log”
CustomLog “logs/w-access.log” common
</VirtualHost>

好了今天就为大家讲解到这里,如有疑问,可留言或发至电邮与我讨论~

WP联系人同步技巧

Windows Phone从2010年年底发布到现在快一年半了,至于他的好坏褒贬不一,因为大陆没有行货,甚至是水货都难以购买到,使它在国内普及率相当的低,不过从配置上和流畅性来讲,作为全球领先IT公司微软开发的系统,整体感觉还是比较不错的,随着时间推移,metro UI开始广泛应用到各方面设计,WP系统逐步走近我们的生活.下面进入正题(以下内容将不包括iOS,因为我没有深入使用过该系统,不是很了解,也没有iPhone.所以讲对塞班,安卓进行简单对比.).

先来说说WP跟android在联系人管理方面的不同处,如果你是谷粉,喜欢谷歌的各种应用,并购买了android系统的手机,少不了在联网后第一时间或是买来第一次进行简单的手机配置时登录自己的谷歌账号,这样的好处就是可以同步GMAIL上的联系人,谷歌地图,谷歌纵横,日历,甚至是picasa等等.从这个时代起,同步在手机上起到了很大的作用,也带来的很大的方便,当然windows phone也不例外,经过数日的研究琢磨,我就讲一下windows phone 手机的同步技巧.

由于我前几天把WIN7删了,装的WIN8,而XP又不能使用ZUNE(貌似现在ZUNE 4.8可以,不过官方也有说明至少Xp SP3系统以上),虽然有相关解决方案,但是不想把这个系统弄坏了,也没没有装上各种组件,因此也不能手机屏幕截图了.大致说明一下吧,windows phone的联系人同步可以直接通过hotmail邮箱(MSN账号)或者是早期注册的live账号同步,如果经常用MSN的话,同步MSN联系人是不错的选择,能够同步清晰的联系人头像,非常方便,当然,如果你没有MSN的话,这个就有点麻烦了,首先联系人头像无法通过在线编辑来自定义,也就是说只能用手机上编辑联系人功能来设置联系人的头像,虽然再次与服务器同步的时候,手机上的头像无法上传至服务器,并且下次服务器上该联系人信息有修改,但是同步后的联系人头像依然存在,不过,对于没有使用过MSN的用户来说,给所有联系人设置头像可能是一间很麻烦的事情,因此,这点及其不方便,也许某一天你换了一个wp的设备或者重置了手机,需要重新同步联系人,而这些头像或许就不存在了.

WP桌面
WP桌面没有联系人头像时人脉效果

有人会说,用QQ同步助手不就可以了,不过这里我要说的是,实际上在WP7下,通过QQ同步助手同步联系人是无法像其他系统(例如塞班,安卓)直接下载服务器端联系人资料数据,不过程序也有说明,直接在WP7的人脉,设置选项中,找到添加账户,高级设置,输入QQ邮箱地址密码下一步填写腾讯提供的EXCHANGE ACTIVESYNC数据,我记得qq.com,服务器ex.qq.com,填好之后,登录即可随时保持同步.其实理论上这个是比较方便的,但是用QQ联系人同步用户头像也存在问题,有一次我在电脑上在http://pim.qq.com上编辑好了大部分用户头像,保存后,发现无法同步到手机上后,初步断定可能是图片文件太大,无法正常同步到手机上,于是决定不再使用QQ联系人同步了.

最后我还是决定使用谷歌账户进行同步,跟上面方法相同,添加账户,进行同步,这一次头像也有了,联系人什么的一切都十分正常,用别人手机打个电话试试,呃,发现这是多么大的一个模糊的人头–!其实我正想说的就是谷歌服务器上的联系人头像太小了,想想800*480的分辨率屏幕放大将近3-4倍,不过在瓷砖效果上显示还是不错的…

因此对于三个不同的同步联系人的服务器进行比较得出结论:原生的其实本应该是最好的,但是不适合大部分中国人,至少在我这个圈子里很少有人通过MSN方式保存同事,朋友的电话,而且手机联系人属性和微软服务器保持一致.除非你经常用MSN和人联络,否则不推荐使用.而腾讯的和谷歌的这个就看你个人爱好了,我想真正用谷歌的人可能也不多,不过不经常使用同步功能的用户,就自己一个个联系人慢慢编辑头像吧,其他方面这两者基本相同.纯属个人喜好来进行选择了.

再就是WP7系统联系人的手机标签只能存在一个,这点让人很无语,对于有些联系人存在两部或更多手机的话,你若是要添加几个联系方式,恐怕就只能一个手机一个住宅号码了,为什么说这样不方便,因为明明两个都是手机号码,你却只能跟有手机标签的号码发短信,而选择住宅号码发短信就很麻烦,需要另外选择,这点做的很不人性化.希望在以后的系统版本中进行改动.过几天Tango即将问世,不知道能不能有什么新的变化,让我们期待吧.

当然最后有人会说,联系人同步不就是个头像,为什么这么在意,我是因为tiles动态效果很有意思,如果只是亮度不同的颜色变化实在无趣,所以我希望能有更多的联系人头像.好了,今天关于WP7人脉就说这么多了.这几天咳嗽严重,也不知道气候变化导致还是咋回事,悲剧的唉…

android手机性能优化

话说,自从我的手机变成了悲剧版本之后,用着相当的不习惯,什么程序无响应那是经常的,更糟糕的是发热导致触摸屏(电容屏)无法工作的问题,让人实在受不了.话说电容屏因为发热而无法正常使用的问题我已经找到勉强的解决方案了,那就是按挂断键关闭屏幕,稍等片刻(快则5s,慢则1分钟以上)按menu键,就发现触摸屏可用了,如果有时候一次不行反复挂断-menu的按,基本上能解决…

当然今天要说的不是电容屏问题,是内存小了怎么办,前几天写了一篇关于G2小内存的手机增加14M内存,以及官方固件系统升级等相关优化的文章<<G2 MAGIC 归来!>>,点击查看.但是这几天用着感觉还是十分的不爽,于是我又找了大量的信息,想了许多方法,在这里与大家分享,当然此方法理论上适用于所有版本的android系统手机,因为我主要是对程序优化.具体优化方案罗列如下:

删除不必要使用的系统软件,比如gtalk,youtube,market,gmail,email等等(部分系统程序需要钛备份将其卸载),当然前提你要知道你到底用不用他.

尽量少安装一些后台会运行的程序,那些会在后台自动运行,时不时观察下进程就可以了,如果发现有后台运行的程序,关闭后又自动开启,就可以采取以下措施:
1.你的确不需要使用,那么删除即可. 
2.如果非要使用却不经常使用,比如谷歌地图,可以使用钛备份的软件功能,将程序冻结,那么它将不会在后台运行,到想用的时候解冻即可.
3. 如果经常使用,那就只好忍受他占用你的内存了–!

关闭系统自启动项目和在某些事件触发情况下自动开启的程序,利用软件autostarts关闭开机启动项,开机后自动启动项,联网后自动启动项等等,包括很多系统程序都可以禁止掉.

完成以上优化,以后在启动系统后,可以使用释放内存工具,对部分系统进程关闭,效果也很明显.

小提示:系统最好不要用动态桌面,后台程序尽量关闭,输入法的话,好用就行不必追求过新的,比如前几天我更新了新版的百度输入法,让我蛋疼了几天,受不了卸载了,没有安装回之前的版本,需求更好的输入法了,不过难啊…也不知道为什么谷歌输入法和QQ输入法都不能同步用户词库.

上面提到的内容需要用到一些工具包括钛备份,高级任务管理器,autostarts,释放内存,而部分软件是需要root才可以正常使用,关于软件这里大家可以用手机在电子市场或其他市场自行搜索,或者在各大论坛下载,关于获取权限的文章大家也可在搜索.对于内存经常不足的用户,希望能起到起帮助或者启发.

PS:对于内存相当多的人可以无视此文章.本人优化后基本多了15M-25M内存,如果我说释放的内存为原来空闲的一倍也许好听些,而且一般来说不会造成系统不稳定等等.就写这么多了.有什么问题可以留言.