广州seo
因为专注所以专业

织梦不跳转用ajax提交自定义表单的方法

qilatu阅读(149)

在做项目的过程中遇到要将form表单提交转为ajax方式提交,下面是我总结的如何把form表单提交无缝转为ajax方式提交的方法。

要将自定义表单转化为ajax方式提交,需要做以下几个改变:

  1. 将form元素的属性action、enctype、method去掉,添加id=”form”,form元素就变为<form id=”form”>
  2. 引入jquery库,点击【这里】下载
  3. 提交按钮增加 onclick=”add_ajaxmessage()” 并把 type=”submit” 修改为 type=”button” ,例如:<input type=”button” value=”提 交” onclick=”add_ajaxmessage()” />
  4. 删除原表单中的这些表格
    <input type=”hidden” name=”action” value=”post” />
    <input type=”hidden” name=”diyid” value=”1″ />
    <input type=”hidden” name=”do” value=”2″ />
    <input type=”hidden” name=”dede_fields” value=”dh,text;xy,text;nr,multitext” />
    <input type=”hidden” name=”dede_fieldshash” value=”ad50c1ee216430a63d64780d3e5e7262″ />
  5. 把ajax代码放在页面最底部(不能放在jquery库之前)
<script type="text/javascript">
function add_ajaxmessage(){
    var dataString = 
      'dh='+dh.value+ //表单的name和id值必须一致,注意:这一行最前面不能带有'&'符号
      '&yx='+yx.value+ //表单的name和id值必须一致,多个input请自行复制此行代码
      '&nr='+nr.value+ //表单的name和id值必须一致,多个input请自行复制此行代码
      '&action=post'+
      '&diyid=1&do=2&dede_fields=dh,text;yx,text;nr,multitext&dede_fieldshash=ad50c1ee216430a63d64780d3e5e7262';
    $.ajax({
        type: "POST",
        url: "/plus/diy.php",//提交到后台文件
        data: dataString,//传值
        success: function(data) {
            //$("#666").html(data);//以html的形式显示在指定id的元素里,看下面注释01
            alert(data);//显示PHP返回的值,如不需要显示,注释掉这行即可
            $('#form')[0].reset();//提交后清除id="form"的值
        }
    });
    return false;
}
</script>

注释01:#666是指定的元素的id,例如,这样后台返回的值就会以html的样式显示在id=666的div里面,(需要在php代码中把showmsg更换为echo输出,举例:echo “自定义表单不存在”;,这样就会在id=666的元素中输出红色的“自定义表单不存在”看图1。)

详解:代码中有些地方需要和你的自定义表单数值进行替换,下面我用颜色来标注进行区分,请自行替换。

ajax代码:

<script type=”text/javascript”>
function add_ajaxmessage(){
var dataString =
dh=’+dh.value+ //表单的name和id值必须一致,注意:这一行最前面不能带有’&’符号
‘&yx=’+yx.value+ //表单的name和id值必须一致,多个input请自行复制此行代码
‘&nr=’+nr.value+ //表单的name和id值必须一致,多个input请自行复制此行代码
‘&action=post‘+
‘&diyid=1&do=2&dede_fields=dh,text;yx,text;nr,multitext&dede_fieldshash=ad50c1ee216430a63d64780d3e5e7262‘;
$.ajax({
type: “POST”,
url: “/plus/diy.php“,//提交到后台文件
data: dataString,//传值
success: function(data) {
//$(“#666”).html(data);//以html的形式显示在指定id的元素里
alert(data);//显示PHP返回的值,如不需要显示,注释掉这行即可
$(‘#form’)[0].reset();//提交后清除id=”form”的值
}
});
return false;
}
</script>

表单代码(和上面的ajax代码对照并替换一致):

<form action=”/plus/diy.php” enctype=”multipart/form-data” method=”post”>
<input type=”hidden” name=”action” value=”post” />
<input type=”hidden” name=”diyid” value=”1” />
<input type=”hidden” name=”do” value=”2” />
<table style=”width:97%;” cellpadding=”0″ cellspacing=”1″>
<tr>
<td align=”right” valign=”top”>电话:</td>
<td><input type=’text’ name=’dh‘ id=’dh‘ style=’width:250px’  class=’intxt’ value=” />
</td>
</tr>
<tr>
<td align=”right” valign=”top”>邮箱:</td>
<td><input type=’text’ name=’xy‘ id=’xy‘ style=’width:250px’  class=’intxt’ value=” />
</td>
</tr>
<tr>
<td align=”right” valign=”top”>内容:</td>
<td><textarea name=’nr‘ id=’nr‘ style=’width:90%;height:80’></textarea>
</td>
</tr>
<input type=”hidden” name=”dede_fields” value=”dh,text;xy,text;nr,multitext” />
<input type=”hidden” name=”dede_fieldshash” value=”ad50c1ee216430a63d64780d3e5e7262” /></table>
<div align=’center’ style=’height:30px;padding-top:10px;’>
<input type=”submit” name=”submit” value=”提 交” class=’coolbg’ />
&nbsp;
<input type=”reset” name=”reset” value=”重 置” class=’coolbg’ />
</div>
</form>

原创文章,转载请注明: 转载自广州SEO

本文链接地址: 织梦不跳转用ajax提交自定义表单的方法

织梦dedecms 判断是否有下级栏目,有就显示所有下级栏目

qilatu阅读(596)

以下是相关标签:

标签名称:channel
功能说明:
获取栏目列表标签
使用实例:

{dede:channel type='top' row='8' currentstyle="<li><a href='~typelink~' class='thisclass'>~typename~</a> </li>"} 
 <li><a href='[field:typelink/]'>[field:typename/]</a> </li> 
{/dede:channel}

参数说明:
typeid = ‘0’ 栏目ID
reid = ‘0’ 上级栏目ID
row = ‘100’ 调用栏目数
col = ‘1’ 分多少列显示(默认为单列)
type = ‘son’ son表示下级栏目,self表示同级栏目,top顶级栏目
currentstyle = ” 应用样式

实现如下:

 

{dede:channel name='type' runphp='yes' if(reid == "0") @me = "son";else @me = "self";}
<a href='[field:typeurl/]'>[field:typename/]</a>
{/dede:channel}

 

原创文章,转载请注明: 转载自广州SEO

本文链接地址: 织梦dedecms 判断是否有下级栏目,有就显示所有下级栏目

织梦DedeCMS二次开发必用之数据库类操作

qilatu阅读(1061)

织梦DedeCMS的二次开发不仅仅是会写写织梦的标签,会制作织梦的模板。很多时候,我们需要对织梦DedeCMS的数据库进行查询、插入、删除等等之类的操作,进行这一类的操作之前,我们必须知道织梦DedeCMS的数据库类,广州SEO整理了织梦天涯版主关于DedeCMS程序的dedesql类常见的用法讲解的文章,希望有朋友用的上。

1.创建数据表

为了让讲解更加的贴合实际,天涯版主创建了一个名为”dede_test”的表,里面就2个字段,1个id,作为唯一标识,另一个name作为名称。然后往里面添加测试数据,这个操作类似于Access或者EXCEL,比较简单,这里不做冗述。

数据库

使用如下的SQL语句插入一些数据供操作使用:

INSERT INTO `dede_test` VALUES ('1', '测试名字1');
INSERT INTO `dede_test` VALUES ('2', '这是第二个');
INSERT INTO `dede_test` VALUES ('3', '第三个喽');
INSERT INTO `dede_test` VALUES ('4', '第四个');

2.连接数据库

在对织梦DedeCMS的数据库进行操作之前,当然是先连接数据库了,方法非常简单。只需要在操作的文件中引入include文件夹下面的common.inc.php文件即可。可以在网站根目录中创建一个test.php的文件来进行相关的测试操作,在这个文件中写入如下的代码:

<?php
    require_once (dirname(__FILE__) . "/include/common.inc.php");
    print_r($dsql);
?>

在浏览器中运行之后,查看源代码就可以得到如下图所示的代码:

织梦数据库操作结果1

这个就说明我们已经成功连接数据库了,[dbHost],[dbUser]…这些都是数据库的相关信息,也就是我们保存在配置文件中的\data\common.inc.php内容,引入数据库类的时候,默认就被创建了$dsql或者$db,所以直接引入配置文件就可以了。

接下来做一个简单的查询操作,接着上面的代码我们继续写test.php文件,代码如下:

<?php
      require_once (dirname(__FILE__) . "/include/common.inc.php");
      if($dsql->IsTable('dede_test')){
          //如果存在dede_test表
          //-------------------
          //|    查询一条记录 |
          //|    GetOne()     |
          //-------------------
          //        &darr;
          $row = $dsql->GetOne("SELECT * FROM dede_test WHERE id = 3");
          print_r($row);
      }
?>

这里我们用了$dsql类的2个方法,IsTable()以及GetOne(),IsTable先来判断这个表是否存在,如果存在我们就继续执行,他返回的是一个bool值,如果存在为true否则就为false。

接下来判断如果有这个表存在,则我们就执行查询单条记录的这个过程,即GetOne,通过帮助文档可以知道:$arr = $db->GetOne($sql);也就是说查询的sql语句会传送回来一个数组,我们运行test.php看到如下运行结果:

Array
(
    [id] => 3
    [name] => 第三个喽
)

这个说明我们查询dede_test这个表id为3的数据成功了,返回了一个$row数组,其中就存放了字段的值。当然我们可以用echo $row[‘name’];或者$row[‘id’]来输出我们查询出来的结果。

3.查询数据库

刚才讲了查询一条记录,其实这个查询一条记录可以理解为我们内容页查询一篇文章,只是获取单条记录并将内容显示出来,但往往我们经常遇到的是查询列表,及{dede:arclist/}或者{dede:list/},查询列表的话涉及到查询多条记录。

继续修改test.php代码:

<?php
      require_once (dirname(__FILE__) . "/include/common.inc.php");
      if($dsql->IsTable('dede_test')){
          //如果存在dede_test表
          //-------------------
          //|    查询一条记录 |
          //|    GetOne()     |
          //-------------------
          //        &darr;
          $row = $dsql->GetOne("SELECT * FROM dede_test WHERE id = 3");
          echo "查询id=3的记录:<br />显示结果:";
          print_r($row);
          //-------------------
          //|    查询多条记录 |
          //|    Execute()     |
          //-------------------
          //        &darr;
          echo "<hr />查询dede_test表中的所有记录:<br />显示结果:<br />";
          $sql = "SELECT * FROM dede_test";
            $dsql->Execute('me',$sql);
            while($arr = $dsql->GetArray('me'))
            {
                echo "id = {$arr['id']} ,name = {$arr['name']}<br />";
            }
      }
?>

运行test.php看到显示以下的内容:

查询dede_test表中的所有记录:
显示结果:
id = 1 ,name = 测试名字1
id = 2 ,name = 这是第二个
id = 3 ,name = 第三个喽
id = 4 ,name = 第四个

这个说明我们已经成功将表dede_test中的数据输出,当然主要是执行了那个”SELECT * FROM dede_test”,这是一个最简单的sql查询语句,当然也能够用到order by这些排序或者条件去查询,详细可以参考sql相关内容。

同时这里需要说明的是这里除了用$dsql->GetArray(‘me’)来获取内容到数组,还可以用$dsql->GetObject(“me”)获取内容到对象,不过调用方法有些不同,主要这里通过$dbobj->fieldname来调用查询出来的数据:

while($dbobj = $dsql->GetObject('me'))
 {
       echo "id = {$dbobj->id} ,name = {$dbobj->name}<br />";
 }

4.插入删除操作数据库

上面我们介绍了如何用dsql来查询数据,主要有获取单条记录和获取多条记录2种,接下来我们来了解下使用dsql其他特性来为我们的test.php加入添加内容和删除内容的功能。先来了解下插入数据库的操作,我们先做一个表单,这个表单用于提交数据name的。表单代码如下:

<hr />
用于提交数据的表单:<br />
<form action="test.php" type="post">
    <input type="hidden" name="dopost" value=http://blog.qilatu.com/jiaocheng/"save">
    名称:
    

这里我们用了一个隐藏域dopost来存放操作方法,输入框name用来存放输入数据,然后传递给当前页面,再进行处理,这时候我们需要在test.php中加入部分的表单处理操作:

//-------------------
//|    表单处理过程 |
//|    Save()     |
//-------------------
//        &darr;
empty($dopost)? "" : $dopost;
if($dopost == "save"){
    //如果执行插入操作
    $sql = "INSERT INTO `dede_test` (`name`) VALUES ('{$name}')";
    $dsql->ExecuteNoneQuery($sql); //执行这个插入语句
    $lastInsertID = $dsql->GetLastID(); //获取插入后的最后的ID,然后再传给下一个页面
    ShowMsg("成功增加一条记录内容!","test.php?id={$lastInsertID}");
    exit();
}

这里主要是一个INSERT INTO 语句,然后通过$dsql的ExecuteNoneQuery方法来执行这个操作,并且获取插入数据最后一个id再将其传递给下一个页面以便高亮显示。我们可以在编辑框中插入一条数据来测试下,看看插入数据后的返回结果:

织梦数据库操作结果2

其实删除的操作也是如此,我们只需要稍微做个修改就可以了,增加一个dopost操作为del的判断,然后在显示数据后面增加一个超链接,将id以get方式进行传递.并最后进行处理。下面是我们修改循环查询输出的部分内容,有如下修改:

while($dbobj = $dsql->GetObject('me'))
{
    if($id==$dbobj->id){
      //如果传递的id值和查询值相同,则高亮显示最后一条插入记录
        echo "<font color='red'>id = {$dbobj->id} ,name = {$dbobj->name}</font> <a href=http://blog.qilatu.com/jiaocheng/'test.php?dopost=del&id={$dbobj->id}'>[删除]    
";//这里增加了一个删除的超链接
    }else{
        echo "id = {$dbobj->id} ,name = {$dbobj->name} [删除]
";
    }
}
//下面是del这个post的判断:
empty($dopost)? "" : $dopost;
if($dopost == "save"){
  //如果执行插入操作
  $sql = "INSERT INTO `dede_test` (`name`) VALUES ('{$name}')";
  $dsql->ExecuteNoneQuery($sql);
  $lastInsertID = $dsql->GetLastID();
  ShowMsg("成功增加一条记录内容!","test.php?id={$lastInsertID}");
  exit();
}elseif($dopost == "del"){
  //如果dopost为del,则删除数据
  $id = isset($id) && is_numeric($id) ? $id : 0;
  $sql = "DELETE FROM `dede_test` WHERE (`id`='{$id}')";
  $dsql->ExecuteNoneQuery($sql);
  ShowMsg("成功删除一条记录内容!","test.php");
  exit();
}

以上就是织梦DedeCMS数据库类操作的全部过程,如果有不明白的地方,可以去查看天涯版主的原文,原文的地址如下:http://www.dedecms.com/help/development/2009/1028/1076.html。

原创文章,转载请注明: 转载自广州SEO

本文链接地址: 织梦DedeCMS二次开发必用之数据库类操作

DedeCMS搜索结果页面调用自定义字段的方法

qilatu阅读(898)

有时候在我们需要在dedecms的搜索结果页面调用自定义字段,尤其是在做下载站的时候,需要在搜索结果页调用软件大小以及软件等级等等,但是我们发现在搜索结果页模板中使用“[field:字段名]”标签无法正确调用,就算添加了列表附加字段也不行。
这里,广州SEO就教大家如何在搜索结果页调用自定义字段,具体方法及步骤如下:
找到并打开include目录下的extend.func.php文件,在文件末尾添加如下代码:

1 function Search_addfields($id,$result){
2 global $dsql; 
3 $dedejs = $dsql->GetOne("SELECT * FROM `dede_addonsoft` where aid='$id'");
4 $name=$dedejs[$result];
5 return $name;
6 }

其中addosoft是要调用自定义字段的附加表,在织梦后台核心->频道模型->内容模型管理可以看到,软件模型一般是addonsoft,普通文章一般是 addonarticle,这个根据具体的需要来更改,其他的不用修改。

接下来找到并打开 include目录下的arc.searchview.class.php文件,搜索“ //处理一些特殊字段”,在下面添加如下代码:

$row[“softsize”]=Search_addfields($row[“id”],”softsize”);

其中的softsize是软件大小的字段名,如果有多个自定义字段则添加多行,但是一定要把softsize修改成字段名。添加之后就完成了,最后一步就是在搜索模板也调用了,在search.htm中 使用[field:softsize/]标签 就可以调用出来软件大小了。

原创文章,转载请注明: 转载自广州SEO

本文链接地址: DedeCMS搜索结果页面调用自定义字段的方法

dedecms channelArtlist指定单个栏目显示

qilatu阅读(799)

手上的某个功能需要到这样的做法,现在有一个怪异的方法可以成功调用:一般以为使用{dede:channelartlist typeid=’2′}就可以调用id为2的栏目了,实际上,要写成{dede:channelartlist typeid=’2,2′}才有效。
参考以下,就可以调用栏目2了:
<div class=”listbox”>
{dede:channelartlist typeid=’2,2′}
<dl class=”tbox”>
<dt><strong><a href=”{dede:field name=’typeurl’/}”>{dede:field name=’typename’/}</a></strong><span class=”more”><a href=”{dede:field name=’typeurl’/}”>更多…</a></span></dt>
<dd>
<ul class=”d1 ico3″>
{dede:arclist titlelen=’60’ row=’8′}
<li><span>[field:pubdate function=”MyDate(‘m-d’,@me)”/]</span><a href=”[field:arcurl /]”>[field:title /]</a></li>
{/dede:arclist}
</ul>
</dd>
</dl>
{/dede:channelartlist}
</div>
<!– /listbox –>

原创文章,转载请注明: 转载自广州SEO

本文链接地址: dedecms channelArtlist指定单个栏目显示

dedecms使用channelartlist在列表页和内容页调用同级栏目的方法

qilatu阅读(892)

使用dede时,想在列表页和内容页调用同级栏目的文章,当然可以使用{dede:channelartlist typeid=‘1’ row=’5′}的方法,指定栏目id,但是要自动判断当前栏目的同级栏目就没办法了或者需要给每个顶级栏目分配一个模板,这样很麻烦。本文将给一种更简单的办法

找到\include\taglib\channelartlist.lib.php 文件

查找: $attlist = ‘typeid|0,row|20,cacheid|’;

修改为:$attlist = ‘typeid|0,row|20,cacheid|,type|’;     //这边加个 type 实现 在子栏目下调用   同级子栏目的信息

然后查找:

if($typeid==0 || $typeid==’top’) {
$tpsql = ” reid=0 AND ispart<>2 AND ishidden<>1 AND channeltype>0 “;
}

修改为:

if($type==’reid’)    //调用上级目录下的子栏目内容
{
$reid = $refObj->TypeLink->TypeInfos[‘reid’];
$tpsql = ” reid=’$reid’ AND ispart<>2 AND ishidden<>1 “;
}
else if($typeid==0 || $typeid==’top’) {
$tpsql = ” reid=0 AND ispart<>2 AND ishidden<>1 AND channeltype>0 “;
}

保存上面文件。然后在列表页或者内容页使用
{dede:channelartlist type=’reid’ row=’5′}
底层循环代码
{/dede:channelartlist}  就可以方便调用了。

原创文章,转载请注明: 转载自广州SEO

本文链接地址: dedecms使用channelartlist在列表页和内容页调用同级栏目的方法

DEDECMS系统安全篇之移data目录到Web根目录以外详细方法

qilatu阅读(972)

  1. 首先,要明确文件夹放在什么地方是最安全又不影响访问。最好的建议是放在服务器程序文件夹根目录的上级目录,即是Web可访问目录之外。这里以本地根目录为例:D:\xampp\htdocs,文件夹htdocs是站点的根目录。

    DEDECMS系统安全篇之移data目录到Web根目录以外
  2. 2

    移动最简单的方式就是剪切文件夹再粘贴。如图所示,data已移到与htdocs文件夹同一目录了。

    DEDECMS系统安全篇之移data目录到Web根目录以外
  3. 3

    此时再访问后台的主页是访问不了的。原因是data就是放置后台页面基本配置文件和缓存数据的。那怎么办?很简单,重新在配置文件里重新配置data的路径就可以了。其实移动data文件夹,对整个系统影响很多地方。以下会谈到的。

    DEDECMS系统安全篇之移data目录到Web根目录以外
  4. 4

    找到系统目录下/include/common.inc.php文件,如图所示。然后用记事本打开,查找:“define(‘DEDEDATA’, DEDEROOT.’/data’);”这行代码。所图所示。

    DEDECMS系统安全篇之移data目录到Web根目录以外
    DEDECMS系统安全篇之移data目录到Web根目录以外
  5. 5

    将代码修改为:define(‘DEDEDATA’, DEDEROOT.’/../data’);

    保存即可。

    DEDECMS系统安全篇之移data目录到Web根目录以外
  6. 6

    然后再刷新后台的主页面:http://你的网站地址/dedetest/index.php#,其中的dedetest是原系统dede文件夹,为了安全之前已经修改了。(详见

    织梦dedeCMS系统安全篇之修改默认后台管理目录

    ),刷新后又可正常访问了。

    DEDECMS系统安全篇之移data目录到Web根目录以外
  7. 7

    除了要在共同文件中修改common.inc.php的配置外,还要在配置tplcache缓存文件目录。因为前面说了,data目录主要是基本配置文件和缓存数据的文件夹。修改成:/../data/tplcache

    DEDECMS系统安全篇之移data目录到Web根目录以外
  8. 8

    修改完成后,别以为就完成了,如果此时你访问网站主页,会发现会自动跳转到这个地址:http://localhost/install/index.php ,对啊,就是跳转到安装文件了。那咋办呢?

    DEDECMS系统安全篇之移data目录到Web根目录以外
  9. 9

    请打开网站根目录下的index.php,注意事先先做好备份文件。以便恢复。找到如图所示代码,并修改成:

    if(!file_exists(dirname(__FILE__).’/../data/common.inc.php’))

    {

    header(‘Location:install/index.php’);

    exit();

    }

    DEDECMS系统安全篇之移data目录到Web根目录以外
  10. 10

    保存再刷新主页,(刷新主页,不是刷新跳转的安装文件啊。)或者你直接从后台点击如图所示就可以了。就可以解决这个问题了。

    DEDECMS系统安全篇之移data目录到Web根目录以外
  11. 11

    其实移data目录到Web根目录以外之后,还有一些地方要修改的,由于编幅和时间所限,请大家多多关注,以后将会慢慢更新并完善。谢谢!

     

原创文章,转载请注明: 转载自广州SEO

本文链接地址: DEDECMS系统安全篇之移data目录到Web根目录以外详细方法

教你如何修改DedeCms验证码的样式

qilatu阅读(786)

修改文件 验证码文件位置
include\vdimgck.php
找到
for($i=0;$i<4;$i )
{
$rndstring .= chr(mt_rand(65,90));
}
改成
for($i=0;$i<4;$i )
{
$rndstring .= chr(mt_rand(48,57));
}
这个函数是产生随机字符,看见里面的数字没有,它就是要产生字符键盘码的范围,原来的是
mt_rand(65,90),这个65到90是大写字母A到Z的键盘码。
现在修改为(48,57) 表示0到9的键盘码:mt_rand(48,57)。
按照这个理论,估计能产生中文吧。

还有这个文件里面的
$bgcolor = ImageColorAllocate($im, 248,212,20);
$black = ImageColorAllocate($im, 0,0,0);
是设定生成图片的背景颜色和文字颜色的。三个数字表示 颜色的 红,绿,蓝色值。范围为0到255,
比如
0,0,0 表示 黑色,
255,0,0 表示纯红,
0,255,0 表示纯绿,
0,0,255 表示纯蓝。
255.255.255 表示白。

原创文章,转载请注明: 转载自广州SEO

本文链接地址: 教你如何修改DedeCms验证码的样式

Dede自定义搜索结果页显示自定义字段

qilatu阅读(827)

如果通过“内容模型管理 > 自定义搜索”搜索的结果页如果要显示自定义字段,可使用以下方法:
1。修改puls/advancedsearch.php文件,找到
$query = “select arctype.* FROM $addontable addon
  left join dede2_arctype arctype on arctype.id=addon.typeid
  $where $orderby”;
 } else {
  $query = “select main.id as aid,main.*,main.description as description1, type.*
 from $maintable main
 left join dede2_arctype type on type.id=main.typeid
 left join $addontable addon on addon.aid=main.id
 $where  $orderby”;
2.在select后面增加”addon.*,”
修改后应该是
$query = “select addon.*, arctype.* from $addontable addon
  left join dede2_arctype arctype on arctype.id=addon.typeid
  $where $orderby”;
 } else {
  $query = “select addon.*,main.id as aid,main.*,main.description as description1, type.*
 from $maintable main
 left join dede2_arctype type on type.id=main.typeid
 left join $addontable addon on addon.aid=main.id
 $where  $orderby”;
注意,有两个地方要加,上述标红的地方。测试成功。实站仿站绝对成功
显示结果要修改模板文件,在plus/advancedsearch.htm,{dede:datalist}中直接调用{dede:field.字段名称/}就OK了

原创文章,转载请注明: 转载自广州SEO

本文链接地址: Dede自定义搜索结果页显示自定义字段

利用织梦高级搜索功能 , 来定制线上授权信息查询系统

qilatu阅读(1584)

织梦默认的高级搜索,就是这个页面/plus/advancedsearch.PHP,他是模糊搜索.而且会出现多条结果,需要修改为单条信息搜索.

后台,核心,模型管理,在原模型或新建立的模型中,增加字段.比如增加身份证字段.

然后返回模型管理,找到模型后面的放大镜图标,点击一下.如下图.

20160910222253105

下面模板选择,默认是利用官方默认模板中的advancedsearch.htm 模板

20160910222318184

 

点击确定后,就会自动出现搜索代码.

 

还需要修改plus/advancedsearch.php 这个文件.

大约在142行. 如下为修改后的效果.就是把模糊查询为精准查询.并增加一个不为空的判断.

 if(isset(${$var}) && trim(${$var})!='')
            {
                ${$var} = stripslashes(${$var});
                ${$var} = preg_replace("#[\|\"\r\n\t%\*\?\(\)\$;,'%<>]#", "", trim(${$var}));
                ${$var} = addslashes(${$var});
                //$where .= " AND addon.$var LIKE '%${$var}%'";
				$where .= " AND addon.$var = '${$var}'";
            }
			else{
			ShowMsg('身份证不能为空,或输入不正确',-1,0);exit;}

向下.

在下面这几行的下面增加.

else
{
    $sql = urldecode($sql);
    $query = $sql;
}

增加如下代码,下面是修改后的效果

else
{
    $sql = urldecode($sql);
    $query = $sql;
}
//print_r($sql);exit;
$searchinfo2 = $dsql->GetOne($sql);
if(!is_array($searchinfo2))
{
    showmsg('查询的授权信息不存在,请检查输入','-1');
    exit();
}

如果模板上不显示自定义字段,可以参考这篇文章:dede自定义搜索结果页显示自定义字段

原创文章,转载请注明: 转载自广州SEO

本文链接地址: 利用织梦高级搜索功能 , 来定制线上授权信息查询系统

DEDECMS列表页只要上一页下一页纯URL的完美处理方式

qilatu阅读(984)

因为做手机要做自动加载更多,AJAX技术需要用到列表页的下一页链接URL,网上这方面的资料确实比较少,现在把正确能调用出结果的方法公布出来,希望大家能少走弯路!其实很简单,就几点!以红色字体的操作为准!做下来之后调用结果就显示了!

因为我们只要调用出地址就好了,其它的路径我们最好在模板上加,不要随便在PHP页面加,这方便多站点好管理!

当然,像www.qilatu.com/tag.html?广州SEO  这种伪静态列表我们也是同样的道理的,主要修改文件是:/include/arc.taglist.class.php  这个文件,在这里自定义的变量可能用不了,可以用next输出,修改对应代码即可! {dede:pagelist listitem=”index,pageno,end,” listsize=”5″/}   后面输出列表样式!

效果: <link rel=’next’ href=’ http://www.qilatu.com{dede:type }[field:typelink /]{/dede:type}{dede:pagelist listitem=downpage /}’ />

我们就可以得出

http://www.qilatu.com/html/xxxx/list_2_2.html

模板中以

复制代码代码如下:

{dede:pagelist listitem=up/}

{dede:pagelist listitem=down/}

来调用。

在include\arc.listview.class.php

找到:

/**

*  获取静态的分页列表

*

* @access    public

* @param     string  $list_len  列表宽度

* @param     string  $list_len  列表样式

* @return    string

*/

function GetPageListST($list_len,$listitem=”index,end,pre,next,pageno”)

{

$prepage = $nextpage = ”;

$prepagenum = $this->PageNo-1;

$nextpagenum = $this->PageNo+1;

if($list_len==” || preg_match(“/[^0-9]/”, $list_len))

{

$list_len=3;

}

$totalpage = ceil($this->TotalResult/$this->PageSize);

if($totalpage<=1 && $this->TotalResult>0)

{

//return “<li><span >共 <strong>1</strong>页<strong></li>”;

// return “<li><span class=\”pageinfo\”>共 <strong>1</strong>页<strong>”.$this->TotalResult.”</strong>条记录</span></li>\r\n”;

}

if($this->TotalResult == 0)

{

//return “<li><span class=\”pageinfo\”>共 <strong>0</strong>页<strong>”.$this->TotalResult.”</strong>条记录</span></li>\r\n”;

}

$purl = $this->GetCurUrl();

// $maininfo = “<li><span class=\”pageinfo\”>共 <strong>{$totalpage}</strong>页<strong>”.$this->TotalResult.”</strong>条</span></li>\r\n”;

$tnamerule = $this->GetMakeFileRule($this->Fields[‘id’],”list”,$this->Fields[‘typedir’],$this->Fields[‘defaultname’],$this->Fields[‘namerule2’]);

$tnamerule = preg_replace(“/^(.*)\//”, ”, $tnamerule);

//获得上一页和主页的链接

if($this->PageNo != 1){

$prepage.=”<li>上一页</li>”;

$indexpage=”<li>首页</li>”;

$uppage.=str_replace(“{page}”,$prepagenum,$tnamerule);    //加上对应的代码

}

else

{

$indexpage=”<li>首页</li>”;

$uppage.=”<a>第一页</a>”;

}

//下一页,未页的链接

if($this->PageNo!=$totalpage && $totalpage>1)

{

$nextpage.=”<li><a href='”.str_replace(“{page}”,$nextpagenum,$tnamerule).”‘>下一页</a></li>”;

$endpage=”<li><a href='”.str_replace(“{page}”,$totalpage,$tnamerule).”‘>末页</a></li>”;

        $downpage.=str_replace(“{page}”,$nextpagenum,$tnamerule); //加上对应的代码

}

else

{

$endpage=”<li>末页<li>”;

//$downpage.=”<a>最后一页</a>”;

}

复制代码代码如下:$plist = ”;

if(preg_match(‘/up/i’, $listitem)) $plist .= $uppage;   //加上对应的代码

if(preg_match(‘/down/i’, $listitem)) $plist .= $downpage;   //加上对应的代码

if(preg_match(‘/index/i’, $listitem)) $plist .= $indexpage;

if(preg_match(‘/pre/i’, $listitem)) $plist .= $prepage;

if(preg_match(‘/pageno/i’, $listitem)) $plist .= $listdd;

if(preg_match(‘/next/i’, $listitem)) $plist .= $nextpage;

if(preg_match(‘/end/i’, $listitem)) $plist .= $endpage;

if(preg_match(‘/option/i’, $listitem)) $plist .= $optionlist;

if(preg_match(‘/info/i’, $listitem)) $plist .= $maininfo;

原创文章,转载请注明: 转载自广州SEO

本文链接地址: DEDECMS列表页只要上一页下一页纯URL的完美处理方式

dedecms织梦去掉编辑器图片的style样式宽度和高度

qilatu阅读(1827)

在做响应式的织梦模板时,经常会遇到图片无法自适应的问题,原因是织梦的编辑器在上传图片时,会自动加上style属性,因此,在保存文章时,我们需要先清除掉这些属性
在dede/article_add.php和article_edit.php中搜索如下代码:
$body = AnalyseHtmlBody($body,$description,$litpic,$keywords,’htmltext’);
在这句代码的下面插入如下代码:
方案一(会将所有的style样式全部清空,这样在编辑器设置文字居中就不管用了):
//去除img中的style属性 (这行代码,会将所有的style样式全部清空,这样在编辑器设置文字居中就不管用了)
$body = preg_replace(“/style=\\\.+?[‘|\”]/i”,”,$body);
//去除img中的width,height属性
$exp=Array(“/height=.{0,5}\s/i”,”/width=.{0,5}\s/i”); $exp_o=Array(”,”); $body = preg_replace($exp,$exp_o,$body);
方案二(将所有的style样式换成class=”text-center” 这样在编辑器设置文字就可以居中了):
//去除img中的style属性 (这行代码,会将所有的style样式换成class=”text-center” 这样在编辑器设置文字就可以居中了)
$body = preg_replace(“/style=\\\.+?[‘|\”]/i”,’class=”text-center”‘,$body);
//去除img中的width,height属性
$exp=Array(“/height=.{0,5}\s/i”,”/width=.{0,5}\s/i”); $exp_o=Array(”,”); $body = preg_replace($exp,$exp_o,$body);

原创文章,转载请注明: 转载自广州SEO

本文链接地址: dedecms织梦去掉编辑器图片的style样式宽度和高度

DEDECMS织梦中str_replace函数多次替换内容

qilatu阅读(1039)

手上的项目个别功能需要到这个做法,在网上找了一阵子,解决了目前的问题。在这里做一下记录,方法其实很简单,只需要用到数组就可以解决!

[field:picname function=”str_replace(array(‘_’,’/uploads/allimg/’),array(”,’http://img1.qilatu.com/’),thumb(@me,360,290))” /]”

网上找到的资料如下:

大家也可以根据自己的功能来演变!
1、只对needle使用数组。

示例:str_replace(array(‘m’,’i’),’n’,”my name is jim!”);返回:ny nane ns jnn!
可以看出,函数顺序性的对数组中每个字符串进行替换,并返回替换后的字符串。

2、只对new_needle使用数组。

示例:str_replace(‘m’,array(‘n’,’z’),”my name is jim!\n”)返回:Arrayy naArraye is jiArray!
该替换比较有意思,如果只对第二个参数使用数组则函数将其作为字符串Array进行使用,将所有的needle替换为了数组。

3、只对haystack使用数组。

示例:str_replace(“m”,”n”,array(“my name is jim!”,”the game is over!”))该语句执行结果返回一个数组,即分别为传入的两个字符串替换后的结果。
如果输出数组内容会看到:ny nane is jin! the gane is over!

4、对needle和new_needle都使用数组。

示例:str_replace(array(“m”,”i”),array(“n”,”z”),”my name is jim!”)返回:ny nane zs jzn!
查看执行结果可以发现,如果前两个参数都使用数组则函数把数组各个对象项字符串进行了替换,及needle的第一项替换为new_needle的第一项。以此类推。

如果needle数组比new_deedle长,例如:str_replace(array(“m”,”i”,”s”),array(“n”,”z”),”my name is jim!”);返回:ny nane z jzn!可见,对于needle数组多出来的字符串被替换为了空串。
如果new_needle数组比needle长,例如:str_replace(array(“m”,”i”),array(“n”,”z”,”x”),”my name is jim!”)返回ny nane zs jzn!可见new_needle多余的项被忽略。

5、三个参数都使用数组。

例如:str_replace(array(“m”,”i”),array(“n”,”z”),array(“my name is jim!”,”the game is over”))返回的数组内容:ny nane zs jzn!the gane zs over
这个比较好理解,对两个字符串分别执行替换。

原创文章,转载请注明: 转载自广州SEO

本文链接地址: DEDECMS织梦中str_replace函数多次替换内容

dedecms织梦如何给文章页图片加上data-original图片延时加载功能

qilatu阅读(2944)

我们在首页,栏目页,列表页都可以很容易加上相对应的属性,但是在文章页中所有内容都是在编辑器中,我们可以换个思路,替换一下编辑器中的内容就可以达到我们想要的效果,以下是广州SEO对自己手上的项目自己按自己的功能找出来的办法,如有转载请注明出处,原创文章不易!谢谢!下面把方法分享出来,希望可以帮助到需要这种效果的朋友!

修改目录include下的文件extend.func.php,在最后面添加一个函数方法
function replaceurl($newurl)
{
$newurl=str_replace(‘src=’,’class=”lazy” data-original=’,$newurl);
return $newurl;
}
另外调用文章正文内容的标签{dede:field.body/}
需要改成: {dede:field.body function=’replaceurl(@me)’/}

然后在文章区域中添加好JS,这就成了我们想要的效果!

<script src=”http://img.qilatu.com/static/js/jquery.lazyload.js”></script>
<script type=”text/javascript” charset=”utf-8″>

$(function() {

$(“img.lazy”).lazyload({effect: “fadeIn”});

});

</script>

原创文章,转载请注明: 转载自广州SEO

本文链接地址: dedecms织梦如何给文章页图片加上data-original图片延时加载功能

DedeCMS织梦模板中用彩色tag做彩色关键词

qilatu阅读(547)

DedeCMS模板中用彩色tag做彩色关键词,下面分享一下吧!

注意:复制代码如有不正常输出请注意把半角符号改为全角符号!

修改方法:

1、在/include/common.func.php 中加入如下函数:

function getTagStyle()
{
$minFontSize=8; //最小字体大小,可根据需要自行更改
$maxFontSize=18; //最大字体大小,可根据需要自行更改
return ‘font-size:.($minFontSize+lcg_value()*(abs($maxFontSize-$minFontSize))).’px;color:#’.dechex(rand(0,255)).dechex(rand(0,196)).dechex(rand(0,255));
}

此函数的作用是输出随机的样式,包括font-size和color。

如果你想指定只显示几个字体大小,而不是完全随机,请将上面的函数代码修改为:

function getTagStyle()
{
$sizearray = array(8,9,10,11,12,20); //自定义字体大小,可根据需要自行修改
return ‘font-size:.$sizearray[rand(0,count($sizearray))].’pt;color:#’.dechex(rand(0,255)).dechex(rand(0,196)).dechex(rand(0,255));
}

2、在模板中用如下代码调用标签

{dede:tag row=45′ getall=1′ sort=’hot’}
<a href=[field:link/]‘ title=[field:tag /]([field:total /])” style=[field:total runphp=yes]@me=getTagStyle();[/field:total]“>[field:tag /]</a>
{/dede:tag}

上面的这个是调用热门tag的,我在这里修改一下换成搜索关键词

{dede:tag row=45′ getall=1′ sort=’hot’}
<a href=/plus/search.php?keyword=[field:tag /]‘ title=[field:tag /]([field:total /])” style=[field:total runphp=yes]@me=getTagStyle();[/field:total]“>[field:tag /]</a>
{/dede:tag}

3、在dede后台生成相应html,OK,看效果吧。

原创文章,转载请注明: 转载自广州SEO

本文链接地址: DedeCMS织梦模板中用彩色tag做彩色关键词

dedecms织梦tag标签页 搜索页分页样式的修改

qilatu阅读(755)

  本人最近用织梦建站时遇到一个问题,我将文章列表页的模板直接复制到搜索页上,但是搜索页分页列表的样式却跟文章列表页的不一样,而网站找到的资料都是说文章列表页修改分页样式的方法,而没有修改其他页面分页样式的修改方法。多数对dede织梦不是很熟的建站新手可能都会跟我有同样的错误想法,以为既然都是列表分页,按理说同样的标签调用会达到同样的效果才对,其实不是的,文章列表页、tag标签页、搜索页,这三个页面的分页列表样式源码是放在不同的三个文件里面的,文章列表页修改样式文件网络上有很多,就是/include文件夹下面的arc.listview.class.php文件,修改其他两个分页样式的文件同样也是在/include文件夹下,tag标签页对应arc.taghtml.class.php文件,搜索页对应arc.searchview.class.php文件。
  默认的文章列表页跟tag标签页分页样式是一样的,如下图所示:
dede织梦tag标签页、搜索页分页样式的修改
  所以修改起来也比较简单,只要对应的两个文件改成对应的样式即可,通常都是去<li>之类的。
  而默认的搜索页分页样式就比较复杂,里面加了很多冗余代码,生成后会初夏下面这段代码:
<table border=’0′ cellpadding=’0′ cellspacing=’0′>
<tr align=’center’ style=’font-size:10pt’>
<form name=’pagelist’ action=’/plus/search.php’><input type=’hidden’ name=’keyword’ value=”>
<input type=’hidden’ name=’channeltype’ value=’0′>
<input type=’hidden’ name=’orderby’ value=”>
<input type=’hidden’ name=’kwtype’ value=’0′>
<input type=’hidden’ name=’pagesize’ value=’10’>
<input type=’hidden’ name=’typeid’ value=’0′>
<input type=’hidden’ name=’TotalResult’ value=’57’> <td>共找到<b>57</b>条记录/最大显示<b>6</b>页 </td>
<td width=’30’>首页</td>
<td>1&nbsp;</td>
<td>1&nbsp;</td>

像table完全是不必要存在的,而且对seo也不利,那么怎么办呢?可以在arc.searchview.class.php文件中找到以下几行代码,删掉“<>”方括号及里面的内容即可,

        $geturl = “keyword=”.urlencode($oldkeyword).”&searchtype=”.$this->SearchType;
        $hidenform = “<input type=’hidden’ name=’keyword’ value='”.rawurldecode($oldkeyword).”‘>\r\n”;
        $geturl .= “&channeltype=”.$this->ChannelType.”&orderby=”.$this->OrderBy;
        $hidenform .= “<input type=’hidden’ name=’channeltype’ value='”.$this->ChannelType.”‘>\r\n”;
        $hidenform .= “<input type=’hidden’ name=’orderby’ value='”.$this->OrderBy.”‘>\r\n”;
        $geturl .= “&kwtype=”.$this->KType.”&pagesize=”.$this->PageSize;
        $hidenform .= “<input type=’hidden’ name=’kwtype’ value='”.$this->KType.”‘>\r\n”;
        $hidenform .= “<input type=’hidden’ name=’pagesize’ value='”.$this->PageSize.”‘>\r\n”;
        $geturl .= “&typeid=”.$this->TypeID.”&TotalResult=”.$this->TotalResult.”&”;
        $hidenform .= “<input type=’hidden’ name=’typeid’ value='”.$this->TypeID.”‘>\r\n”;
        $hidenform .= “<input type=’hidden’ name=’TotalResult’ value='”.$this->TotalResult.”‘>\r\n”;
  除此之外,还要删除样式中带有表格信息的代码如:<td width=’50’>、<table border=’0′ cellpadding=’0′ cellspacing=’0′>、<tr align=’center’ style=’font-size:10pt’>、<form name=’pagelist’ action='”.$this->GetCurUrl().”‘>等,别忘了这些代码都是成对出现的哦,别删了前面后面忘了删。
  至此,大致的样式已经清除干净了,其它的地方也就跟修改文章列表页的分页样式差不多。

原创文章,转载请注明: 转载自广州SEO

本文链接地址: dedecms织梦tag标签页 搜索页分页样式的修改

DedeCMS织梦文章内容图片绝对路径修改方法

qilatu阅读(688)

手上做了公司的改版,因为公司使用的图片比较大,我采用了图片加速处理,我要把缩略图,文章图片都放到第三方平台,让他们处理,这样自己的服务器会减少不小的压力。下面的方法完美实现了我想要的效果,现放出来给大家,一起交流!
使用下面的方法亲测可用:

一、在内容文章页调用
修改目录include下的文件extend.func.php,在最后面添加一个函数方法
function replaceurl($newurl)
{
$newurl=str_replace(‘src=”/uploads/allimg/’,’src=”http://img.qilatu.com/’,$newurl);
return $newurl;
}
另外调用文章正文内容的标签{dede:field.body/}
需要改成: {dede:field.body function=’replaceurl(@me)’/}

此方法可以适用于任何调用绝对路径图片的页面。

二、在首页或者列表标签下调用

在列表标签下调用其实也很简单,我调用了替换函数,手动处理哪些需要给第三方平台处理的图片,直接调用就可以了。有些图片我们需要放在服务上的我们就可以自由调换。

[field:picname function=”str_replace(‘/uploads/allimg/’,’http://img.qilatu.com/’,thumb(@me,353,290))” /]” width=”353″ height=”290″ alt=”[field:fulltitle/]

注间:thumb函数在前面文章我有提过,是实现图片高质量显示,大小指定背景自动填充的函数。大家可以看到me中的内容是用了函数的结果,DEDECMS很强大,需要不停的去按自己想要的功能去摸索实现!

附传送门:完美解决织梦dedecms生成的缩略图模糊不清晰的办法

原创文章,转载请注明: 转载自广州SEO

本文链接地址: DedeCMS织梦文章内容图片绝对路径修改方法

DedeCms设置伪静态规则的方法

qilatu阅读(484)

以下规则是DEDECMS搜索页面伪静态规则,此规则只针对阿里云主机宝的站点修改;

rewrite “^/plus/search.html$” /plus/search.php last;
rewrite “^/plus/search-([0-9]+)-([0-9]+)\.html$” /plus/search.php?/$1/$2 last;

以此类推,高级搜索如下:

rewrite “^/plus/heightsearch.html$” /plus/heightsearch.php last;
rewrite “^/plus/heightsearch-([0-9]+)-([0-9]+)\.html$” /plus/heightsearch.php?/$1/$2 last;

加入之后后台不需要设置是否伪静态,一切代码正常运行

  1. DedeCms首页伪静态把站点根目录下index.html删除,以后不更新主页HTML即可,当然你也可以选择不使用动态首页。

  2. DedeCms频道|列表页|文章页伪静态主要通过修改GetFileName()、GetTypeUrl()这两个函数实现。DedeCms V5.3、DedeCms V5.5和DedeCms V5.6版本,打开/include/channelunit.func.php进行修改。

    注意:DedeCms V5.7,此文件路径更改了,你打开/include/helpers/channelunit.helper.php即可。

    a.将GetFileName()中的如下代码://动态文章if($cfg_rewrite == ‘Y’){return $GLOBALS[“cfg_plus_dir”].”/view-“.$aid.’-1.html’;} 替换为//动态文章if($cfg_rewrite == ‘Y’){return “/archives/view-“.$aid.’-1.html’;} 将文章页默认的/plus/view-1-1.html链接格式改为/archives/view-1-1.html,这个随个人喜欢,不作更改也行。

    b.将GetTypeUrl()中的如下代码://动态$reurl = $GLOBALS[‘cfg_phpurl’].”/list.php?tid=”.$typeid; 替换为//动态$reurl = “/category/list-“.$typeid.”.html”; 这步必须修改,即让你的频道或是列表页URL变更为/category/list-1.html形式。

  3. DedeCms列表分页伪静态打开/include/arc.listview.class.php,找到获取动态的分页列表GetPageListDM()函数末尾处:$plist = str_replace(‘.php?tid=’, ‘-‘, $plist); 替换为$plist = str_replace(‘plus’, ‘category’, $plist);//将默认的plus替换成category$plist = str_replace(‘.php?tid=’, ‘-‘, $plist); 将列表分页默认链接格式/plus/list-1-2-1.html修改为/category/list-1-2-1.html,这步也可以不作更改。

  4. edeCms文章分页伪静态打开/include/arc.archives.class.php,找到获取动态的分页列表GetPagebreakDM()函数末尾片:$PageList = str_replace(“.php?aid=”,”-“,$PageList); 替换为$plist = str_replace(‘plus’, ‘archives’, $plist);//将默认的plus替换成archives$PageList = str_replace(“.php?aid=”,”-“,$PageList); 这步不作修改也可以,只是个人喜好问题。

  5. DedeCmsTAG标签伪静态DedeCms默认的TAG标签URL,形如/tags.php?/dedecms5.7/,非常之难看。打开/include/taglib/tag.lib.php,找到lib_tag()函数下的:$row[‘link’] = $cfg_cmsurl.”/tags.php?/”.urlencode($row[‘keyword’]).”/”; 替换为$row[‘link’] = $cfg_cmsurl.”/tags/”.urlencode($row[‘keyword’]).”/”; 到这里,TAG标签URL中的“.php?”号就去掉了。

  6. DedeCms搜索伪静态DedeCms搜索URL静态化比较麻烦,附带参数多不说,参数也可能变化,像搜索结果分页的URL就特麻烦,伪静态规则匹配复杂。小拼就偷下懒,将搜索URL中“search.php?…”直接替换为“search.html?…”,至于“?”号之后的参数以任意字符进行匹配。依次打开include文件夹下的channelunit.func.php、arc.searchview.class.php、arc.taglist.class.php以及/include/taglib/hotwords.lib.php,查找“search.php?”替换为“search.html?”即可。

  7. DedeCms问答伪静态问答模块的伪静态实现比较简单,只要后台开启伪静态支持即可,至于个别页面,如ask目录下的browser.php、question.php以及include目录下的common.inc.php、functions.inc.php都需要简单修改才可以匹配伪静态规则。注意一点,DedeCms V5.7问答模块整体升级了,之前的规则已经不适用了,小拼以后会专门写个教程供大家参考的。DedeCms伪静态规则依照上面的步骤修改完毕,接下来配置好你的伪静态规则,DedeCms全站伪静态就完美实现了。

  8. IIS伪静态打开httpd.ini文件,加入如下规则:

    #首页伪静态规则,如果不使用动态首页,请勿必删除这一行,否则打开首页会出现死循环

    RewriteRule ^(.*)/index\.html $1/index\.php [I]

    #列表页伪静态规则

    RewriteRule ^(.*)/category/list-([0-9]+)\.html $1/plus/list\.php\?tid=$2 [I]

    RewriteRule ^(.*)/category/list-([0-9]+)-([0-9]+)-([0-9]+)\.html $1/plus/list\.php\?tid=$2&TotalResult=$3&PageNo=$4 [I]

    #文章页伪静态规则

    RewriteRule ^(.*)/archives/view-([0-9]+)-([0-9]+)\.html $1/plus/view\.php\?arcID=$2&pageno=$3 [I]

    #搜索伪静态规则

    RewriteRule ^(.*)/search\.html(?:(\?.*))* $1/search\.php?$2 [I]

    #TAG标签伪静态规则

    RewriteRule ^(.*)/tags\.html $1/tags\.php [I]

    RewriteRule ^(.*)/tags/(.*)(?:(\?.*))* $1/tags\.php\?\/$2 [I]

    RewriteRule ^(.*)/tags/(.*)\/(?:(\?.*))* $1/tags\.php\?\/$2\/ [I]

    RewriteRule ^(.*)/tags/(.*)\/([0-9])(?:(\?.*))* $1/tags\.php\?\/$2\/$3 [I]

    RewriteRule ^(.*)/tags/(.*)\/([0-9])\/(?:(\?.*))* $1/tags\.php\?\/$2\/$3\/ [I]

    #问答伪静态规则,适用于DedeCmsV5.3-5.6版本,需要修改几处程序

    RewriteRule ^(.*)/post\.html $1/post\.php [I]RewriteRule ^(.*)/type\.html $1/type\.php [I]

    RewriteRule ^(.*)/question-([0-9]+)\.html $1/question\.php\?id=$2 [I]

    RewriteRule ^(.*)/browser-1-([0-9]+)\.html $1/browser\.php\?tid=$2 [I]

    RewriteRule ^(.*)/browser-2-([0-9]+)\.html $1/browser\.php\?tid2=$2 [I]

    RewriteRule ^(.*)/browser-1-([0-9]+)-([0-9]+)\.html $1/browser\.php\?tid=$2&page=$3 [I]

    RewriteRule ^(.*)/browser-2-([0-9]+)-([0-9]+)\.html $1/browser\.php\?tid2=$2&page=$3 [I]

    RewriteRule ^(.*)/browser-([0-9]+)\.html $1/browser\.php\?lm=$2 [I]

    RewriteRule ^(.*)/browser-1-([0-9]+)-([0-9]+)\.html $1/browser\.php\?tid=$2&lm=$3 [I]

    RewriteRule ^(.*)/browser-2-([0-9]+)-([0-9]+)\.html $1/browser\.php\?tid2=$2&lm=$3 [I] 2)

    Apache伪静态打开.htaccess文件,加入如下规则:

    #提供部分规则作参考

    RewriteRule ^category/list-([0-9]+)\.html$ /plus/list.php?tid=$1

    RewriteRule ^category/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /plus/list.php?tid=$1&totalresult=$2&PageNo=$3

    RewriteRule ^archives/view-([0-9]+)-([0-9]+)\.html$ /plus/view.php?arcID=$1&pageno=$2 DedeCms

    伪静态注意事项1)以上提供的DedeCms伪静态修改以及规则都是按照个人的修改步骤来的,仅供参考,

    1你可以根据站点的实际情况作相应调整;

    2)伪静态实现思路,即根据理想的URL结构写好伪静态规则,然后对程序进行相应修改,并没有你想象中的那么复杂;

    3)不会程序、不会正则都没有关系,但是思路一定要清晰,还有就是禁得住“折腾”,多研究,搞透了,对提升自己也有极大好处。

    4)  广州SEO祝你好运!http://www.qilatu.com

原创文章,转载请注明: 转载自广州SEO

本文链接地址: DedeCms设置伪静态规则的方法

DedeCMS实现文章上传图片自动添加Alt属性的功能

qilatu阅读(506)

我们有时候在网站发布内容的时候会插入一些图片,尤其是那些使用织梦做图片类的网站时,在使用图片集的时候,会用到非常多的图片,这时候为了达到对每个图片的SEO优化,我们在上传图片时需要去给图片添加Alt属性来让搜索引擎更好的识别,但是图片的alt属性是需要手动去添加的,很繁琐,并且图片一般都是围绕标题来的,基本添加的alt属性和文章的标题差不多,这样我们可以让文章或者是图片集里的图片在添加上去之后自动把alt属性添加为文章的标题,这样既方便,又能够起到增加alt属性增强seo优化效果。

下面就告诉大家具体的修改方法:

 

打开文件:include/ arc.archives.class.php文件,在里面找到如下代码:

 

1 @SetSysEnv($this->Fields['typeid'],$this->Fields['typename'],$this->Fields['id'],$this->Fields['title'],'archives');

 

将上面的代码修改替换为:(请注意是替换)

 

1 $this->Fields['body'] = str_ireplace(array('altalt=""','alt=\'\''),'',$this->Fields['body']);
2 $this->Fields['body'] = preg_replace("@ [\s]{0,}alt[\s]{0,}=[\"'\s]{0,}[\s\S]{0,}[\"'\s] @isU"," ",$this->Fields['body']);
3 $this->Fields['body'] = str_ireplace("<img " ,"<img alt=\"".$this->Fields['title']."\" ",$this->Fields['body']);
4 $this->Fields['imgurls'] = str_ireplace(array('altalt=""','alt=\'\''),'',$this->Fields['imgurls']);
5 $this->Fields['imgurls'] = preg_replace("@ [\s]{0,}alt[\s]{0,}=[\"'\s]{0,}[\s\S]{0,}[\"'\s] @isU"," ",$this->Fields['imgurls']);
6 $this->Fields['imgurls'] = str_ireplace("<img " ,"<img alt=\"".$this->Fields['title']."\" ",$this->Fields['imgurls']);

 

修改完成后保存,完成后生成一下所有文章就可以看看文章里面的图片是否有Alt属性了。

原创文章,转载请注明: 转载自广州SEO

本文链接地址: DedeCMS实现文章上传图片自动添加Alt属性的功能

技术分享:织梦DedeCMS编辑器整合七牛云存储实现文件上传同步云存储教程

qilatu阅读(731)

我们知道七牛云存储是目前国内最大的文件开放云存储平台,利用七牛云存储我们可以将自己网站需要发布的图片或者附件都上传到七牛云存储,然后通过云存储连接提供给网站用户下载,这样就可以大大减轻网站服务器的文件存储以及下载压力,同时降低网站服务器的带宽成本。

而目前织梦dedecms与七牛云存储的集成整合教程还是空白,下面CMS资源网就教大家如何将七牛云存储与织梦CMS默认的编辑器完美整合,通过编辑器上传图片或者附件能够完美同步上传到七牛云服务器,并返回图片或附件的链接直接使用。下面我们就开始整合吧:

第一步、注册七牛账号、创建云空间并获取AccessKey和SecretKey:

首先我们注册并登录七牛云存储的账号,请点击下面的地址注册:

https://portal.qiniu.com/signup?code=3lca3aazlg8y9

注册成功后七牛会提示我们完成一些必要的身份认证,完成认证后就能创建自己的云存储空间了,点击七牛用户首页上面的新建空间,如下图:

新建七牛云存储空间

然后输入自己的空间名称,下面的空间类型选择“公开空间”,然后点击创建即可,如下图:

 

输入七牛云存储空间名称

创建完成后在空间设置里面打开域名设置页面,自己可以自定义域名,也可以使用默认的域名,将自定义或者默认的域名复制出来。如下图:

将自定义或者默认的域名复制出来
点击导航最右边的“账号”,再点击左边的“密钥”菜单,将里面的AccessKey和SecretKey复制出来。如下图:

 

获取七牛的AccessKey和SecretKey
这些数据都复制出来之后我们就可以开始进行下一步了。

第二步、集成七牛SDK

集成七牛SDK很简单,因为我们已经将SDK都是直接做好了,大家下载下面的SDK压缩包,将压缩包里面的qiniu文件夹解压出来,打开里面的conf.php文件,将刚刚复制的AccessKey和SecretKey分别填进去!

保存后将整个qiniu文件夹上传到织梦include目录下即可完成SDK的集成安装!

SDK压缩包下载地址:http://files.dedejs.com/files/soft/150807/qiniu-sdk.rar
集成七牛SDK之后就可以进行下一步了。

第三步、修改织梦CMS图片附件上传程序实现同步上传七牛云存储

织梦默认的编辑器有图片上传、多媒体文件上传以及附件上传,因为时间关系,我们仅以图片上传为例来讲解,多媒体以及附件的上传修改都是差不多的,大家自行修改即可。

首先打开/include/dialog/select_images.php文件,在里面找到如下代码:

1 $dh = dir($inpath);

在其下面添加下面这句代码:

1 $qiniudomain = '七牛云存储域名';

注意:将里面的“七牛云存储域名”替换为刚刚第一步里面复制的域名。
然后在里面查找如下代码:

1 $reurl = $reurl;

全部替换为如下代码

1 $reurl = $qiniudomain.$reurl;

 

修改完成后再打开/include/dialog/select_images_post.php文件,在里面找到下面这句代码:

$info = ”;

在其上面 添加如下代码:

//上传到七牛云存储start   by CMS资源网www.dedejs.com
require_once(dirname(__FILE__)."/../qiniu/io.php");
require_once(dirname(__FILE__)."/../qiniu/rs.php");
$qiniupath = substr($activepath,1);
$bucket = '云空间名';
$qiniudomain = '七牛云存储域名';
$key = $qiniupath."/".$filename;
$client = new Qiniu_MacHttpClient(null);
$putPolicy = new Qiniu_RS_PutPolicy("$bucket:$key");
$upToken = $putPolicy->Token(null);
$putExtra = new Qiniu_PutExtra();
$s = time();
list($ret, $err) = Qiniu_PutFile($upToken, $key, $fullfilename, $putExtra);
//上传到七牛云存储end

注意:将里面的“云空间名”修改为刚刚创建的空间名称,“七牛云存储域名”替换为刚刚第一步里面复制的域名。

然后在里面找到如下代码:

1 \''.$fileurl.'\'

将其修改为如下代码:

1 \''.$qiniudomain.$fileurl.'\'

修改完成后保存即可,再去后台用编辑器上传图片,就会发现返回的图片路径都是七牛云存储的图片路径了,这样就实现了完美的整合,利用同样的修改方法,大家可以自己修改一下select_media.php、select_soft.php以及select_soft_post.php文件,这样就能实现图片、多媒体以及附件上传全部同步到七牛云存储了。

最后需要注意的一个问题是我们需要在后台——系统——系统基本参数——其他选项  里面将“远程图片本地化”设置为否,不然我们用的七牛的路径就会全部转换为服务器本地文件。

原文地址:http://www.dedejs.com/html/article-944-1.html

奇拉图-专注seo-网站建设-小程序开发-全网推广

联系我们联系我们