‘随笔’ 分类下的所有文章
2011九月29

dede首页调用分类信息出现数字的解决办法

网站首页调用分类信息的 infotype、nativeplace等标签是,按照常规调用会出现数字,而在列表下就能正常显示:解决如下:

5.7版本下打开include/extend.func.php ,在最后边增加一个自定义函数,然后标签调用 [field:infotype function=GetInfoType(@me,'infotype')/] ,即可正常显示

//参数说明:第1个参数是从信息表里读取出来的类别ID,第2个参数是联动菜单类别
//这样这个函数就不限于只调用分类信息的信息类别了,还可以用于其它地方
function GetInfoType($tid,$bigt)
{
    global $dsql;
    $typename = ”;
    $query = “Select ename From `dede_sys_enum` where evalue=$tid and egroup=’$bigt’”;
    $dsql->Execute(‘ename’,$query);
    while($row = $dsql->GetArray(‘ename’))
    {
      $typename .= ($typename==” ? $row['ename'] : ‘,’.$row['ename']);
    }
    return $typename;
}
//—————— Add By CxChina.Com —– End ————————-

2011九月28

ie6 “无法打开站点 已终止操作”的解决

         公司网站今天访问时出现了这个问题,无论打开哪个页面,在部分ie6的电脑上都会出现“无法打开站点 已终止操作”的提示,页面显示之后立即关闭,在ie7以上版本及ff、chorme下等不会出现,刚开始以为是ie的问题,修复后不解决,于是找路由器的问题(因为我们公司用的是软路由),该关的关了,还是不解决,郁闷啊。

好吧,登陆服务器,在网站根目录下新建一个html文件,ie访问正常,于是想到可能是源代码的问题,查看源文件,发现有一个远程调用的js文件失效了,去掉之,问题解决!

2011八月9

dedecms sql语句中用php语法获取文章链接地址

     dede的万能标签sql在很多时候调用数据很方便,但是却不能直接获取到文章的静态url地址,只能在sql语句中加上php,虽然性能不高,好在只有首页生成一次,暂时能接受。语句如下:

 <li> <i> <a href=”{dede:type typeid=’264′}[field:typelink/]{/dede:type}” title=”宫颈疾病”> 宫颈 </a> </i>{dede:sql sql=”SELECT * FROM dede_archives WHERE writer = ‘小娟’ AND title LIKE ‘%宫颈%’ limit 0,1″}
<h4> <a href=’[field:id runphp='yes'] $id=@me;@me=”;$url=GetOneArchive($id);@me=$url['arcurl'];[/field:id]‘ title=”[field:title/]” target=”_blank”>[field:title function=cn_substr(@me,30,0)/]</a>  </h4>
<b> [field:pubdate function=MyDate('m-d',@me)/] </b> </li>
{/dede:sql}

2010十二月2

DeDeCMS v5.5/5.6 swfupload图片集上传图片出错的解决办法

某日,某使用DeDe CMS v5.5的网站在后台上传图片时出现如下错误:

作为web生手的我很是迷茫。印象里之前并没有做什么改动,于是百思不得其解。Google、百度、DeDe官网搜索了一大圈,发现有这个问题的人不少,但是没有一个给出解决的办法。只好自己试着分析分析……

找到提示出错的相关js文件:

/dede/handlers.js

发现有这么一段:

function uploadSuccess(file, serverData) {
 try {
  var progress = new FileProgress(file,  this.customSettings.upload_target);
  if (serverData.substring(0, 7) === “FILEID:”) {
   addImage(“swfupload.php?dopost=thumbnail&id=” + serverData.substring(7), serverData.substring(7));

   progress.setStatus(“获取缩略图…”);
   progress.toggleCancel(false);
  } else {
   addImage(“img/error.gif”, 0);
   progress.setStatus(“有错误!”);
   progress.toggleCancel(false);
   alert(serverData);

  }
 } catch (ex) {
  this.debug(ex);
 }
}

其中:

if (serverData.substring(0, 7) === “FILEID:”)

这句的判断为假导致如上图的问题。

查看serverData的值没有发现什么异常,但是判断始终为假

问题就出在serverData.substring(0, 7) 始终都不等于”FILEID:”

调整了截取边界也一样有错,于是乎,请来了HttpAnalyzer一看,哦,原来如此:

虽然这么看着没什么问题

但实际问题在这:

前面多了三个字节:ef bb bf

大致一找原来这是utf-8的bom问题,是修改文件时在文件头自动加入的这三个字节导致的连锁反应

但是那么多文件要找出是哪个文件的问题倒是有点头大……

后来找到一篇文章《转两篇 移除PHP中BOM的方法》按照其中给出的清除BOM的代码解决了这个问题

代码如下:

<?php
//remove the utf-8 boms
//by magicbug at gmail dot com

if (isset($_GET['dir'])){ //config the basedir
 $basedir=$_GET['dir'];
}else{
 $basedir = ‘.’;
}

$auto = 1;

checkdir($basedir);

function checkdir($basedir){
 if ($dh = opendir($basedir)) {
  while (($file = readdir($dh)) !== false) {
   if ($file != ‘.’ && $file != ‘..’){
    if (!is_dir($basedir.”/”.$file)) {
     echo “filename: $basedir/$file “;
     echo checkBOM(“$basedir/$file”).” <br>”;
    }else{
     $dirname = $basedir.”/”.$file;
     checkdir($dirname);
    }
   }
  }
 closedir($dh);
 }
}

function checkBOM ($filename) {
 global $auto;
 $contents = file_get_contents($filename);
 $charset[1] = substr($contents, 0, 1);
 $charset[2] = substr($contents, 1, 1);
 $charset[3] = substr($contents, 2, 1);
 if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
  if ($auto == 1) {
   $rest = substr($contents, 3);
   rewrite ($filename, $rest);
   return (“<font color=red>BOM found, automatically removed.</font>”);
  } else {
   return (“<font color=red>BOM found.</font>”);
  }
 }
 else return (“BOM Not Found.”);
}

function rewrite ($filename, $data) {
 $filenum = fopen($filename, “w”);
 flock($filenum, LOCK_EX);
 fwrite($filenum, $data);
 fclose($filenum);
}
?>保存为a.php,放在网站根目录访问下就可以了。

 ps:如果在访问a.php的时候报错如:

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted

那就试用下面的修改版检查出有bom的文件自己修改吧

<?php
//remove the utf-8 boms
//by magicbug at gmail dot com

if (isset($_GET['dir'])){ //config the basedir
 $basedir=$_GET['dir'];
}else{
 $basedir = ‘.’;
}

$auto = 1;

checkdir($basedir);
echo (“<br><br><font color=green>completed!</font><br>”);

function checkdir($basedir)
{
 if ($dh = opendir($basedir))
 {
  while (($file = readdir($dh)) !== false)
  {
   if ($file != ‘.’ && $file != ‘..’)
   {
    if (!is_dir($basedir.”/”.$file))
    {
     //echo “filename: $basedir/$file “;
     checkBOM(“$basedir/$file”);
    }
    else
    {
     $dirname = $basedir.”/”.$file;
     checkdir($dirname);
    }
   }
  }
  closedir($dh);
 }
 
}

function checkBOM ($filename) {
 global $auto;
 $contents = file_get_contents($filename,NULL,NULL,0,10);
 $charset[1] = substr($contents, 0, 1);
 $charset[2] = substr($contents, 1, 1);
 $charset[3] = substr($contents, 2, 1);
 if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
  if ($auto == 1) {
   //$rest = substr($contents, 3);
   //rewrite ($filename, $rest);
   echo ($filename.”——–”.”<font color=red>BOM found</font><br>”);
  } else {
   //return (“<font color=red>BOM found.</font>”);
  }
 }
 //else return (“BOM Not Found.”);
}

function rewrite ($filename, $data) {
 $filenum = fopen($filename, “w”);
 flock($filenum, LOCK_EX);
 fwrite($filenum, $data);
 fclose($filenum);
}
?>

2010十一月1

开博啦

  今天是11月2日,从事网络营销方面的工作已经5个年头了。

  回首这几年的工作历程,真是很感叹,短短几年,我基本上走过了网络的方方面面,亲历过每个线的每个工作环节:

  做过销售:不管在烈日炎炎的夏天还是寒风刺骨的冬天,坐半天车去拜访郊外的客户;
  做过设计:从一个色弱到独立承担门户站的整体设计;
  做过程序:从最基本的html标签到php、sql、div、css、hack;
  做过sem:管理年消费几百万的竞价账户;
  做过seo:竞争激烈的医疗行业,关键词seo到百度第一;
  做过运营:亲写商业计划书、运营模式、组建团队,投资几百万的门户网站运营;
  创业过,从销售、谈客户、设计、程序、seo、推广一个人挑,到成立自己的公司;

  ……

  其实还有很多,靠着自己对网络的渴望,靠着自己的不断学习,我一路走到今天,虽然总是熬夜、但是我还是离不开我喜欢的这个行业,扪心自问,我在运营、企划及管理方面是认真、负责的,也有了大大小小不少的“光环”。

  但静下心来细想,觉得挺可笑的,做了这么多年的网络,连一个自己的blog都没有,时常有些念头、想法、思路,但因为时间,都没有把它们变成文字。现在慢慢明白,写作的过程其实是思路的整理和升华的过程。最初下笔的时候肯定会很生涩、很痛苦,但这是化茧成蝶必经的过程。

  心动不如行动,就从今天开始吧。