Category: phpcms

phpcms用户注册和登陆失败解决办法

网站不知道从什么时候起注册和登陆都失败,后台添加用户也失败,找了很多资料p

基本都是说明是PHPSSO通讯问题 加密密钥 接口地址 等等都试了一次都不行

最后看到一个帖子终于解决特贡献出来大家

后台—设置=—phpsso配置—-启用PHPSSO 关闭

启用后网站登录 注册 后台添加一切问题解决!!

phpcms自定义内容页url的方法

内容-模型管理-选择你要修改的模型,一般是文章模型,然后是字段管理,添加字段
作为主表字段,选择 是,非常重要,否则在批量生成url中会无法生成自定义字段
字段名为prefix 不建议修改,因为要跟后面的代码关联起来
字段别名为 html文件名 ,这个随意,好记即可
值唯一选 是,你不希望2篇文章的url是同一个吧,这样就会覆盖上一篇文章
其他保持默认即可

打开/phpcms/modules/content/classes/url.class.php
大概在 67行 找到
$day = date(“d”,$time);
在其下方插入
$tmp_id = $content_ishtml && $prefix ? $prefix : $id; //增加自定义HTML文件名支持
代码大概的意思是,如果纯在字段prefix则使用该字段的值,如果不存在则直接显示文章ID
紧接着下一行的代码应该是
$urls = str_replace(array(“{$categorydir}”,”{$catdir}”,”{$year}”,”{$month}”,”{$day}”,”{$catid}”,”{$id}”,”{$page}”),array($categorydir,$catdir,$year,$month,$day,$catid,$id,$page),$urlrule);
更改为
$urls = str_replace(array(‘{$categorydir}’,'{$catdir}’,'{$year}’,'{$month}’,'{$day}’,'{$catid}’,'{$tmp_id}’,'{$page}’),array($categorydir,$catdir,$year,$month,$day,$catid,$tmp_id,$page),$urlrule);

第三步:在url规则中使用,扩展 > URL规则管理 > 添加或修改URL规则时候添加{$prefix},例如我就添加了一个用于伪静态的url规则:

it/product/2010/0720/1_2.html
{$categorydir}{$catdir}/{$tmp_id}_{$page}.html

添加文章,修改文文章试试。可以了吧

可是出了新的问题。在批量生成的时候获取不到{$prefix}的数据

V9系统在批量生成的时候分两个

第一个是:内容管理里下面有个“批量生成HTML”
第二个是:发布管理的“批量更新内容”他又包含了先择模型生成和不选择模型生成

所以还要改三个地方

打开在phpcms/modules/content/create_html.php文件的

查找:

$urls = $this->url->show($r[‘id’], ”, $r[‘catid’],$r[‘inputtime’]);

替换成:

$urls = $this->url->show($r[‘id’], ”, $r[‘catid’],$r[‘inputtime’],$r[‘prefix’]);

一共有三处要替换
现在就OK了

在删除文章的时候会将所有栏目下的网页全部删除的,所以还需要把phpcms\modules\content\content.php 中的 281行修改成:
$urls = $this->url->show($id, 0, $r[‘catid’], $r[‘inputtime’], $r[‘prefix’]);

本文是 看了两个人的解决办法后结合实现的!完美版本

解决PHPCMS V9的专题URL多出一个斜杠//

PHPCMSV9的专题,在设置生成静态并且网站的静态设置成生成在根目录的时候,专题路径的URL中会多出一个斜杠,如:http://www.5icool.org//special/cms/ ,我只能说这是PHPCMS V9众多诡异的BUG中的一个。在PC论坛多个会员多次提起,但未见官方修复。今天花了大把的时间,最终找到问题所在并解决。

解决办法:

1、修改 phpcms/modules/special/special.php 文件第43行和92行:

$url = $special[‘ishtml’] ? APP_PATH.substr(pc_base::load_config(‘system’, ‘html_root’), 1).’/special/’.$special[‘filename’].’/’ :

$special[‘url’] = APP_PATH.substr(pc_base::load_config(‘system’, ‘html_root’), 1).’/special/’.$special[‘filename’].’/’;
把其中 /special/ 的前面一个 / 去掉,改成 special/ ,即可。

2、现在再网站后台添加新的专题,会发现新添加的专题URL中不会再有两个斜杠了。

3、而原本已经添加好了并生成了的专题多了斜杠的,通过修改数据库来实现,如用 phpmyadmin 打开 v9_special表,找到每个专题的 URL字段,将其中多了的斜杠去掉即可。

Phpcms V9下载页面直接显示真实链接的解决方法

原来的Phpcms V9下载设置老是会先弹出一个地址在下载! 而且我的网站下载第二层是一个TXT文档 所以好纠结 突然发现这个设置试了下 很好 完全符合我的要求 所以分享给大家

进入phpcms后台–“内容”–“内容相关设置”–“模型管理”,点击进去之后选择“下载模型”–点击“字段管理”–“本地下载”,如下图,修改红色地方就行。非常简单,根本不需要修改代码。

Phpcms V9下载页面直接显示真实链接的解决方法
Phpcms V9下载页面直接显示真实链接的解决方法

PHP全模块搜索功能实现方法

最近因为仿一个站 其他效果功能基本都OK了 只有搜索还不够完美 PHPcms原始的搜索必须选择模块才能搜索到数据,有时候用户搜索时候可能错过了自己想要搜索的数据!!而且用户体验不理想。
研究了几个小时 终于解决! 我这个写的比较详细!程序小白基本也能完美理解!有任何疑问 直接回复我会尽快回复大家!

1
<?php
1
defined(
1
'IN_PHPCMS'
1
) or exit(
1
'No permission resources.'
1
);
1
pc_base::load_sys_class(
1
'form'
1
,
1
''
1
,0);
1
pc_base::load_sys_class(
1
'format'
1
,
1
''
1
,0);
1
class index {
1
    
1
function

 

1
__construct() {
1
        
1
$
1
this
1
->db = pc_base::load_model(
1
'search_model'
1
);
1
        
1
$
1
this
1
->content_db = pc_base::load_model(
1
'content_model'
1
);
1
    
1
}
1
    

 

1
    
1
/**
1
     
1
* 关键词搜索
1
     
1
*/
1
    
1
public 
1
function

 

1
init() {
1
        
1
//获取siteid
1
        
1
$siteid = isset($_REQUEST[
1
'siteid'
1
]) && trim($_REQUEST[
1
'siteid'
1
]) ? intval($_REQUEST[
1
'siteid'
1
]) : 1;
1
        
1
$SEO = seo($siteid);
 
1
        
1
//搜索配置
1
        
1
$search_setting = getcache(
1
'search'
1
);
1
        
1
$setting = $search_setting[$siteid];
 
1
        
1
$search_model = getcache(
1
'search_model_'
1
.$siteid);
1
        
1
$type_module = getcache(
1
'type_module_'
1
.$siteid);
 
1
        
1
if
1
(isset($_GET[
1
'q'
1
])) {
1
            
1
if
1
(trim($_GET[
1
'q'
1
])==
1
''
1
) {
1
                
1
header(
1
'Location: '
1
.APP_PATH.
1
'index.php?m=search'
1
);exit;
1
            
1
}
1
            
1
$typeid = empty($_GET[
1
'typeid'
1
]) ? 0 : intval($_GET[
1
'typeid'
1
]);
1
            
1
$time = empty($_GET[
1
'time'
1
]) || !in_array($_GET[
1
'time'
1
],array(
1
'all'
1
,
1
'day'
1
,
1
'month'
1
,
1
'year'
1
,
1
'week'
1
)) ? 
1
'all'

 

1
: trim($_GET[
1
'time'
1
]);
1
            
1
$page = isset($_GET[
1
'page'
1
]) ? intval($_GET[
1
'page'
1
]) : 1;
1
            
1
$pagesize = 10;
1
            
1
$q = safe_replace(trim($_GET[
1
'q'
1
]));
1
            
1
$q = new_html_special_chars(strip_tags($q));
1
            
1
$q = str_replace(
1
'%'
1
, 
1
''
1
, $q); 
1
//过滤'%',用户全文搜索
1
            
1
$search_q = $q;  
1
//搜索原内容
 
1
            
1
$sql_time = $sql_tid = 
1
''
1
;
1
            
1
if
1
($typeid) $sql_tid = 
1
' AND typeid = '
1
.$typeid;
1
            
1
//按时间搜索
1
            
1
if
1
($time == 
1
'day'
1
) {
1
                
1
$search_time = SYS_TIME - 86400;
1
                
1
$sql_time = 
1
' AND adddate > '
1
.$search_time;
1
            
1
} elseif($time == 
1
'week'
1
) {
1
                
1
$search_time = SYS_TIME - 604800;
1
                
1
$sql_time = 
1
' AND adddate > '
1
.$search_time;
1
            
1
} elseif($time == 
1
'month'
1
) {
1
                
1
$search_time = SYS_TIME - 2592000;
1
                
1
$sql_time = 
1
' AND adddate > '
1
.$search_time;
1
            
1
} elseif($time == 
1
'year'
1
) {
1
                
1
$search_time = SYS_TIME - 31536000;
1
                
1
$sql_time = 
1
' AND adddate > '
1
.$search_time;
1
            
1
} 
1
else

 

1
{
1
                
1
$search_time = 0;
1
                
1
$sql_time = 
1
''
1
;
1
            
1
}
1
            
1
if
1
($page==1 && !$setting[
1
'sphinxenable'
1
]) {
1
                
1
//精确搜索
1
                
1
$commend = $
1
this
1
->db->get_one(
1
"`siteid`= '$siteid' $sql_tid $sql_time AND `data` like '%$q%'"
1
);
1
            
1
} 
1
else

 

1
{
1
                
1
$commend = 
1
''
1
;
1
            
1
}
1
            
1
//如果开启sphinx
1
            
1
if
1
($setting[
1
'sphinxenable'
1
]) {
1
                
1
$sphinx = pc_base::load_app_class(
1
'search_interface'
1
, 
1
''
1
, 0);
1
                
1
$sphinx = 
1
new

 

1
search_interface();
1
                

 

1
                
1
$offset = $pagesize*($page-1);
1
                
1
$res = $sphinx->search($q, array($siteid), array($typeid), array($search_time, SYS_TIME), $offset, $pagesize, 
1
'@weight desc'
1
);
1
                
1
$totalnums = $res[
1
'total'
1
];
1
                
1
//如果结果不为空
1
                
1
if
1
(!empty($res[
1
'matches'
1
])) {
1
                    
1
$result = $res[
1
'matches'
1
];
1
                
1
}
1
            
1
} 
1
else

 

1
{
1
                

 

1
                
1
$sql = 
1
"`siteid`= '$siteid' $sql_tid $sql_time AND `data` like '%$q%'"
1
;
1
                

 

 
1
                
1
$result = $
1
this
1
->db->listinfo($sql, 
1
'searchid DESC'
1
, $page, 10);
1
            
1
}
1
           

 

1
            
1
//如果结果不为空
1
            
1
if
1
(!empty($result) || !empty($commend[
1
'id'
1
])) {
1
                
1
foreach($result as $_v) {
1
                    
1
if
1
($_v[
1
'typeid'
1
]) $sids[$_v[
1
'typeid'
1
]][] = $_v[
1
'id'
1
];
1
                
1
}
 
1
                
1
if
1
(!empty($commend[
1
'id'
1
])) {
1
                    
1
if
1
($commend[
1
'typeid'
1
]) $sids[$commend[
1
'typeid'
1
]][] = $commend[
1
'id'
1
];
1
                
1
}
1
                
1
$model_type_cache = getcache(
1
'type_model_'
1
.$siteid,
1
'search'
1
);
1
                
1
$model_type_cache = array_flip($model_type_cache);
1
                
1
$data = array();
1
                
1
foreach($sids as $_k=>$_val) {
1
                    
1
$tid = $_k;
1
                    
1
$ids = array_unique($_val);
 
1
                    
1
$where = to_sqls($ids, 
1
''
1
, 
1
'id'
1
);
1
                    
1
//获取模型id
1
                    
1
$modelid = $model_type_cache[$tid];
 
1
                    
1
//是否读取其他模块接口
1
                    
1
if
1
($modelid) {
1
                        
1
$
1
this
1
->content_db->set_model($modelid);
1
                    

 

1
                        
1
/**
1
                        
1
* 如果表名为空,则为黄页模型
1
                        
1
*/
1
                        
1
if
1
(empty($
1
this
1
->content_db->model_tablename)) {
1
                            
1
$
1
this
1
->content_db = pc_base::load_model(
1
'yp_content_model'
1
);
1
                            
1
$
1
this
1
->content_db->set_model($modelid);
 
1
                        
1
}
1
                        
1
$datas = $
1
this
1
->content_db->select($where, 
1
'*'
1
);
1
                    
1
}
1
                    
1
$data = array_merge($data,$datas);
1
                
1
}
1
                
1
$pages = $
1
this
1
->db->pages;
1
                
1
$totalnums = $
1
this
1
->db->number;
1
            

 

1
                
1
//如果分词结果为空
1
                
1
if
1
(!empty($segment_q)) {
1
                    
1
$replace = explode(
1
' '
1
, $segment_q);
1
                    
1
foreach($replace as $replace_arr_v) {
1
                        
1
$replace_arr[] =  
1
'<font color=red>'
1
.$replace_arr_v.
1
'</font>'
1
;
1
                    
1
}
1
                    
1
foreach($data as $_k=>$_v) {
1
                        
1
$data[$_k][
1
'title'
1
] = str_replace($replace, $replace_arr, $_v[
1
'title'
1
]);
1
                        
1
$data[$_k][
1
'description'
1
] = str_replace($replace, $replace_arr, $_v[
1
'description'
1
]);
1
                    
1
}
1
                
1
} 
1
else

 

1
{
1
                    
1
foreach($data as $_k=>$_v) {
1
                        
1
$data[$_k][
1
'title'
1
] = str_replace($q, 
1
'<font color=red>'
1
.$q.
1
'</font>'
1
, $_v[
1
'title'
1
]);
1
                        
1
$data[$_k][
1
'description'
1
] = str_replace($q, 
1
'<font color=red>'
1
.$q.
1
'</font>'
1
, $_v[
1
'description'
1
]);
1
                    
1
}
1
                
1
}
1
            
1
}
1
            
1
$execute_time = execute_time();
1
            
1
$pages = isset($pages) ? $pages : 
1
''
1
;
1
            
1
$totalnums = isset($totalnums) ? $totalnums : 0;
1
            
1
$data = isset($data) ? $data : 
1
''
1
;
1
            

 

1
            
1
include template(
1
'search'
1
,
1
'list'
1
);
1
        
1
} 
1
else

 

1
{
1
            
1
include template(
1
'search'
1
,
1
'index'
1
);
1
        
1
}
1
    
1
}
 
1
    

 

1
    
1
public 
1
function

 

1
public_get_suggest_keyword() {
1
        
1
$url = $_GET[
1
'url'
1
].
1
'&q='
1
.$_GET[
1
'q'
1
];
1
        
1
$trust_url = array(
1
'c8430fcf851e85818b546addf5bc4dd3'
1
);
1
        
1
$urm_md5 = md5($url);
1
        
1
if

 

1
(!in_array($urm_md5, $trust_url)) exit;
1
        

 

1
        
1
$res = @file_get_contents($url);
1
        
1
if
1
(CHARSET != 
1
'gbk'
1
) {
1
            
1
$res = iconv(
1
'gbk'
1
, CHARSET, $res);
1
        
1
}
1
        
1
echo $res;
1
    
1
}
1
    

 

1
    
1
/**
1
     
1
* 提示搜索接口
1
     
1
* TODO 暂时未启用,用的是google的接口
1
     
1
*/
1
    
1
public 
1
function

 

1
public_suggest_search() {
1
        
1
//关键词转换为拼音
1
        
1
pc_base::load_sys_func(
1
'iconv'
1
);
1
        
1
$pinyin = gbk_to_pinyin($q);
1
        
1
if
1
(is_array($pinyin)) {
1
            
1
$pinyin = implode(
1
''
1
, $pinyin);
1
        
1
}
1
        
1
$
1
this
1
->keyword_db = pc_base::load_model(
1
'search_keyword_model'
1
);
1
        
1
$suggest = $
1
this
1
->keyword_db->select(
1
"pinyin like '$pinyin%'"
1
, 
1
'*'
1
, 10, 
1
'searchnums DESC'
1
);
1
        

 

1
        
1
foreach($suggest as $v) {
1
            
1
echo $v[
1
'keyword'
1
].
1
"\n"
1
;
1
        
1
}
 
1
        

 

1
    
1
}
1
}
1
?>

复制上面文件另存为 index.php
覆盖到/phpcms/modules/search/ 下面

然后修改整站 header.html模板
在搜索位置

1
<form action=
1
"{APP_PATH}index.php"

 

1
method=
1
"get"

 

1
target=
1
"_blank"

 

1
id=
1
"search"

 

1
typeid=
1
"0"
1
>

加上typeid=”0″

然后修改/phpcms/templates/default/search/ index.html

1
<script type=
1
"text/javascript"
1
>document.write(
1
'<iframe src="{APP_PATH}index.php?m=member&c=index&a=mini&forward='
1
+encodeURIComponent(location.href)+
1
'&siteid={get_siteid()}+ typeid="0"" allowTransparency="true"  width="300" height="24" frameborder="0" scrolling="no"></iframe>'
1
)</script>

注意 typeid=”0″ 我传递了0参数
至此完美了!

phpcms V9自定义多图字段内容页、首页、列表页调用

phpcms_v9 多图字段 内容页,首页,分页自定义字段调用

说明:自定义多图字段名 shigongtu
1 内容页调用

1
{loop $shigongtu $r}
1
     
1
<img src=
1
""

 

1
title=
1
"测试"
1
/>
1
{/loop}

2 首页,分页调用
第一种推荐位调用自定义字段
在模型里加好自定义字段后,必须把“在推荐位标签中调用”点击“是“
然后用同一样的方法去调节数据就OK了,记住,如果你加了文章,必须去更新文章才会显示,自定义段在推荐中只显示你选择后,选择前加的加文章不显示,更新一下文章就显示了
例子:

1
{pc:content action=
1
"position"

 

1
posid=
1
"推荐位id"

 

1
num=
1
"30"

 

1
thumb=
1
"1"

 

1
moreinfo=
1
"1"

 

1
order=
1
"listorder DESC"
1
}
1
{loop $data $key $val}<LI>
1
<a href=
1
"{$val['url']}"

 

1
target=
1
"_blank"
1
><img src=
1
"{$val['自定义段']}"

 

1
alt=
1
"{$val['title']}"

 

1
height=36 width=98 /></a>
1
<a href=
1
"{$val['url']}"

 

1
target=
1
"_blank"
1
>{str_cut($val[
1
'title'
1
],20)}</a></LI>
1
{/loop}
1
{/pc}

普通列表或栏目调用自定义字段

在{pc:content action=”lists” 后加上副表moreinfo=1 (等于1时显示,0时不显示)

例子:

1
{pc:content action=
1
"lists"

 

1
moreinfo=
1
"1"

 

1
catid=
1
"51"

 

1
order=
1
"id"

 

1
num=
1
"5"
1
cache=
1
"3600"
1
}
1
{loop $data $r}
1
<a href=
1
"{$r[url]}"

 

1
target=
1
"_blank"
1
> {$r[title]}</a>
1
{php eval(
1
"\$arr="

 

1
. $r[shigongtu] . 
1
";"
1
);}
1
{loop $arr $val}
1
{$val[url]} |
1
{/loop}
1
{/loop}
1
{/pc}

注:
原来是需要在模板里进行一次PHP变量赋值才行。LOOP标签查出来的变量数组不能直接再使用LOOP循环。

1
{pc:get sql=
1
"select * FROM v9_house_data where id=2"

  

1
num=
1
"1"

 

1
cache=
1
"3600"

 

1
return
1
=
1
"data"
1
}
1
      
1
{loop $data $r}
1
    

 

1
       
1
{php eval(
1
"\$arr="

 

1
. $r[hxt] . 
1
";"
1
);} 
1
//必须增加这个赋值,才能二次LOOP变量数组
1
        
1
{loop $arr $rs}
1
          
1
{$rs[
1
'fileurl'
1
]}
1
        
1
{/loop}
1
    

 

1
      
1
{/loop}
1
    
1
{/pc}