不得不再次请教SEOWHY的高手了——关于DEDECMS怎么添加全站文章随机调用板块的应用
一、什么是内容管理系统?
内容发布系统也即CMS,英文全称为:Content management system,用于对企业业务数据进行组织、管理和发布,这里的内容不仅仅指文字内容,还包括、声音、视频、Flash等富媒体资源,CMS的应用极大的提高了站点的建设效率并降低了维护成本。目前市面上的CMS种类繁多,开源的内容管理系统主要有:
PHP:
国内PHPCMS,VeryCMS,DeDeCMS,EmpireCMS,HBCMS
国外:Mambo,Joomla!,XOOPS,Drupal
更多见:http://wwwphp-opencom/9htm
Java见http://wwwopen-opencom/39htm
ASP主要考察使用过风讯,对其它ASPCMS感兴趣的可以查看这篇文章
http://hibaiducom/liberty88/blog/item/56e147fbd8271a176c22eb0ehtml
商业CMS主要有:方正翔宇CMS,北方网CMS和TRS WAS,其中方正翔宇CMS在媒体行业应用非常广泛,TRS在政府部门应用非常广泛,北方网CMS在一些媒体网站中也有些应用。
就目前的总体情况来看,开源类CMS和商业类CMS还存在很大的差距,商业CMS在工作流,权限控制,内容的编采发以及系统的性能,扩展和可维护性上已经非常成熟和完善;对比开源CMS,则在这些方面存在很大的差距。由于个人觉得国外的CMS不太符合国人的使用习惯和国情,所以对他们研究的比较少也不太清楚他们在国内的应用情况,就国内的CMS而言目前也还没有看到较大规模应用的案例(如果有请告诉我),我透露几个目前已知的商业CMS内容发布系统的应用情况关键性能指标,最大数据量千万级,同时最高终端用户数500,发布时间1-2秒,每日更新1万-2万篇内容,相关内容自动更新。总之,开源CMS要走的路还长。
二、什么是动态可缓存的内容管理系统?
动态可缓存的内容管理系统是指前台页面动态解析执行并且动态解析执行的页面可被客户端和代理服务器进行缓存从而达到和生成静态页面同样的执行性能和效果的管理系统。
三、为什么使用动态可缓存的内容管理系统?
第一节面提供的内容发布系统包括商业类CMS基本都是以生成静态页面的方式进行内容发布,我们早期的系统也全部使用静态静态页面进行内容发布,在我们的实际使用过程中,生成静态页面的方式给我们带来了很多麻烦,主要有下面几个问题:
1、在设计、开发上,使用静态页面进行发布,系统需要很多额外的设计和开发,以静态页面的方式进行发布,涉及到生成规则,更新规则,发布规则等方方面面的事务,特别是当系统对内容的发布和更新有苛刻的性能要求时,这些规则更是需要进行仔细的设计和权衡。使用静态页进行发布主要是考虑到系统的执行性能,我当然同意静态页的执行性能是很高的,但是多数系统却远远大不到预想的访问量而引入了高度的系统复杂,也并非是系统一开始就有巨大的访问量,我也不认同动态执行页面就无法承受大访问量的说法,其实我看到的大多数CMS中都没有对静态页的处理规则进行很好的设计,比如:经常是在后台撤销了内容发现原始html没有删除,内容依然可以访问或者一篇内容更新时,相关引用的内容无法做到关联更新;静态发布方式并不是那样容易的,相反我觉得动态发布更容易开发和维护。
2、在系统维护上,生成的静态页面会占用很大的磁盘空间,我们所有的静态页面加起来应该有100-200个G了。这样庞大的数据量备份,恢复都是很麻烦的,无形之中给系统的运维工作增加了很大的难度,但实际上CMS有个显著的特点就是发布多,修改少,越早的数据越少被访问,应该说这100,200个G的数据中有99%以上的数据是有效期过后很少或再也没被访问过的,所以磁盘几乎是白白的被浪费了。
所以,在我们的实际使用过程中我们更倾向于动态内容执行+多重cache的方式,新的系统中我们是这样做的,最后完成的系统非常简单并在Squid的帮助下达到静态页面的执行性能。
四、如何实现动态可缓存的内容管理系统?
(可缓存的内容管理系统用户访问流程)
实现过程:
1 所有前台页面使用URL rewrite重写成html进行访问,方便搜索引擎收录。
2 WEB程序执行时,向Squid服务器发送Expires头,用于控制squid服务器的缓存时间。Expires用户设置Squid服务器和客户端的缓存时间。如:
PHP
php代码
header("Expires:" gmdate("D, d M Y H:i:s", time() + 120) "GMT"); //缓存120秒
Java
Java代码
javatextSimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
javautilCalendar cal = CalendargetInstance(new SimpleTimeZone(0, "GMT"));
formatsetCalendar(cal);
javautilDate expires = formatparse(formatformat(new Date(SystemcurrentTimeMillis() + 120 1000)));
responsesetHeader('Expires: ' + expires);
3 配置Squid服务器指向源服务器,并配置ignore-reloa来忽略no-cache和reload请求以提升Squid的命中率。
4 将最新最热的数据缓存到Memcached服务器,减少数据库的查询。
至此整个过程已经完成,早期系统的访问量一般比较小,这时候可直接将WEB服务器对外提供服务,由于CMS所管理内容发布快,修改少的特性,最新最热的内容都将在Memcached中命中;当访问量增加到一定程度的时候就可以在前端加上squid服务器,这样就实现了和静态页面一样的效果,同时也兼备了系统的可维护性和灵活性。我们的全搜索首页,母婴频道,娱乐频道使用这种方法实现获得了很好的效果。
一电脑卡的原因很多,最多是由于木马病毒破坏和垃圾文件,你可以尝试用下面的方法来解决电脑卡的问题:
1、木马病毒破坏系统文件并占用大量系统资源。
2、电脑垃圾文件没有被清理,久而久之积累过多的垃圾文件。
3、关闭随机启动的一些启动项。
4、电脑硬件需要升级,由于当今软件功能越来越高级,许多老电脑硬件达不到要求都会出现电脑卡的情况。
二给你的电脑进行优化:
1、禁用闲置的IDE通道
右键点击“我的电脑-属性”,然后点击“硬件”接着点击“设备管理器”,在其中打开“IDE ATA/PATA控制器”然后分别进入主要和次要IDE通道,选择“高级设置”,在这里找到“当前传送模式”为“不适用”的一项,将此项的“设备类型”设置为“无”。
2、优化视觉效果
右键单击“我的电脑”--“属性”—“高级”,在“性能”栏中,点击“设置”--“视觉效果”,调整为最佳性能,或只保留一些必要的项目。
3、启动和故障恢复
"我的电脑"--"属性"--"高级"--"启动和故障修复"中点击“设置”,去掉"将事件写入系统日志","发送管理警报","自动重新启动"选项;将"写入调试信息"设置为"无";点击"编辑",在弹出记事本文件中:[Operating Systems] timeout=30 把 30 秒改为 0 秒。
4、禁用错误报告
dedecmscom
"我的电脑"--"属性”--"高级”--点"错误报告”,点选“禁用错误汇报”,勾选"但在发生严重错误时通知我”--确定。
5、设置系统还原
单击“开始”--“所有程序”--“附件”--“系统工具”—“系统还原”,在系统还原界面,去掉“在所有驱动器上关闭系统工程还原”前边的勾,在“可用的驱动器”区中,选系统盘所在的分区,单击“设置”进入“系统还原设置”窗口,将“要使用的磁盘空间”调到5%或更小,“确定”返回,按上述方法将其它分区设禁用。
6、关闭自动更新
关闭自动更新具体操作为:右键单击“我的电脑”--“属性”--“自动更新”,在“通知设置”一栏选择“关闭自动更新。选出“我将手动更新计算机”一项。
7、关闭远程桌面
右键单击“我的电脑”--“属性”--“远程”,把“远程桌面”里的“允许用户远程连接到这台计算机”勾去掉。
8、禁用休眠功能
单击“开始”--“控制面板”--“电源管理”--“休眠”,将“启用休眠”前的勾去掉。
9、关闭“Internet时间同步”功能
依次单击“开始”--“控制面板”--“日期、时间、语言和区域选项”,然后单击“Internet时间”,取消“自动与Internet时间服务同步”前的勾。
10、关闭磁盘索引
打开我的电脑 ,右击驱动器,选“属性”,取消“使用索引以便快速查找文件”前面的勾。
11、禁用多余的服务组件
右键单击“我的电脑”--“管理”--“服务和应用程序”--“服务”,在右窗格将不需要的服务设为禁用或手动。
12、关闭华生医生DrWatson
单击“开始”--“运行”--输入“drwtsn32”命令,打开华生医生DrWatson 窗口,只保留“转储全部线程上下文”选项,取消其选项前边勾。
13、设置虚拟内存
虚拟内存最小值物理内存15—2倍,最大值为物理内存的2—3倍。 虚拟内存设置方法是: 右击我的电脑—属性--高级--性能设置--高级--虚拟内存更改--在驱动器列表中选中系统盘符--自定义大小--在“初始大小”和“最大值”中设定数值,然后单击“设置”按钮,最后点击“确定”按钮退出。
14、修改注册表
(1)加快开机及关机速度
在[开始]-->[运行]-->键入[Regedit]-->[HKEY_CURRENT_USER]-->[Control Panel]-->[Desktop],将字符串值[Hung要先删除,后再设置才行。
1、右击我的电脑—属性--高级--性能设置--高级--虚拟内存更改--在驱动器列表中选中你设有页面文件的盘符(D)--选“无页面文件”--“设置”,将这个盘的页面文件设置删除;
2、在驱动器列表中选中你要设有页面文件的盘符(C)--选“自定义大小”--在“初始大小”和“最大值”中输入数值--“设置”--“确定”。
AppTimeout]的数值数据更改为[200],将字符串值[WaitToKillAppTimeout]的数值数据更改为1000另外在[HKEY_LOCAL_MACHINE]-->[System]-->[CurrentControlSet]-->[Control],将字符串值[HungAppTimeout]的数值数据更改为[200],将字符串值[WaitToKillServiceTimeout]的数值数据更改1000
(2)加快预读能力改善开机速度
在[开始]-->[运行]-->键入[Regedit]-->[HKEY_LOCAL_MACHINE]-->[SYSTEM]-->[CurrentControlSet]-->[Control]-->[SessionManager]-->[MemoryManagement],在[PrefetchParameters]右边窗口,将[EnablePrefetcher]的数值数据如下更改,如使用PIII 800MHz CPU以上的建议将数值数据更改为4或5。
(3)加快宽带接入速度
家用版本:打开注册表编辑器,找到HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows,增加一个名为Psched的项,在Psched右面窗口增加一个Dword值NonBestEffortLimit数值数据为0。
(4)加快宽带网速
打开注册表编辑器,找到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip \ parameters, 右击parameters在右边空白处,选择左“新建”—>DWORD值边,将其命名为“DefaultTTL”,右击鼠标选出择“修改”,值改为 80(十六进制),或128(十进制)。
再点选左边窗格里 Tcpip 将 GlobalMaxTcpWindowSize 的值改为7FFF。
(5)加速网上邻居
打开注册表编辑器,找到HKEY_LOCAL_MACHINE/sofew
are/Microsoft/Windows/Current Version/Explore/RemoteComputer/NameSpace,删除
其下的{2227A280-3AEA-1069-A2DE08002B30309D}(打印机)和{D6277990-4C6A-11CF8D87- 00AA0060F5BF}(计划任务)。
首先这各种程序上的问题去DEDE论坛发贴更好那里毕竟
专业高手更多。第一个问题1、首页模板
\templets\default\indexhtm2、频道模板
\templets\default\index_articlehtm3、列表模板
\templets\default\list_articlehtm4、内页模板
\templets\default\article_articlehtm这几个是模板,,他说的意思
应该下面的一段代码,放在这些模板相应位子之中,你用的是博客,确定是那种程序,因为每种程序调用的标签会不同。第二个问题,自动更新,按他的意思就是后台自动生首页,配合上面那个随机调用,自动更新后就会出现不同的文章,相当于首页一直在更新,不知是不是这个意思
,具体没用过。。我个人意见没必要做这些,做站还是老实的去手动更新。而真正意义的随机调用是刷新一下就会出现不同的文章
,比如WP的博客就有这个功能,
我也遇到了这样的问题,不管是用FTP软件修改属性,或者是右键这个文件改为只读,都不行,登录后台或者刷新后台,就会自动恢复到原来的权限。
找遍了互联网都没找到解决办法,你的是哪个系统的主机啊?我的是windows2008主机。后来登录主机,找到data/commonincphp这个文件,右键——属性——安全——然后把写入权限后面的拒绝,打上勾。再刷新后台也就不提示了。不知道这样是否真正解决了问题,后来我右键这个文件夹,也改成了只读属性。保存,刷新后台,就不自动恢复了。真奇怪。我暂时就这样了。希望能帮助到你。
推荐 小猪浏览器 科技的 瞬采DEDECMS采集器。
很不错的,是一款智能的机器人软件,完全模拟人工,支持dedecms 53 5455 56 57 新闻及软件频道,内置发布接口,、附件自动采集发布本地化,无需ftp操作,简单易用,看了教程,立马就可以上手使用了。
1瞬采DEDECMS采集器,内置DEDECMS全系列 新闻、软件频道发布接口,不限制添加网站数量,轻松维护几十上百个网站;
2不绑定电脑,软件是纯绿色的,压缩包2m多,随身携带,u盘上都可以运行;
3内置300多条采集规则,智能自动识别大部分论坛和网站,采集主帖和回复、采集文章都可以,不限制被采集的网站,自己做采集规则也很简单;
4全自动 附件、本地化,无需手动ftp到网站附件文件夹;
5支持附件、自动上传到网盘,节约有限的网站空间,还能赚网盘下载费用;
6跟踪跟新采集,只要目标网站有新文章,立刻能采集发布到指定的版块,有多少抓多少,自动更新网站内容;
7支持采集论坛隐藏的帖子,会自动回复并采集下来;
8支持自动购买论坛的收费附件,实现完全无障碍采集;
9伪原创支持多国语言自动翻译;
10伪原创支持 词汇过滤、替换,支持繁体化,段落错排,删除句子等高级优化功能
……
功能太多,无法一一列举。
瞬采系列为收费版,可以试用小猪浏览器免费版,2者内核一样的!
小猪浏览器免费版适合少量的采集发布操作,免费版的功能超过市面大多数收费版的软件。
你好,根据你提的问题找到相关的解决方法,你可以参考一下
第一种:根据所在栏目ID自动判断显示所在栏目的文章数
(<span>[field:ID runphp='yes'] @me = GetTotalArc(@me);[/field:ID]</span>)第二种:指定栏目ID
{dede:sql sql="SELECT count( ID ) AS c FROM dede_archives where typeid = 栏目id "}第三种:DedeCMS栏目文章数量统计调用,栏目名称按照文章数量排列
{dede:sql sql='SELECT dtypename,did,count(daid) as heji FROM dede_arctype d left joindede_archives da on datypeid=did where dreid=0 group by dtypename order by heji desc limit 0,8;'}
<span class="text_1"><span class="count">[[field:heji/]篇]</span>
<a href="http://你的网址/plus/listphptid=[field:id/]">[field:typename/]共投递稿件</a></span><br />
{/dede:sql}
第四种: 修改include/commonfuncphp 在最后加入代码:
//统计栏目文章数function GetTotalArc($tid) {
global $dsql;
$sql = GetSonIds($tid);
$row = $dsql->GetOne("Select count(id) as dd From dede_archives where typeid in({$sql})");
return $row['dd']; }
在htm 最下方添加:
{dede:channel type='top' row='8'}
<LI>[field:typename/]
(<span>[field:ID runphp='yes'] @me = GetTotalArc(@me);[/field:ID]</span>)
</LI>
{/dede:channel}
如果想调用副栏目的数量 就是
//统计栏目文章数
function GetTotalArc($tid2){
global $dsql;
$sql = GetSonIds($tid2);
$row = $dsql->GetOne("Select count(id) as dd From dede_archives where typeid2 in({$sql})");
return $row['dd']; }
HTM页面不变 现在我们来说说动态调用栏目文章数:
动态调用主要针对当前列表页的栏目,而当前的栏目是动态的,因此可以利用type标签调用一个函数就行了。
要调用函数就得增加函数,打开include/commonfuncphp,在其中任一行(<与>的中间任一行)中加上如下函数。
function dynamic_num($current_id){global $dsql; $t_num = $dsql->GetOne("select count() as num from `dede_archives` where typeid='$current_id'");
if(is_array($t_num))
{
return "本栏目共有"$t_num[num]"篇文章"; }
else{
return "本栏目共有0篇文章" ; }
}
在列表页中这样调用:
{dede:type}[field:id function="dynamic_num(@me)" /]{/dede:type}{dede:sql sql="SELECT count( ) AS c FROM cmsxx_archives WHERE pubdate > UNIX_TIMESTAMP( CURDATE( ) ) "}
<li class="count">今日更新:<span>[field:c/]</span> 篇</li>
{/dede:sql}
{dede:sql sql="Select count(ID) as c From cmsxx_archives WHERE FROM_UNIXTIME(pubdate,'%m')=month(curdate())"}
<li class="count">当月更新:<span>[field:c/]</span> 篇</li>
{/dede:sql}
{dede:sql sql="select count() as c from cmsxx_archives}
<li class="count">共有文章:<span>[field:c/]</span> 篇</li>
{/dede:sql}
{dede:sql sql="select sum(click) as c from cmsxx_archives"}
<li class="count">总共阅读:<span>[field:c/]</span> 人次</li>
{/dede:sql}
{dede:sql sql="select count(mid) as c from cmsxx_member "}
<li class="count">共有会员:<span>[field:c/]</span> 名</li>
{/dede:sql}
还可以指定栏目ID,例如:
{dede:sql sql="select count() as c from cmsxx_archives where channel in(1,2,3,5,6,9)"}<li class="count">共有文章:<span>[field:c/]</span> 篇</li>
{/dede:sql}
希望以上方法能够帮助到你。
0条评论