DEDECMS+Js实现自定义二级联动

DEDE有现成的二级联动管理,可以添加并生成二级联动的JS代码,使用起来非常方便。
如果要实现自己的效果,可能要对联动过程做一点开发。

下面的代码实例是在二级联动的过程中,添加了一个新的字段,以保存选项的值,并在前台根据JS的值做不同的事件。

<?php
require_once(dirname(__FILE__)."/../include/common.inc.php");

//查询根节点
$dsql->SetQuery("SELECT evalue,ename from `#@__sys_enum` where egroup='center' AND evalue%500 = 0 order by disorder asc, evalue asc");
$dsql->Execute();

$enums = array();
$sort = 1 ;
while($row = $dsql->GetArray())
{
    $options .= "<option value=\"{$sort}\">{$row['ename']}</option>\r\n";
    $enums[] = $row['evalue'];
    $sort ++ ;
}


$count = count($enums);
foreach($enums as $i=>$evalue)
{
    //添加了一个名为link的字段,保存选项的跳转链接
    $dsql->SetQuery("SELECT evalue,ename,link from `#@__sys_enum` where egroup='center' AND evalue > {$evalue} AND evalue < ({$evalue} + 500) order by disorder asc, evalue asc");
    $dsql->Execute();
   
    $sort = 0 ;
    $i++;
    while($row = $dsql->GetArray())
    {
        $js .= "select2[". $i ."][{$sort}] = new Option(\"{$row['ename']}\", \"{$row['link']}\");\r\n";
        $sort++;
    }
}

$html = '
<form name="frm">
<div class="city_sch">
<h2 class="f13">选择里您最近的学习中心</h2>
<table width="190" height="128" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td height="51" align="center" valign="middle"><label>
        <select name="s1" onChange="redirec(document.frm.s1.options.selectedIndex)">
        <option selected>点击选择城市</option>
        '. $options .'
        </select>
    </label></td>
  </tr>
  <tr>
    <td height="22" align="center" valign="middle"><label>
        <select name="s2" id="s2">
         <option value="点击选择中心" selected>点击选择中心</option>
        </select>
    </label></td>
  </tr>
  <tr>
    <td height="55" align="center" valign="middle"><label>
      <input type="submit" name="button" id="button" value="马上提交" onclick="window.location=document.frm.s2.value;return false;"/>
    </label></td>
  </tr>
</table>
</div>
</form>
<script language="javascript">
var select1_len = document.frm.s1.options.length;
var select2 = new Array(select1_len);
for (i=0; i<select1_len; i++)
{
 select2[i] = new Array();
}
select2[0][0] = new Option("请选择", " ");
'. $js .'
function redirec(x)
{
 var temp = document.frm.s2; 
 for (i=0;i<select2[x].length;i++)
 {
  temp.options[i]=new Option(select2[x][i].text,select2[x][i].value);
 }
temp.options[0].selected=true;
}
</script>
';

$html = addslashes(str_replace(array("\r\n", '"'), array('', '\''), $html));
echo "document.write(\" $html \")";
?>

WordPress 3.0摘要格式错乱的修正办法

一时冲动,将本博升级到3.0了,没有在升级前测试兼容性,造成本博部分页面模板出错,其中就有摘要的显示问题。

WP把摘要中所有HMTL标记全过滤了,然后所有文字都挤到了一堆,十分难看,于是手动解决。

在wp-includes目录下找到formatting.php,定位到wp_trim_excerpt这样一个函数,修改如下:


function wp_trim_excerpt($text) {
 $raw_excerpt = $text;
 if ( '' == $text ) {
 $text = get_the_content('');

 $text = strip_shortcodes( $text );

 $text = apply_filters('the_content', $text);
 $text = str_replace(']]>', ']]&gt;', $text);
 $text = strip_tags($text, '<p><br><font><a><div><ol><ul><li><pre>');
 $excerpt_length = apply_filters('excerpt_length', 55);
 $excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
 $words = preg_split("/[\n\r\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY);
 if ( count($words) > $excerpt_length ) {
 array_pop($words);
 $text = implode(' ', $words);
 $text = $text . $excerpt_more;
 } else {
 $text = implode(' ', $words);
 }
 }
 return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
}

其中只修改了$text = strip_tags($text, '<p><br><font><a><div><ol><ul><li><pre>');这段代码。

大致意思是保留部分换行标记,如p,br等,从SEO优化考虑,如果站内链接太多,不建议保留a标记,否则会造成首页大面积导出链接,影响权重,我的博客很少手工做站内链接,所以不考虑这个问题。

根据我的实际情况,我还保留了pre标记,这样可以显示我的一些高亮codes,不然在首页和列表页就会显示一堆乱码。 继续阅读WordPress 3.0摘要格式错乱的修正办法

WordPress采集发布模块,2.8/2.9通用

此模块通用于以下版本:

  1. WordPress 2.8.x中英文版
  2. WordPress 2.9.x中英文版
  3. 其它版本未测试

此模块需要含有以下标签:

  1. [标签:标题]
    [标签:内容]
    [标签:摘要]
    [标签:关键字]
    [标签:tag]
  2. 建立规则时,请先使用智能导入,将模块听中的模块导入规则
  3. tag和关键字,使用半角逗号分隔

此模块适用于以下版本的火车采集器软件:

  1. 火车采集器2010测试版
  2. 火车采集器2008、2009版

继续阅读WordPress采集发布模块,2.8/2.9通用