dedecms添加标题时,提示标题为空是什么原因
1、织梦CMS文章采集
新建一个文章采集节点,后台——采集——采集节点管理——增加新节点,选择内容模型为普通文章。
设置节点基本信息。目标源码同上篇文章所说,通过查看目标网站源代码后设置,区域匹配模式默认字符串,只有在字符串无法确定区域的时候才用正则表达式,不过一般都用不上。最后就是织梦cms采集的特点之一防盗链模式,如果目标网站有防盗链功能则开启次功能可以成功采集,但是会降低采集速度。次测试目标网站没防盗链功能,所以不开启。
列表网站获取规则。同上篇文章分析,列表网址是有规律的可批量生成。这里要说下dedecms的强大之处,不仅获取列表网址的方式能灵活组合,而且如果目标网站整站使用的都是同一个模板,就可以启用“多栏目通配(#)”功能,通过设置后一个采集规则就可以采集整站并发布不同栏目了,而不需要一个栏目对应一个规则。(此功能小编会另外单独写一篇教程)
文章网址匹配规则。查看目标列表页源代码,设置要采集文章网址区域的开始和结束的html,接下来又是dedecms特点之一,如果采集网址页面链接有可直接设置采集为缩略图,非常方便。对区域网址进行再次筛选功能也有特色,除支持正则表达式外还声明了“必须包含”和“不能包含”的优先级,本篇体验目标站无干扰网址,所以留空。
保存并测试,系统会应用前面的设置测试采集网址,完整无误后保存信息并进入下一步内容采集设置。
网页内容获取规则。系统会默认一个采集url为预览网址,另外内容分页导航所在的区域匹配规则也很灵活,除了和phpcms一样有全“部列出的分页列表模式”、“上下页形式或不完整的分页列表模式”外,还多了一个“分页列表规则”。
各字段内容采集,dedecms的内容匹配规则和phpcms一样:“起始无重复HTML[内容]结尾无重复HTML”,[内容]即为所采内容。过滤规则是{dede:trim replace=""}规则{/dede:trim},多个规则的话一个一行,如果要替换成指定的值,则只要在replace=""的引号里设置即可。
其中,内容摘要、关键字、缩略图系统会用正则进行自动匹配,我们只需设置过滤内容即可。其余字段分别设置匹配规则和过滤规则,系统同样自带了几个常用的过滤规则,但是点击“常用规则”后为弹出小窗口模式,稍微有点不方便。针对本测试的标题采集,以下两种方式都是可以的,如图:
文章作者、文章来源和发布时间字段一样采集,但是此版本dedecms在这几个字段下没有“自定义处理接口”了,如果有的话会稍显灵活,例如设置固定值可直接用“@me="固定值"”实现。现在不能用自定义处理接口设定固定值,也没有字段值设置,只能通过采集网页某一固定值然后用替换。如图:
dedecms的文章内容采集非常强大,除了匹配规则和过滤规则,还有个“自定义处理接口”。如果你有php基础的话,可以通过此功能对采集结果@me进行各种处理,强大到不行啊。以后小编会专门发一篇此功能的讲解文章。最后,不能直接在采集管理处新增采集字段,只能在对应内容模型管理中增加字段,采集管理会自动增加。如小编在“普通文章”内容模型那增加了一个“chinaz字段”,则采集设置中自动增了一个“chinaz字段”项目。
保存并测试,查看列表测试信息和网页规则测试,检查是否正确,无误后确定并开始采集。进入采集指定节点设置页面,因为小编之前有测试一遍,所以有60个历史种子网址,即小编之前已经采集了60个网址,另外还有几个选项大家按需求选择。
点开始采集网页,出现此采集提示信息显示采集进度,不知道是小编人品不好还是dede采集本身缺点,经常会浏览器没反应,采集停止在那,只有手动点击了才会继续。
采集完成后点右上角的“导出数据”,然后选择导出栏目,如果你在前面启用了“多栏目通配(#)”并指定了栏目ID,则要勾选此处的“批量采集选项”,其余选项根据自己需求选择,然后确定。如果勾选了“完成后自动生成导入内容HTML”则会在导入完后自动更新网站,否则就要先手动去生成。
本文实例讲述了dedecms列表页调用文章正文内容的方法。分享给大家供大家参考。具体分析如下:
一般来说,在列表页面要获取文章内容简单描述的话我们可以直接使用description标签就可以了,但是如果要有很多估计我们需要进行一些简单的修改。
在制作织梦模板的时候,有的时候我们需要调用文章部分内容,用[field:description/]标签字数不够多(数据库设计字段是varchar(255)的),另外修改了文章内容但是摘要还需要手动修改,所以只能调用文章正文内容了
实现织梦DedeCMS列表页调用文章正文的方法有两种,不过都是使用的dede:arclist标签,如果使用dede:list标签的话,第一种方法是调用不出结果的
以下是织梦DedeCMS列表页调用文章正文的第一种方法,代码如下:
复制代码
代码如下:
{dede:arclist flag='h' row='10′}
<h1><a
href='[field:arcurl/]'>[field:title/]</a></h1>
<p>[field:id runphp='yes'] $aid = @me; $row =
$GLOBALS['dsql']->GetOne("Select body From 'dede_addonarticle' where
aid='$aid' "); @me =
cn_substr(strip_tags("{$row['body']}"),400);[/field:id]<a
href='[field:arcurl/]'>阅读详细</a></p>
{/dede:arclist}
代码中的数字400是用来设置需要调用多少内容的,因为调用的是body里面的内容,如果有里面包含代码的话也会被调用出来,这点比较不好,不过可以使用html2tex()函数解决一下
第二种方法则是利用了织梦可以自定义模型内容数据,并调用的原理,把文章模板的body字段看做在自定义的,调用的代码如下:
复制代码
代码如下:
{dede:arclist row='10' addfields='body'
channelid='1'}
<p> [field:body
function='cn_substr(html2text(@me),600)'/]</p>
<span
class="more">
<a href=" [field:arcurl/]" style="text-decoration:none;
color:#990000;"& gt; [详 情]
</a>
</span>
{/dede:arclist}
以下是这种方法的详细说明:
1addrields=”字段一,字段二…”
2idlist:文章编号,调用指定内容
3function=’cn_substr(html2text(@me),600)’ 将文章内容转化为文字格式
4channelid,模型编号,文章默认为1,查看位置:后台–核心–内容模型管理
两种方法各有优劣,第一种方法比较繁琐,不是那么容易看懂,还是比较推荐采用第二种方法实现织梦DedeCMS列表页调用文章正文的功能的
谁说dede:list 标签不能调用body内容,现在就告诉你,直接就可以调用
第一步,打开后台 核心-->频道模型-->内容模型管理-->普通文章,在列表附加字段中添加body
第二步,在dede:list语句中指定addfields='body',然后直接用[field:body/]调用全部内容
实例代码如下:
复制代码
代码如下:
{dede:list pagesize='18' addfields='body'}
<li>
<p>[field:body/]</p>
<p><a
href="[field:arcurl/]"
title="[field:title/]">[field:title/]</a></p>
</li>
{/dede:list}
另外,如果像摘要一样调用可以用,代码如下:
复制代码
代码如下:
[field:body
function='cn_substr(html2text(@me),200)'/]
替代:
复制代码
代码如下:
[field:description
/]
调出文章前200个字符内容,经过这两步,可以彻底关掉系统默认的文章摘要功能,最后还有就是官方的一个[field:description/]字段了,这个如果对于要求几十个字的完全可以了,但是如果太多字此字段就无效了
希望本文所述对大家的dedecms建站有所帮助。
您好,朋友。跟版网团队很高兴为您解答:
dedecms发布文章提示”标题不能为空”
现象是发布英文标题没问题,发布中文会提示“标题不能为空”
因为htmlspecialchars在php54默认为utf8编码,
gbk编码字符串经 htmlspecialchars 转义后的中文字符串为空,也就是标题为空。
所以给htmlspecialchars添加ENT_COMPAT ,’GB2312′参数修改编码默认值。
具体方法有两种:
1在/include/commonfuncphp中任意位置添加函数
function gbkhtmlspecialchars($str)
{
return htmlspecialchars($str, ENT_COMPAT ,’ISO-8859-1′);
}
2如果空间商可以切换php版本,请将php版本切换为php52就不会有此问题了。
希望我的回答能够帮到你!
直接定义字串的最大长度就可以了,自后超过此长度的话,之后就无法插入,返回size有问题。
可以通过alter更改字串长度:
sql: alter tablename modify columnName varchar2(25);
解释:以上语句重置表中栏位的属性,设定最大长度是25个位元组,超过的话,无法正常插入。
JSP限制字串长度问题假设:
提取出来的str
如果长度大于10则取8位,后面加
如果长度小于10则直接输出
<%
int i=strlength();
if(i==10)
{
outprint(str);
}else if(i>10){
str=strsubstring(0,7); 字串撷取0-7共8位
outprint(str+"");
}else{
outprint("暂无内容");
}
%>
pascal如何控制字串长度var
st:string;
a,b:longint;记录想要输出的首位和末位
begin
readln(st);
for i:=a to b do
writeln(st[i]);
end
这样几位都可以控制啊
Python的re模组字串长度有限制么Python通过re模组提供对正则表示式的支援。使用re的一般步骤是先使用repile()函式,将正则表示式的字串形式编译为Pattern例项,然后使用Pattern例项处理文字并获得匹配结果(一个Match例项),最后使用Match例项获得资讯,进行其他的操作
C++怎么限制编辑框输入字串长度
你这种情况比较复杂!VC环境下可以有kbhit();给你一个程式码:#include#includeusingnamespacestd;intmain(){chara;if(kbhit())是否按下了键a=getch();取得输入putch(a);在萤幕上显示a字元return0;}这就是只能按一个键,输入一个字元的例子,其它的楼主可以自己编一下程式,可以控制按回车时再读入等
php字串 长度 有限制吗?没有明文说做了限制。
这样一般取决于所在的伺服器。
但貌似有个,2G的限制,这个不小了。
位址列传参的字串长度是否有限制HTTP 11 协议中对URL的长度是没有限制的
但是在实现中,伺服器端和游览器端对URL的长度都是有限制的
伺服器端的限制根据不同的配置会有不同的值
游览器端的限制由于浏览器的种类也各不相同,大致如下
IE 2083
Firefox 65536
Chrome 8182
Safari 80000
Opera 190000
dedecms在列表和文章页控制字串长度,怎么写啊?function="_substr(@me,字元数)"
swift20 字串长度怎么计算字串的长度通常是指字串中包含字元的数目,但有的时候人们需要的是字串所占位元组的数目。常见的获取字串长度的方法包括如下几种。
1使用sizeof获取字串长度
sizeof的含义很明确,它用以获取字元阵列的位元组数(当然包括结束符\0)。对于ANSI字串和UNICODE字串,形式如下:
sizeof(cs)/sizeof(char) sizeof(ws)/sizeof(wchar_t)
可以采用类似的方式,获取到其字元的数目。如果遇到MBCS,如"中文ABC",很显然,这种办法就无法奏效了,因为sizeof()并不知道哪个char是半个字元。
2使用strlen()获取字串长度
strlen()及wcslen()是标准C++定义的函式,它们分别获取ASCII字串及宽字串的长度,如:
size_t strlen( const char string ); size_t wcslen( const wchar_t string );
strlen()与wcslen()采取\0作为字串的结束符,并返回不包括\0在内的字元数目。
3使用CString::GetLength()获取字串长度
CStringT继承于CSimpleStringT类,该类具有函式:
int GetLength( ) const throw( );
GetLength()返回字元而非位元组的数目。比如:CStringW中,"中文ABC"的GetLength()会返回5,而非10。那么对于MBCS呢?同样,它也只能将一个位元组当做一个字元,CStringA表示的"中文ABC"的GetLength()则会返回7。
4使用std::string::size()获取字串长度
basic_string同样具有获取大小的函式:
size_type length( ) const; size_type size( ) const;
length()和size()的功能完全一样,它们仅仅返回字元而非位元组的个数。如果遇到MCBS,它的表现和CStringA::GetLength()一样。
5使用_bstr_t::length()获取字串长度
_bstr_t类的length()方法也许是获取字元数目的最佳方案,严格意义来讲,_bstr_t还称不上一个完善的字串类,它主要提供了对BSTR型别的封装,基本上没几个字串操作的函式。不过,_bstr_t 提供了length()函式:
unsigned int length ( ) const throw( );
该函式返回字元的数目。值得称道的是,对于MBCS字串,它会返回真正的字元数目。
0条评论