div设计师
管理员
管理员
  • UID2
  • 粉丝17
  • 关注1
  • 发帖数8
  • 社区居民
阅读:22397回复:2

phpwind9.x-门户自定义页面URL高级伪静态

楼主#
更多 发布于:2016-04-04 02:24
更新文件:
1)、/src/applications/design/controller/PortalController.php
          
2)、/src/applications/rewrite/admin/RewriteController.php
          
3)、/src/applications/rewrite/conf/rewrite.php
          
4)、/src/library/engine/extension/viewer/PwTemplateCompilerUrlCreater.php
          
5)、/src/library/route/PwRoute.php
一、更新说明
本次更新,增加自定义页面的静态化名称的用处,并提供URL伪静态
二、更新点
1、静态化名称增加斜杠/
2、URL伪静态里面门户增加{pagename}自定义页面静态化名称的使用
三、修改文件(1
1、查找(约39行)
if (!$this->_validator($pagename))   $this->showError("DESIGN:pagename.validator.fail");
修改成以下代码
if (!$this->_validators($pagename)) $this->showError("DESIGN:pagename.validator.fail");
2、查找(约165行)
if (!$this->_validator($pagename))  $this->showError("DESIGN:pagename.validator.fail");
修改成以下代码
if (!$this->_validators($pagename))  $this->showError("DESIGN:pagename.validator.fail");


3、
查找
private function _validator($string) {
在上面添加一下代码
private function _validators($string) {
          
if (preg_match('/^[\dA-Za-z\_\/]+$/', $string)) return true;
          
return false;
          
}
四、修改文件(2
1、查找(约71行)
$format = str_replace('\{name\}', '(?P<name>[\x7f-\xff\da-z\.\_]+?)', $format);
下面添加以下代码
$format = str_replace('\{pagename\}', '(?P<pagename>([a-z0-9\_\/]+)?)', $format);
五、修改文件(3
1、查找(约11行)
'thread' => array('论坛帖子列表页', '{fid}{page}{fname}', 'bbs/thread/run', 'thread-{fid}-{page}'),
        
'read' => array('论坛帖子阅读页', '{tid}{page}{fid}{fname}', 'bbs/read/run', 'read-{tid}-{page}'),
        
'special' => array('门户页面', '{id}', 'special/index/run', 'special-{id}'),
修改成以下代码
'special' => array('门户页面', '{id}{pagename}', 'special/index/run', 'special-{id}'),
        
'thread' => array('论坛帖子列表页', '{fid}{page}{fname}', 'bbs/thread/run', 'thread-{fid}-{page}'),
        
'read' => array('论坛帖子阅读页', '{tid}{page}{fid}{fname}', 'bbs/read/run', 'read-{tid}-{page}'),

六、修改文件(4
1、查找(约81行)
if ($route->dynamicHost) {
上面添加以下代码
else if ($route->spagename) {
      
if (false !== strpos($content, '{pagename}')) {
      
$temp = explode('{pagename}', $content , 2);
      
foreach ($this->_variables as $key => $var) {
      
$temp[0] = str_replace($key, '\',' . $var . ',\'', $temp[0]);
      
$temp[1] = str_replace($key, '\',' . $var . ',\'', $temp[1]);
      
}
      
$content = $route->spagename[0] . 'echo \'' . $temp[0] . '\',' . $route->spagename[1] . ',\'' . $temp[1] . '\';?>';
      
}
      
$content = preg_replace_callback('/<\?php(.*?)\?>/is', array($this, '_parse'), $content);
      
}
七、修改文件(5
1、查找(约30行)
public $dynamic = array();
上面添加以下代码
public $spagename = array();
2、查找(约287行)
if (1 === count($matches[1]) && !$is_fname) {
修改成以下代码
$is_special = strpos($v['format'], '{pagename}') !== false;
      
if (1 === count($matches[1]) && !$is_fname && !$is_special) {
3、查找(约301行)
if ($pos = strpos($v['format'], '{page}')) {
上面添加以下代码
if ($is_special) {
      
if (!isset($_args['id'])) continue;
      
Wind::import('SRV:design.srv.vo.PwDesignPortalSo');
      
$vo = new PwDesignPortalSo();
      
$_special = Wekit::load('design.PwDesignPortal');
      
$list = $_special->searchPortal($vo, 0, 0);
      
$_special_dir = array();
      
foreach ($list as $key => $value) {
      
$_special_dir[$value['id']] = $value['pagename'];
      
}
      
$this->spagename[] = '<?php $__route_pagename=' . var_export($_special_dir, true) . ';';
      
$this->spagename[] = $_args['id'] ? '($__route_pagename[' . $_args['id'] . '] ? $__route_pagename[' . $_args['id'] . '] : \'pagename\')' : '\'pagename\'';
      
if (is_numeric($_args['id'])) {
      
if (!$_special_dir[$_args['id']]) continue;
      
$format['{pagename}'] = $_special_dir[$_args['id']];
      
}
      
unset($_args['id']);
      
}
4、查找(约326行)
if ($code != 'fname') {
修改成以下代码
if ($code != 'fname' && $code != 'pagename') {
5、查找(约405行)
$route = explode('/', $v['route']);
上面添加以下代码
else if ($k == 'special') {
      
Wind::import('SRV:design.srv.vo.PwDesignPortalSo');
      
$vo = new PwDesignPortalSo();
      
$_special = Wekit::load('design.PwDesignPortal');
      
$list = $_special->searchPortal($vo, 0, 0);
      
$_special_dir = array();
      
foreach ($list as $key => $value) {
      
$_special_dir[$value['pagename']] = $value['id'];
      
}
      
if (isset($_special_dir[$matches['pagename']])) {
      
list($_a, $_c, $_m, $_args) = WindUrlHelper::resolveAction('special/index/run?id='.$_special_dir[$matches['pagename']]);
      
$_m = $_m ? $_m : 'special';
      
$_c = $_c ? $_c : 'index';
      
$_a = $_a ? $_a : 'run';
      
return array_merge($matches,
      
array('m' => $_m, 'c' => $_c, 'a' => $_a), $_args + $args);
      
}
      
}
6、查找(约472行)
$this->omit_mca = $this->onlydomain = false;
下面添加以下代码
$this->dynamicDomain = $this->dynamic = $this->spagename = array();

更新完毕:src目录是懒人包,可以直接上传到根目录直接替换,就不用进行修改了。

图片

附件名称/大小 下载次数 最后更新
phpwind9.x-门户自定义页面URL高级伪静态.zip (14KB)  3 2016-04-04 02:39

最新喜欢:

13244989988
禁止发言
禁止发言
  • UID347
  • 粉丝41
  • 关注164
  • 发帖数105
  • 社区居民
  • 最爱沙发
  • 原创写手
  • 追星一族
沙发#
发布于:2017-05-27 19:44
用户被禁言,该主题自动屏蔽!
小瑜瑜
禁止发言
禁止发言
  • UID359
  • 粉丝14
  • 关注7
  • 发帖数4
  • 社区居民
板凳#
发布于:2017-05-27 19:51
用户被禁言,该主题自动屏蔽!
游客

返回顶部