除虫&实时搜索
This commit is contained in:
		
							parent
							
								
									0e52e37046
								
							
						
					
					
						commit
						b3bab414e6
					
				| 
						 | 
					@ -53,6 +53,7 @@ get_header(); ?>
 | 
				
			||||||
		</main><!-- #main -->
 | 
							</main><!-- #main -->
 | 
				
			||||||
		<?php if ( akina_option('pagenav_style') == 'ajax') { ?>
 | 
							<?php if ( akina_option('pagenav_style') == 'ajax') { ?>
 | 
				
			||||||
		<div id="pagination" <?php if(akina_option('image_category') && is_category(explode(',',akina_option('image_category')))) echo 'class="pagination-archive"'; ?>><?php next_posts_link(__('Previous')); ?></div>
 | 
							<div id="pagination" <?php if(akina_option('image_category') && is_category(explode(',',akina_option('image_category')))) echo 'class="pagination-archive"'; ?>><?php next_posts_link(__('Previous')); ?></div>
 | 
				
			||||||
 | 
							<div id="add_post"><span id="add_post_time" style="visibility: hidden;" title="<?php echo akina_option('auto_load_post',''); ?>"  ></span></div>
 | 
				
			||||||
		<?php }else{ ?>
 | 
							<?php }else{ ?>
 | 
				
			||||||
		<nav class="navigator">
 | 
							<nav class="navigator">
 | 
				
			||||||
        <?php previous_posts_link('<i class="iconfont icon-back"></i>') ?><?php next_posts_link('<i class="iconfont icon-right"></i>') ?>
 | 
					        <?php previous_posts_link('<i class="iconfont icon-back"></i>') ?><?php next_posts_link('<i class="iconfont icon-right"></i>') ?>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -74,6 +74,7 @@ get_header();
 | 
				
			||||||
		</main><!-- #main -->
 | 
							</main><!-- #main -->
 | 
				
			||||||
		<?php if ( akina_option('pagenav_style') == 'ajax') { ?>
 | 
							<?php if ( akina_option('pagenav_style') == 'ajax') { ?>
 | 
				
			||||||
		<div id="pagination"><?php next_posts_link(__('Previous')); ?></div>
 | 
							<div id="pagination"><?php next_posts_link(__('Previous')); ?></div>
 | 
				
			||||||
 | 
							<div id="add_post"><span id="add_post_time" style="visibility: hidden;" title="<?php echo akina_option('auto_load_post',''); ?>"  ></span></div>
 | 
				
			||||||
		<?php }else{ ?>
 | 
							<?php }else{ ?>
 | 
				
			||||||
		<nav class="navigator">
 | 
							<nav class="navigator">
 | 
				
			||||||
        <?php previous_posts_link('<i class="iconfont icon-back"></i>') ?><?php next_posts_link('<i class="iconfont icon-right"></i>') ?>
 | 
					        <?php previous_posts_link('<i class="iconfont icon-back"></i>') ?><?php next_posts_link('<i class="iconfont icon-right"></i>') ?>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										13
									
								
								footer.php
								
								
								
								
							
							
						
						
									
										13
									
								
								footer.php
								
								
								
								
							| 
						 | 
					@ -69,11 +69,22 @@
 | 
				
			||||||
	<!-- search start -->
 | 
						<!-- search start -->
 | 
				
			||||||
	<form class="js-search search-form search-form--modal" method="get" action="<?php echo home_url(); ?>" role="search">
 | 
						<form class="js-search search-form search-form--modal" method="get" action="<?php echo home_url(); ?>" role="search">
 | 
				
			||||||
		<div class="search-form__inner">
 | 
							<div class="search-form__inner">
 | 
				
			||||||
			<div>
 | 
							<?php if(akina_option('live_search')){ ?>
 | 
				
			||||||
 | 
								<div class="micro">
 | 
				
			||||||
 | 
									<i class="iconfont icon-search"></i>
 | 
				
			||||||
 | 
									<input id="search-input" class="text-input" type="search" name="s" placeholder="<?php _e('想要找点什么呢?', 'akina') ?>" required>
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
								<div class="ins-section-wrapper">
 | 
				
			||||||
 | 
					                <a id="Ty" href="#"></a>
 | 
				
			||||||
 | 
					                <div class="ins-section-container" id="PostlistBox"></div>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
							<?php }else{ ?>
 | 
				
			||||||
 | 
								<div class="micro">
 | 
				
			||||||
				<p class="micro mb-"><?php _e('想要找点什么呢?', 'akina') ?></p>
 | 
									<p class="micro mb-"><?php _e('想要找点什么呢?', 'akina') ?></p>
 | 
				
			||||||
				<i class="iconfont icon-search"></i>
 | 
									<i class="iconfont icon-search"></i>
 | 
				
			||||||
				<input class="text-input" type="search" name="s" placeholder="<?php _e('Search', 'akina') ?>" required>
 | 
									<input class="text-input" type="search" name="s" placeholder="<?php _e('Search', 'akina') ?>" required>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
 | 
							<?php } ?>
 | 
				
			||||||
		</div>
 | 
							</div>
 | 
				
			||||||
		<div class="search_close"></div>
 | 
							<div class="search_close"></div>
 | 
				
			||||||
	</form>
 | 
						</form>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@
 | 
				
			||||||
 * @package Sakura
 | 
					 * @package Sakura
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
define( 'SAKURA_VERSION', '3.2.1' );
 | 
					define( 'SAKURA_VERSION', '3.2.2' );
 | 
				
			||||||
define( 'BUILD_VERSION', '3' );
 | 
					define( 'BUILD_VERSION', '3' );
 | 
				
			||||||
define( 'JSDELIVR_VERSION', '3.6.7' );
 | 
					define( 'JSDELIVR_VERSION', '3.6.7' );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,7 +28,16 @@ if ( !function_exists( 'optionsframework_init' ) ) {
 | 
				
			||||||
	require_once dirname( __FILE__ ) . '/inc/options-framework.php';
 | 
						require_once dirname( __FILE__ ) . '/inc/options-framework.php';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 | 
					//live search
 | 
				
			||||||
 | 
					if(akina_option('live_search')){
 | 
				
			||||||
 | 
					    if (file_exists(get_wp_root_path().'/themes/Sakura/cache/search.json')) {
 | 
				
			||||||
 | 
					        if (time() - filemtime(get_wp_root_path().'/themes/Sakura/cache/search.json') > 10800) {
 | 
				
			||||||
 | 
					            require_once(dirname( __FILE__ ) .'/inc/cache-search.php');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }else {
 | 
				
			||||||
 | 
					        require_once(dirname( __FILE__ ) .'/inc/cache-search.php');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function akina_setup() {
 | 
					function akina_setup() {
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
| 
						 | 
					@ -1602,4 +1611,9 @@ function DEFAULT_FEATURE_IMAGE() {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//防止设置置顶文章造成的图片同侧bug
 | 
				
			||||||
 | 
					add_action( 'pre_get_posts', function( $q ){
 | 
				
			||||||
 | 
					    if ( $q->is_home() && $q->is_main_query() && $q->get( 'paged' ) > 1 )
 | 
				
			||||||
 | 
					        $q->set( 'post__not_in', get_option( 'sticky_posts' ) );
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
//code end 
 | 
					//code end 
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,71 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					class cacheFile{
 | 
				
			||||||
 | 
					    private $_dir;
 | 
				
			||||||
 | 
					    const EXT = '.json';
 | 
				
			||||||
 | 
					    public function __construct() {
 | 
				
			||||||
 | 
					        $this->_dir = get_wp_root_path().'/themes/Sakura/cache/';
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    public function cacheData($key, $value = '', $path = '') {
 | 
				
			||||||
 | 
					        $filePath = $this->_dir.$path.$key.self::EXT;
 | 
				
			||||||
 | 
					        if ($value !== '') {
 | 
				
			||||||
 | 
					            if (is_null($value)) {
 | 
				
			||||||
 | 
					                return unlink($filePath);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            $dir = dirname($filePath);
 | 
				
			||||||
 | 
					            if (!is_dir($dir)) {
 | 
				
			||||||
 | 
					                mkdir($dir, 0777);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return file_put_contents($filePath,$value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!is_file($filePath)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            return json_decode(file_get_contents($filePath), true);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$vowels = array("[", "{","]","}","<",">","\r\n", "\r", "\n","-","'",'"','`'," ",":",";",'\\',"  ","toc");
 | 
				
			||||||
 | 
					$regex = <<<EOS
 | 
				
			||||||
 | 
					/<\/?[a-zA-Z]+("[^"]*"|'[^']*'|[^'">])*>|begin[\S\s]*\/begin|hermit[\S\s]*\/hermit|img[\S\s]*\/img|{{.*?}}|:.*?:/m
 | 
				
			||||||
 | 
					EOS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$posts = new WP_Query('posts_per_page=-1&post_status=publish&post_type=post');
 | 
				
			||||||
 | 
					while ($posts->have_posts()) : $posts->the_post();
 | 
				
			||||||
 | 
					    $output .= '{"type":"post","link":"'.get_post_permalink().'","title":'.json_encode(get_the_title()).',"comments":"'.get_comments_number('0', '1', '%').'","text":'.json_encode(str_replace($vowels, " ",preg_replace($regex,' ',get_the_content()))).'},';
 | 
				
			||||||
 | 
					endwhile;
 | 
				
			||||||
 | 
					wp_reset_postdata();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$pages = get_pages();
 | 
				
			||||||
 | 
					foreach ($pages as $page) {
 | 
				
			||||||
 | 
					    $output .= '{"type":"page","link":"'.get_page_link($page).'","title":'.json_encode($page->post_title).',"comments":"'.$page->comment_count.'","text":'.json_encode(str_replace($vowels, " ",preg_replace($regex,' ',$page->post_content))).'},';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$tags = get_tags();
 | 
				
			||||||
 | 
					foreach ($tags as $tag) {
 | 
				
			||||||
 | 
					    $output .= '{"type":"tag","link":"'.get_term_link($tag).'","title":'.json_encode($tag->name).',"comments":"","text":""},';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$categories = get_categories();
 | 
				
			||||||
 | 
					foreach ($categories as $category) {
 | 
				
			||||||
 | 
					    $output .= '{"type":"category","link":"'.get_term_link($category).'","title":'.json_encode($category->name).',"comments":"","text":""},';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if(akina_option('live_search_comment')){
 | 
				
			||||||
 | 
					    $comments = get_comments();
 | 
				
			||||||
 | 
					    foreach ($comments as $comment) {
 | 
				
			||||||
 | 
					        $is_private = get_comment_meta($comment->comment_ID, '_private', true);
 | 
				
			||||||
 | 
					        if($is_private){
 | 
				
			||||||
 | 
					            $output .= '{"type":"comment","link":"'.get_comment_link($comment).'","title":'.json_encode(get_the_title($comment->comment_post_ID)).',"comments":"","text":'.json_encode($comment->comment_author.":该评论为私密评论").'},';
 | 
				
			||||||
 | 
					            continue;
 | 
				
			||||||
 | 
					        }else{
 | 
				
			||||||
 | 
					            $output .= '{"type":"comment","link":"'.get_comment_link($comment).'","title":'.json_encode(get_the_title($comment->comment_post_ID)).',"comments":"","text":'.json_encode(str_replace($vowels, " ",preg_replace($regex," ",$comment->comment_author.":".$comment->comment_content))).'},';
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$output = substr($output,0,strlen($output)-1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$data = '['.$output.']';
 | 
				
			||||||
 | 
					$TheFile = get_wp_root_path().'/themes/Sakura/cache/search.json';
 | 
				
			||||||
 | 
					$cacheFile = new cacheFile();
 | 
				
			||||||
 | 
					$cacheFile->cacheData('search', $data);
 | 
				
			||||||
| 
						 | 
					@ -50,6 +50,12 @@ if ( akina_option('theme_skin') ) { ?>
 | 
				
			||||||
    background-color: <?php echo akina_option('theme_skin'); ?>
 | 
					    background-color: <?php echo akina_option('theme_skin'); ?>
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
<?php } ?>
 | 
					<?php } ?>
 | 
				
			||||||
 | 
					<?php if(akina_option('live_search')){ ?>
 | 
				
			||||||
 | 
					.search-form--modal .search-form__inner {
 | 
				
			||||||
 | 
					    bottom: unset !important;
 | 
				
			||||||
 | 
					    top: 10% !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					<?php } ?>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<?php } // theme-skin ?>
 | 
					<?php } // theme-skin ?>
 | 
				
			||||||
<?php // Custom style
 | 
					<?php // Custom style
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,7 @@ mashiro_option.template_url = "<?php echo get_template_directory_uri(); ?>";
 | 
				
			||||||
mashiro_option.site_url = "<?php echo site_url(); ?>";
 | 
					mashiro_option.site_url = "<?php echo site_url(); ?>";
 | 
				
			||||||
mashiro_option.qq_api_url = "https://api.2heng.xin/qqinfo/"; 
 | 
					mashiro_option.qq_api_url = "https://api.2heng.xin/qqinfo/"; 
 | 
				
			||||||
mashiro_option.qq_avatar_api_url = "https://api.2heng.xin/qqinfo/";
 | 
					mashiro_option.qq_avatar_api_url = "https://api.2heng.xin/qqinfo/";
 | 
				
			||||||
 | 
					mashiro_option.live_search = <?php if ( akina_option('live_search') ){ echo 'true'; } else { echo 'false'; } ?>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<?php if( is_home() ){ ?>
 | 
					<?php if( is_home() ){ ?>
 | 
				
			||||||
mashiro_option.land_at_home = true;
 | 
					mashiro_option.land_at_home = true;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										125
									
								
								js/sakura-app.js
								
								
								
								
							
							
						
						
									
										125
									
								
								js/sakura-app.js
								
								
								
								
							| 
						 | 
					@ -1331,10 +1331,10 @@ var home = location.href,
 | 
				
			||||||
                    window.resizeFlag= null;
 | 
					                    window.resizeFlag= null;
 | 
				
			||||||
                    $(window).resize(function () {
 | 
					                    $(window).resize(function () {
 | 
				
			||||||
                        //直接resize性能爆炸,改成延时
 | 
					                        //直接resize性能爆炸,改成延时
 | 
				
			||||||
                        if(resizeFlag!=null){
 | 
					                        if(resizeFlag=null){
 | 
				
			||||||
                            clearTimeout(resizeFlag);
 | 
					                            clearTimeout(resizeFlag);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        resizeFlag = setTimeout(function(){ Siren.AH();resizeFlag=null }, 1000);
 | 
					                        resizeFlag = setTimeout(function(){ Siren.AH();}, 1000);
 | 
				
			||||||
                    })
 | 
					                    })
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
| 
						 | 
					@ -1386,11 +1386,131 @@ var home = location.href,
 | 
				
			||||||
            $('.js-toggle-search').on('click', function () {
 | 
					            $('.js-toggle-search').on('click', function () {
 | 
				
			||||||
                $('.js-toggle-search').toggleClass('is-active');
 | 
					                $('.js-toggle-search').toggleClass('is-active');
 | 
				
			||||||
                $('.js-search').toggleClass('is-visible');
 | 
					                $('.js-search').toggleClass('is-visible');
 | 
				
			||||||
 | 
					                $('html').css('overflow-y','hidden');
 | 
				
			||||||
 | 
					                if (mashiro_option.live_search) {
 | 
				
			||||||
 | 
					                var QueryStorage = [];
 | 
				
			||||||
 | 
					                search_a("https://"+document.domain+"/wp-content/themes/Sakura/cache/search.json");
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                var otxt = document.getElementById("search-input"),
 | 
				
			||||||
 | 
					                    list = document.getElementById("PostlistBox"),
 | 
				
			||||||
 | 
					                    Record = list.innerHTML,
 | 
				
			||||||
 | 
					                    searchFlag = null;
 | 
				
			||||||
 | 
					                otxt.oninput = function () {
 | 
				
			||||||
 | 
					                    if(searchFlag=null){
 | 
				
			||||||
 | 
					                        clearTimeout(searchFlag);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    searchFlag = setTimeout(function(){
 | 
				
			||||||
 | 
					                        query(QueryStorage, otxt.value, Record);
 | 
				
			||||||
 | 
					                        div_href();
 | 
				
			||||||
 | 
					                    }, 250);
 | 
				
			||||||
 | 
					                };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                function search_a(val) {
 | 
				
			||||||
 | 
					                    if(sessionStorage.getItem('search')!=null){
 | 
				
			||||||
 | 
					                        QueryStorage = JSON.parse(sessionStorage.getItem('search'));
 | 
				
			||||||
 | 
					                        query(QueryStorage, $("#search-input").val(), Record);
 | 
				
			||||||
 | 
					                        div_href();
 | 
				
			||||||
 | 
					                    }else{
 | 
				
			||||||
 | 
					                        var _xhr = new XMLHttpRequest();
 | 
				
			||||||
 | 
					                        _xhr.open("GET", val, true)
 | 
				
			||||||
 | 
					                        _xhr.send();
 | 
				
			||||||
 | 
					                        _xhr.onreadystatechange = function () {
 | 
				
			||||||
 | 
					                            if (_xhr.readyState == 4 && _xhr.status == 200) {
 | 
				
			||||||
 | 
					                                json = _xhr.responseText;
 | 
				
			||||||
 | 
					                                if (json != "") {
 | 
				
			||||||
 | 
					                                    sessionStorage.setItem('search',json);
 | 
				
			||||||
 | 
					                                    QueryStorage = JSON.parse(json);
 | 
				
			||||||
 | 
					                                    query(QueryStorage, otxt.value, Record);
 | 
				
			||||||
 | 
					                                    div_href();
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (!Object.values) Object.values = function (obj) {
 | 
				
			||||||
 | 
					                    if (obj !== Object(obj))
 | 
				
			||||||
 | 
					                        throw new TypeError('Object.values called on a non-object');
 | 
				
			||||||
 | 
					                    var val = [],
 | 
				
			||||||
 | 
					                        key;
 | 
				
			||||||
 | 
					                    for (key in obj) {
 | 
				
			||||||
 | 
					                        if (Object.prototype.hasOwnProperty.call(obj, key)) {
 | 
				
			||||||
 | 
					                            val.push(obj[key]);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    return val;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                function Cx(arr, q) {
 | 
				
			||||||
 | 
					                    q = q.replace(q,"^(?=.*?"+q+").+$").replace(/\s/g,")(?=.*?");
 | 
				
			||||||
 | 
					                    i = arr.filter(
 | 
				
			||||||
 | 
					                        v => Object.values(v).some(
 | 
				
			||||||
 | 
					                            v => new RegExp(q + '').test(v)
 | 
				
			||||||
 | 
					                        )
 | 
				
			||||||
 | 
					                    );
 | 
				
			||||||
 | 
					                    return i;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                function div_href(){
 | 
				
			||||||
 | 
					                    $(".ins-selectable").each(function(){
 | 
				
			||||||
 | 
					                        $(this).click(function(){
 | 
				
			||||||
 | 
					                            $("#Ty").attr('href',$(this).attr('href'));
 | 
				
			||||||
 | 
					                            $("#Ty").click();
 | 
				
			||||||
 | 
					                            $(".search_close").click();
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                function search_result(keyword, link, fa, title, iconfont, comments, text){
 | 
				
			||||||
 | 
					                    if(keyword){
 | 
				
			||||||
 | 
					                        var s = keyword.trim().split(" "),
 | 
				
			||||||
 | 
					                            a = title.indexOf(s[s.length-1]),
 | 
				
			||||||
 | 
					                            b = text.indexOf(s[s.length-1]);
 | 
				
			||||||
 | 
					                        title=a<60 ? title.slice(0,80):title.slice(a-30,a+30);
 | 
				
			||||||
 | 
					                        title=title.replace(s[s.length-1], '<mark class="search-keyword"> ' + s[s.length-1].toUpperCase() + ' </mark>');
 | 
				
			||||||
 | 
					                        text=b<60 ? text.slice(0,80):text.slice(b-30,b+30);
 | 
				
			||||||
 | 
					                        text=text.replace(s[s.length-1], '<mark class="search-keyword"> ' + s[s.length-1].toUpperCase() + ' </mark>');
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    return '<div class="ins-selectable ins-search-item" href="' + link + '"><header><i class="fa fa-'+ fa +'" aria-hidden="true"></i>' + title + '<i class="iconfont icon-'+ iconfont +'"> ' + comments + '</i>' + '</header><p class="ins-search-preview">' + text + '</p></div>';
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                function query(B, A, z) {
 | 
				
			||||||
 | 
						                var x, v, s, y = "",
 | 
				
			||||||
 | 
							                w = "",
 | 
				
			||||||
 | 
							                u = "",
 | 
				
			||||||
 | 
							                r = "",
 | 
				
			||||||
 | 
					                		p = "",
 | 
				
			||||||
 | 
							                F = "",
 | 
				
			||||||
 | 
							                H = "",
 | 
				
			||||||
 | 
							                G = '<section class="ins-section"><header class="ins-section-header">',
 | 
				
			||||||
 | 
							                D = "</section>",
 | 
				
			||||||
 | 
							                E = "</header>",
 | 
				
			||||||
 | 
							                C = Cx(B, A.trim());
 | 
				
			||||||
 | 
						                for (x = 0; x < Object.keys(C).length; x++) {
 | 
				
			||||||
 | 
							                H = C[x];
 | 
				
			||||||
 | 
							                switch (v = H.type) {
 | 
				
			||||||
 | 
							                case "post":
 | 
				
			||||||
 | 
								                w = w + search_result(A, H.link, "file", H.title, "mark", H.comments, H.text);
 | 
				
			||||||
 | 
								                break;
 | 
				
			||||||
 | 
							                case "tag":
 | 
				
			||||||
 | 
								                p = p + search_result("", H.link, "tag", H.title, "none", "", "");
 | 
				
			||||||
 | 
								                break;
 | 
				
			||||||
 | 
							                case "category":
 | 
				
			||||||
 | 
								                r = r + search_result("", H.link, "folder", H.title, "none", "", "");
 | 
				
			||||||
 | 
								                break;
 | 
				
			||||||
 | 
							                case "page":
 | 
				
			||||||
 | 
								                u = u + search_result(A, H.link, "file", H.title, "mark", H.comments, H.text);
 | 
				
			||||||
 | 
								                break;
 | 
				
			||||||
 | 
							                case "comment":
 | 
				
			||||||
 | 
								                F = F + search_result(A, H.link, "comment", H.title, "none", "", H.text);
 | 
				
			||||||
 | 
								                break
 | 
				
			||||||
 | 
							                }
 | 
				
			||||||
 | 
						                }
 | 
				
			||||||
 | 
						                w && (y = y + G + "文章" + E + w + D), u && (y = y + G + "页面" + E + u + D), r && (y = y + G + "分类" + E + r + D), p && (y = y + G + "标签" + E + p + D), F && (y = y + G + "评论" + E + F + D), s = document.getElementById("PostlistBox"), s.innerHTML = y
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
            $('.search_close').on('click', function () {
 | 
					            $('.search_close').on('click', function () {
 | 
				
			||||||
                if ($('.js-search').hasClass('is-visible')) {
 | 
					                if ($('.js-search').hasClass('is-visible')) {
 | 
				
			||||||
                    $('.js-toggle-search').toggleClass('is-active');
 | 
					                    $('.js-toggle-search').toggleClass('is-active');
 | 
				
			||||||
                    $('.js-search').toggleClass('is-visible');
 | 
					                    $('.js-search').toggleClass('is-visible');
 | 
				
			||||||
 | 
										$('html').css('overflow-y','unset');
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
            $('#show-nav').on('click', function () {
 | 
					            $('#show-nav').on('click', function () {
 | 
				
			||||||
| 
						 | 
					@ -1711,6 +1831,7 @@ $(function () {
 | 
				
			||||||
            if ($('.js-search.is-visible').length > 0) {
 | 
					            if ($('.js-search.is-visible').length > 0) {
 | 
				
			||||||
                $('.js-toggle-search').toggleClass('is-active');
 | 
					                $('.js-toggle-search').toggleClass('is-active');
 | 
				
			||||||
                $('.js-search').toggleClass('is-visible');
 | 
					                $('.js-search').toggleClass('is-visible');
 | 
				
			||||||
 | 
					                $('html').css('overflow-y','unset');
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        window.addEventListener('popstate', function (e) {
 | 
					        window.addEventListener('popstate', function (e) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										14
									
								
								options.php
								
								
								
								
							
							
						
						
									
										14
									
								
								options.php
								
								
								
								
							| 
						 | 
					@ -967,6 +967,20 @@ function optionsframework_options() {
 | 
				
			||||||
			'type_4' => __('23k 次访问(中式)', ''),
 | 
								'type_4' => __('23k 次访问(中式)', ''),
 | 
				
			||||||
		));
 | 
							));
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					    $options[] = array(
 | 
				
			||||||
 | 
							'name' => __('启用实时搜索', 'options_framework_theme'),
 | 
				
			||||||
 | 
							'desc' => __('前台实现实时搜索,每3小时更新一次缓存,可通过删除主题文件夹下的 cache 文件夹手动更新缓存'),
 | 
				
			||||||
 | 
							'id' => 'live_search',
 | 
				
			||||||
 | 
							'std' => '0',
 | 
				
			||||||
 | 
							'type' => 'checkbox');
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    $options[] = array(
 | 
				
			||||||
 | 
							'name' => __('实时搜索包含评论', 'options_framework_theme'),
 | 
				
			||||||
 | 
							'desc' => __('在实时搜索中搜索评论(如果网站评论数量太多不建议开启)'),
 | 
				
			||||||
 | 
							'id' => 'live_search_comment',
 | 
				
			||||||
 | 
							'std' => '0',
 | 
				
			||||||
 | 
							'type' => 'checkbox');
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
    $options[] = array(
 | 
					    $options[] = array(
 | 
				
			||||||
		'name' => __('启用 baguetteBox', 'options_framework_theme'),
 | 
							'name' => __('启用 baguetteBox', 'options_framework_theme'),
 | 
				
			||||||
		'desc' => __('默认禁用,<a href="https://github.com/mashirozx/Sakura/wiki/Fancybox">请阅读说明</a>', 'options_framework_theme'),
 | 
							'desc' => __('默认禁用,<a href="https://github.com/mashirozx/Sakura/wiki/Fancybox">请阅读说明</a>', 'options_framework_theme'),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										112
									
								
								style.css
								
								
								
								
							
							
						
						
									
										112
									
								
								style.css
								
								
								
								
							| 
						 | 
					@ -5,7 +5,7 @@ Theme URI: https://2heng.xin/theme-sakura/
 | 
				
			||||||
Author: Mashiro, Louie, Fuzzz
 | 
					Author: Mashiro, Louie, Fuzzz
 | 
				
			||||||
Author URI: http://2heng.xin
 | 
					Author URI: http://2heng.xin
 | 
				
			||||||
Description: Akina主题分支(原版地址 http://www.akina.pw/themeakina)
 | 
					Description: Akina主题分支(原版地址 http://www.akina.pw/themeakina)
 | 
				
			||||||
Version: 3.2.1
 | 
					Version: 3.2.2
 | 
				
			||||||
License: GNU General Public License v2 or later
 | 
					License: GNU General Public License v2 or later
 | 
				
			||||||
License URI: http://www.gnu.org/licenses/gpl-2.0.html
 | 
					License URI: http://www.gnu.org/licenses/gpl-2.0.html
 | 
				
			||||||
Text Domain: akina
 | 
					Text Domain: akina
 | 
				
			||||||
| 
						 | 
					@ -4176,10 +4176,6 @@ i.iconfont.js-toggle-search.iconsearch {
 | 
				
			||||||
    background-position: bottom right
 | 
					    background-position: bottom right
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.search-form div {
 | 
					 | 
				
			||||||
    position: relative
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.search-form .search_close {
 | 
					.search-form .search_close {
 | 
				
			||||||
    position: absolute;
 | 
					    position: absolute;
 | 
				
			||||||
    width: 35px;
 | 
					    width: 35px;
 | 
				
			||||||
| 
						 | 
					@ -4283,6 +4279,112 @@ i.iconfont.js-toggle-search.iconsearch {
 | 
				
			||||||
    list-style-type: decimal
 | 
					    list-style-type: decimal
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.micro {
 | 
				
			||||||
 | 
						position: relative
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ins-section-wrapper a {
 | 
				
			||||||
 | 
						-webkit-transition: none;
 | 
				
			||||||
 | 
						transition: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ins-section-wrapper header {
 | 
				
			||||||
 | 
						position: unset;
 | 
				
			||||||
 | 
						width: auto;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ins-selectable {
 | 
				
			||||||
 | 
						cursor: pointer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ins-section-wrapper {
 | 
				
			||||||
 | 
						left: 0;
 | 
				
			||||||
 | 
						right: 0;
 | 
				
			||||||
 | 
						top: 45px;
 | 
				
			||||||
 | 
						bottom: 0;
 | 
				
			||||||
 | 
						margin-top: 45px;
 | 
				
			||||||
 | 
						height: 70vh;
 | 
				
			||||||
 | 
						overflow-y: auto;
 | 
				
			||||||
 | 
						position: absolute;
 | 
				
			||||||
 | 
						border-radius: 14px 0 0 14px;
 | 
				
			||||||
 | 
						scroll-behavior: smooth;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ins-section-container {
 | 
				
			||||||
 | 
						position: relative;
 | 
				
			||||||
 | 
						background: rgba(241, 248, 253, 0.5);
 | 
				
			||||||
 | 
						border-radius: 14px;
 | 
				
			||||||
 | 
						font-family: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ins-section {
 | 
				
			||||||
 | 
						font-size: 14px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ins-section .iconfont.icon-mark {
 | 
				
			||||||
 | 
						font-size: 13px;
 | 
				
			||||||
 | 
						color: #ccc;
 | 
				
			||||||
 | 
						bottom: unset;
 | 
				
			||||||
 | 
						margin-top: unset;
 | 
				
			||||||
 | 
						line-height: unset;
 | 
				
			||||||
 | 
						margin-left: 16px;
 | 
				
			||||||
 | 
						left: unset;
 | 
				
			||||||
 | 
						position: unset;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ins-section .fa {
 | 
				
			||||||
 | 
						font-size: 18px;
 | 
				
			||||||
 | 
						color: #333;
 | 
				
			||||||
 | 
						bottom: unset;
 | 
				
			||||||
 | 
						left: 12px;
 | 
				
			||||||
 | 
						margin-top: -3px;
 | 
				
			||||||
 | 
						line-height: unset;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ins-section .ins-section-header,.ins-section .ins-search-item {
 | 
				
			||||||
 | 
						padding: 8px 15px;
 | 
				
			||||||
 | 
						cursor: url(https://cdn.jsdelivr.net/gh/moezx/cdn@3.1.9/img/Sakura/cursor/ayuda.cur),auto;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ins-section .ins-search-item .search-keyword {
 | 
				
			||||||
 | 
						font-size: 15px;
 | 
				
			||||||
 | 
						border-radius: 5px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ins-section .ins-section-header {
 | 
				
			||||||
 | 
						color: #9a9a9a;
 | 
				
			||||||
 | 
						border-bottom: 1px solid #e2e2e2;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ins-section .ins-search-item header,.ins-section .ins-search-item .ins-search-preview {
 | 
				
			||||||
 | 
						overflow: hidden;
 | 
				
			||||||
 | 
						white-space: nowrap;
 | 
				
			||||||
 | 
						text-overflow: ellipsis;
 | 
				
			||||||
 | 
						color: #9a9a9a;
 | 
				
			||||||
 | 
						margin-left: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ins-section .ins-search-item header i {
 | 
				
			||||||
 | 
						margin-right: 8px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ins-section .ins-search-item .ins-search-preview {
 | 
				
			||||||
 | 
						font-size: 12px;
 | 
				
			||||||
 | 
						color: #9a9a9a;
 | 
				
			||||||
 | 
						margin: 5px 0 0 20px;
 | 
				
			||||||
 | 
						cursor: url(https://cdn.jsdelivr.net/gh/moezx/cdn@3.1.9/img/Sakura/cursor/ayuda.cur),auto;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ins-section .ins-search-item:hover,.ins-section .ins-search-item.active {
 | 
				
			||||||
 | 
						color: #fff;
 | 
				
			||||||
 | 
						background: rgba(22, 160, 133, 0.3);
 | 
				
			||||||
 | 
						border-radius: 14px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ins-section .ins-search-item:hover .ins-slug,.ins-section .ins-search-item.active .ins-slug,.ins-section .ins-search-item:hover .ins-search-preview,.ins-section .ins-search-item.active .ins-search-preview,.ins-section .ins-search-item:hover header,.ins-section .ins-search-item:hover .iconfont {
 | 
				
			||||||
 | 
						color: #333;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.sorry ul {
 | 
					.sorry ul {
 | 
				
			||||||
    padding: 0 0 0 20px;
 | 
					    padding: 0 0 0 20px;
 | 
				
			||||||
    margin: 0
 | 
					    margin: 0
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue