XPressME Integration Kit

Trac

source: trunk/xpressme_integration_kit/include/xpress_render.php @ 272

Last change on this file since 272 was 272, checked in by toemon, 15 years ago

#130 カスタムテンプレートタグでwp_parse_argsを利用
get_xpress_excerpt_contents()
xpress_the_content()
を除き修正

File size: 7.1 KB
Line 
1<?php
2
3//< style >< script >< link > tag is pulled out from the header of html contents.
4function get_mod_header($contents)
5{
6        global $xpress_config;
7        $pattern = "<head[^>]*?>(.*)<\/head>";
8        preg_match("/".$pattern."/s",  $contents, $head_matches);
9        $head_str = $head_matches[1];
10       
11        $pattern = '<head[^>]*?>';
12        $head_str = preg_replace("/".$pattern."/s" , '' , $head_str);
13        $pattern = '<\/head>';
14        $head_str = preg_replace("/".$pattern."/s" , '' , $head_str);
15        $pattern = '<\s*html\s+xmlns[^>]*?>';
16        $head_str = preg_replace("/".$pattern."/s" , '' , $head_str);
17        $pattern = '<\s*head\s+profile[^>]*?>';
18        $head_str = preg_replace("/".$pattern."/s" , '' , $head_str);
19        $pattern = '<\s*meta\s+http-equiv[^>]*?>';
20        $head_str = preg_replace("/".$pattern."/s" , '' , $head_str);
21        $pattern = '<title[^>]*?>(.*)<\s*\/\s*title\s*>';
22        $head_str = preg_replace("/".$pattern."/s" , '' , $head_str);
23
24        $head_str = meta_name_cut('robots',$head_str);
25        $head_str = meta_name_cut('keywords',$head_str);
26        $head_str = meta_name_cut('description',$head_str);
27        $head_str = meta_name_cut('rating',$head_str);
28        $head_str = meta_name_cut('author',$head_str);
29        $head_str = meta_name_cut('copyright',$head_str);
30        $head_str = meta_name_cut('generator',$head_str);
31
32        $head_str = preg_replace("/^(\s)*(\r|\n|\r\n)/m", "", $head_str);       
33        return $head_str;
34}
35
36function meta_name_cut($name = '', $head_str)
37{
38        $pattern = '<\s*meta\s+name\s*=\s*["\']' . $name . '["\'][^>]*?>';
39        $head_str = preg_replace("/".$pattern."/i" , '' , $head_str);
40        return $head_str;
41}
42
43// for title reprace plugin (all in one seo pack)
44function get_xpress_title($contents)
45{
46        $pattern = '<title[^>]*?>(.*)<\s*\/\s*title\s*>';
47        preg_match("/".$pattern."/i",  $contents, $head_matches);
48        $title_str = $head_matches[1];
49        return $title_str;
50}
51
52function get_xpress_meta_name($name = '',$contents)
53{
54        $pattern = '<\s*meta\s+name\s*=\s*["\']' . $name . '["\']\s*content\s*=\s*[\'"](.*)[\'"]\s*\/\s*>';
55        preg_match("/".$pattern."/i",  $contents, $head_matches);
56        $meta = $head_matches[1];
57        return $meta;
58}
59
60// get sidebar rendaring
61function get_sidebar_rander($name = null)
62{
63        $templates = array();
64        if ( isset($name) )
65                $templates[] = "sidebar-{$name}.php";
66
67        $templates[] = "sidebar.php";
68
69        $link= locate_template($templates, false);
70        if ('' == $link)
71                $link =  get_theme_root() . '/default/sidebar.php';
72
73        ob_start();
74                require($link);
75                $sidebar = ob_get_contents();
76        ob_end_clean();
77        return $sidebar;
78}
79
80// < body > tag is pulled out from the header of html contents.
81function get_body($contents)
82{
83        $xpess_config = new XPressME_Class();
84        $pattern = "<body[^>]*?>(.*)<\/body>";
85        preg_match("/".$pattern."/s",  $contents, $body_matches);
86        $body = $body_matches[1];
87
88        if (!$xpess_config->is_theme_sidebar_disp){
89                $side_panel = get_sidebar_rander();
90                        $body = str_replace($side_panel,'',$body);
91        }
92        return $body;
93}
94
95//Making of module header
96function get_xpress_module_header($contents)
97{
98        global $xoopsTpl;
99        if( defined( 'XOOPS_CUBE_LEGACY' ) ) {
100                $preload_make_module_header = $xoopsTpl->get_template_vars('xoops_module_header');
101        } else {
102                $preload_make_module_header = '';
103        }
104       
105        if (! empty($preload_make_module_header)){
106        $preload_make_module_header = '<!-- preload added module header -->
107' . $preload_make_module_header . '
108';
109        }
110       
111        $wp_module_header = '<!-- wordpress  added module header -->
112' . get_mod_header($contents) . '
113<!-- end of wordpress  added module header -->';
114       
115        return $preload_make_module_header . $wp_module_header;
116}
117
118//PHP_SELF and GET are remake for the XOOPS event notification.
119function xpress_remake_global_for_permlink(){
120        global $wp_db,$wp_query;
121        $php_self = $_SERVER['PHP_SELF'];
122        $get = $_GET;
123
124        if (preg_match('/\/$/',$php_self) && !preg_match('/index.php/',$php_self)) {
125                $php_self = $php_self . 'index.php';
126                $_SERVER['PHP_SELF'] = $php_self;
127        }
128        if (empty($_GET)){
129                $query_vars = $wp_query->query_vars;
130                $post = $wp_query->post;
131                if ($wp_query->is_single) {
132                        $_GET = array('p'=>$post->ID);
133                } else if($wp_query->is_category){
134                        $_GET = array('cat'=>$query_vars['cat']);
135                } else if($wp_query->is_author){
136                        $_GET = array('author'=>$query_vars['author']);
137                }
138        }
139}
140
141//rendering for the module header and the body
142function xpress_render($contents){
143        global $xoops_config , $xoopsTpl,$xpress_config;
144        xpress_remake_global_for_permlink();
145        $mydirname = basename(dirname(dirname(__FILE__)));
146        include $xoops_config->xoops_root_path ."/header.php";
147        $xoopsTpl->assign('xoops_module_header', get_xpress_module_header($contents));
148        $page_title = $GLOBALS["xoopsModule"]->getVar("name"). ' &raquo;'. get_xpress_title($contents);
149        $xoopsTpl->assign('xoops_pagetitle', $page_title);
150       
151        $xoops_keywords = $xoopsTpl->get_template_vars('xoops_meta_keywords');
152        $wp_keyword = get_xpress_meta_name('keywords',$contents);
153        switch ($xpress_config->meta_keyword_type){
154                case 'xoops':
155                        break;
156                case 'wordpress':
157                        if (!empty($wp_keyword))
158                                $xoopsTpl->assign('xoops_meta_keywords', $wp_keyword);
159                        break;
160                case 'wordpress_xoops':
161                        if (!empty($wp_keyword)){
162                                if (!empty($xoops_keywords)){
163                                        $keywords = $wp_keyword . ', ' . $xoops_keywords;
164                                } else {
165                                        $keywords = $wp_keyword;
166                                }
167                                $xoopsTpl->assign('xoops_meta_keywords', $keywords);
168                        }
169                        break;
170                default :
171        }
172
173        $xoops_description = $xoopsTpl->get_template_vars('xoops_meta_description');
174        $wp_description = get_xpress_meta_name('description',$contents);
175        switch ($xpress_config->meta_description_type){
176                case 'xoops':
177                        break;
178                case 'wordpress':
179                        if (!empty($wp_description))
180                                $xoopsTpl->assign('xoops_meta_description', $wp_description);
181                        break;
182                case 'wordpress_xoops':
183                        if (!empty($wp_description)){
184                                if (!empty($xoops_description)){
185                                        $description = $wp_description . ' ' . $xoops_description;
186                                } else {
187                                        $description = $wp_description;
188                                }
189                                $xoopsTpl->assign('xoops_meta_description', $description);
190                        }
191                        break;
192                default :
193        }
194
195        $wp_robots = get_xpress_meta_name('robots',$contents);
196        switch ($xpress_config->meta_robot_type){
197                case 'xoops':
198                        break;
199                case 'wordpress':
200                        if (!empty($wp_robots))
201                                $xoopsTpl->assign('xoops_meta_robots', $wp_robots);
202                        break;
203                default :
204        }
205       
206        $xpress_data['body_contents'] = get_body($contents);
207        // used $GLOBALS. becose xpress_left_arrow_post_link() and xpress_right_arrow_post_link() is other loop in this position
208        $xpress_data['left_post_link'] = $GLOBALS['left_arrow_post_link'];
209        $xpress_data['right_post_link'] = $GLOBALS['right_arrow_post_link'];
210        $xpress_data['left_posts_link'] =  str_replace('&laquo;','',xpress_left_arrow_posts_link('echo=0'));
211        $xpress_data['right_posts_link'] = str_replace('&raquo;','',xpress_right_arrow_posts_link('echo=0'));
212        $xpress_data['now_user_level'] = xpress_now_user_level('echo=0');
213
214        $xoopsTpl->assign('xpress', $xpress_data);
215        $templates_file = 'db:'.$mydirname. '_index.html';
216        echo $xoopsTpl->fetch( $templates_file ) ;
217        require_once( ABSPATH .'/include/xpress_breadcrumbs.php' );
218        include $xoops_config->xoops_root_path . '/footer.php';
219}
220
221?>
Note: See TracBrowser for help on using the repository browser.