1 Star 3 Fork 0

yeszao / D9

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
functions.php 21.71 KB
一键复制 编辑 原始数据 按行查看 历史
yeszao_e17d 提交于 2019-06-12 13:25 . optimize row counts
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603
<?php
$dname = 'D9';
add_action( 'after_setup_theme', 'deel_setup' );
include('admin/d8.php');
include('widgets/index.php');
if ( ! function_exists( 'wpartisan_set_no_found_rows' ) ) :
/**
* Sets the 'no_found_rows' param to true.
*
* In the WP_Query class this stops the use of SQL_CALC_FOUND_ROWS in the
* MySql query it generates. It's slow so we're going to replace it with
* a COUNT(*) instead.
*
* @param WP_Query $wp_query The WP_Query instance. Passed by reference.
* @return void
*/
function wpartisan_set_no_found_rows( \WP_Query $wp_query ) {
$wp_query->set( 'no_found_rows', true );
}
endif;
add_filter( 'pre_get_posts', 'wpartisan_set_no_found_rows', 10, 1 );
if ( ! function_exists( 'wpartisan_set_found_posts' ) ) :
/**
* Workout the pagination values.
*
* Uses the query parts to run a custom count(*) query against the database
* then constructs and sets the pagination results for this wp_query.
*
* @param array $clauses Array of clauses that make up the SQL query.
* @param WP_Query $wp_query The WP_Query instance. Passed by reference.
* @return array
*/
function wpartisan_set_found_posts( $clauses, \WP_Query $wp_query ) {
// Don't proceed if it's a singular page.
if ( $wp_query->is_singular() ) {
return $clauses;
}
global $wpdb;
// Check if they're set.
$where = isset( $clauses[ 'where' ] ) ? $clauses[ 'where' ] : '';
$join = isset( $clauses[ 'join' ] ) ? $clauses[ 'join' ] : '';
$distinct = isset( $clauses[ 'distinct' ] ) ? $clauses[ 'distinct' ] : '';
// Construct and run the query. Set the result as the 'found_posts'
// param on the main query we want to run.
$wp_query->found_posts = (int)$wpdb->get_row( "EXPLAIN SELECT $distinct * FROM {$wpdb->posts} $join WHERE 1=1 $where" )->rows;
// Work out how many posts per page there should be.
$posts_per_page = ( ! empty( $wp_query->query_vars['posts_per_page'] ) ? absint( $wp_query->query_vars['posts_per_page'] ) : absint( get_option( 'posts_per_page' ) ) );
// Set the max_num_pages.
$wp_query->max_num_pages = ceil( $wp_query->found_posts / $posts_per_page );
// Return the $clauses so the main query can run.
return $clauses;
}
endif;
add_filter( 'posts_clauses', 'wpartisan_set_found_posts', 10, 2 );
/**
* 自定义JS文件
*/
function addScript()
{
if (!is_admin()) {
wp_deregister_script('jquery');
wp_deregister_script('jquery-migrate');
wp_register_script('jquery', 'https://cdn.bootcss.com/jquery/3.1.1/jquery.min.js', [], '20170417', true);
wp_register_script('highlight', 'https://cdn.bootcss.com/highlight.js/9.9.0/highlight.min.js', [], '20170417', true);
wp_register_script('d8', get_template_directory_uri() . '/js/d9.min.js', [], '20170417', true);
wp_enqueue_script('jquery');
wp_enqueue_script('highlight');
wp_enqueue_script('d8');
}
}
add_action('init', 'addScript');
/**
* 自定义样式文件
*/
function addStyle()
{
if (!is_admin()) {
// wp_register_style('bootstrap', 'https://cdn.bootcss.com/bootstrap/4.0.0-alpha.5/css/bootstrap.min.css');
wp_register_style('highlight', 'https://cdn.bootcss.com/highlight.js/9.9.0/styles/github-gist.min.css');
wp_register_style('highlight-custom', get_template_directory_uri() . '/css/github-gist.css');
// wp_enqueue_style('bootstrap');
wp_enqueue_style('highlight');
wp_enqueue_style('highlight-custom');
}
}
add_action('init', 'addStyle');
/**
* 自定义标题
* @param $title
* @param $sep
* @param $seplocation
* @return string
*/
function new_title( $title, $sep, $seplocation ) {
$paged = get_query_var('paged');
$blog_name = get_bloginfo('name');
$site_description = get_bloginfo('description');
// 判断是否为首页
if ($site_description && (is_front_page() || is_home())) {
return sprintf('%s %s %s', $blog_name, $sep, $site_description );
}
// 右边分隔符
$title = rtrim($title, ' - ');
$title = rtrim($title, ' &#8211; ');
if (is_category()) {
$title .= ' 分类';
}
elseif (is_tag()) {
$title .= ' 标签';
}
elseif(is_author()) {
$title .= ' 的文章';
}
elseif(is_date() || is_archive()) {
$title .= ' 存档';
}
// 添加页码
if ($paged > 1) {
$title .= ' 第' . $paged . '页';
}
if($seplocation === 'left') {
return sprintf('%s %s %s', $blog_name, $sep, $title);
}
return sprintf('%s %s %s', $title, $sep, $blog_name);
}
add_filter('wp_title', 'new_title', 10, 3);
//评论样式
function deel_comment_list($comment, $args, $depth) {
$class = join(' ', get_comment_class());
$avatar = get_avatar( $comment->comment_author_email, $size = '36');
$comment_id = get_comment_ID();
$comment_content = convert_smilies(get_comment_text());
$comment_author_link = get_comment_author_link();
$date = timeago( $comment->comment_date );
$pend = '';
if ($comment->comment_approved == '0'){
$pend = '<span class="c-approved">您的评论正在排队审核中,请稍后!</span><br />';
}
$edit = $reply = '';
if ($comment->comment_approved !== '0'){
$reply = get_comment_reply_link( array_merge($args, array('add_below' => 'div-comment', 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) );
$edit = sprintf('<a class="comment-edit-link" href="%s">编辑</a>', esc_url(get_edit_comment_link($comment_id)));
}
echo <<<HERE
<li class="{$class}" id="comment-{$comment_id}">
<div class="c-avatar">{$avatar}</div>
<div class="c-main" id="div-comment-{$comment_id}">
{$comment_content}
{$pend}
<div class="c-meta">
<span class="c-author">{$comment_author_link}</span>
{$date}
{$reply}
{$edit}
</div>
</div>
HERE;
}
/*
***********************以前的代码*****************************
*/
function deel_setup(){
//去除头部冗余代码
remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'index_rel_link' );
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'wp_generator' );
//隐藏admin Bar
add_filter('show_admin_bar','hide_admin_bar');
//关键字
add_action('wp_head','deel_keywords');
//页面描述
add_action('wp_head','deel_description');
//阻止站内PingBack
if( dopt('d_pingback_b') ){
add_action('pre_ping','deel_noself_ping');
}
//评论回复邮件通知
add_action('comment_post','comment_mail_notify');
//自动勾选评论回复邮件通知,不勾选则注释掉
// add_action('comment_form','deel_add_checkbox');
//评论表情改造,如需更换表情,img/smilies/下替换
add_filter('smilies_src','deel_smilies_src',1,10);
//文章末尾增加版权
add_filter('the_content','deel_copyright');
//移除自动保存和修订版本
if( dopt('d_autosave_b') ){
add_action('wp_print_scripts','deel_disable_autosave' );
remove_action('pre_post_update','wp_save_post_revision' );
}
//去除自带js
//wp_deregister_script( 'l10n' );
//修改默认发信地址
add_filter('wp_mail_from', 'deel_res_from_email');
add_filter('wp_mail_from_name', 'deel_res_from_name');
//缩略图设置
add_theme_support('post-thumbnails');
set_post_thumbnail_size(220, 150, true);
add_editor_style('editor-style.css');
//定义菜单
if (function_exists('register_nav_menus')){
register_nav_menus( array(
'nav' => __('网站导航'),
'pagemenu' => __('页面导航')
));
}
}
if (function_exists('register_sidebar')){
register_sidebar(array(
'name' => '全站侧栏',
'id' => 'widget_sitesidebar',
'before_widget' => '<div class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget_tit">',
'after_title' => '</h3>'
));
register_sidebar(array(
'name' => '首页侧栏',
'id' => 'widget_sidebar',
'before_widget' => '<div class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget_tit">',
'after_title' => '</h3>'
));
register_sidebar(array(
'name' => '分类/标签/搜索页侧栏',
'id' => 'widget_othersidebar',
'before_widget' => '<div class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget_tit">',
'after_title' => '</h3>'
));
register_sidebar(array(
'name' => '文章页侧栏',
'id' => 'widget_postsidebar',
'before_widget' => '<div class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget_tit">',
'after_title' => '</h3>'
));
register_sidebar(array(
'name' => '页面侧栏',
'id' => 'widget_pagesidebar',
'before_widget' => '<div class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget_tit">',
'after_title' => '</h3>'
));
}
function deel_breadcrumbs(){
if( !is_single() ) return false;
$categorys = get_the_category();
$category = $categorys[0];
return '你的位置:<a href="'.get_bloginfo('url').'">'.get_bloginfo('name').'</a> <small>></small> '.get_category_parents($category->term_id, true, ' <small>></small> ').'<span class="muted">'.get_the_title().'</span>';
}
if ( ! function_exists( 'deel_paging' ) ) :
function deel_paging() {
$p = 4;
if ( is_singular() ) return;
global $wp_query, $paged;
$max_page = $wp_query->max_num_pages;
if ( $max_page == 1 ) return;
echo '<div class="pagination"><ul>';
if ( empty( $paged ) ) $paged = 1;
// echo '<span class="pages">Page: ' . $paged . ' of ' . $max_page . ' </span> ';
echo '<li class="prev-page">'; previous_posts_link('上一页'); echo '</li>';
if ( $paged > $p + 1 ) p_link( 1, '<li>第一页</li>' );
if ( $paged > $p + 2 ) echo "<li><span>···</span></li>";
for( $i = $paged - $p; $i <= $paged + $p; $i++ ) {
if ( $i > 0 && $i <= $max_page ) $i == $paged ? print "<li class=\"active\"><span>{$i}</span></li>" : p_link( $i );
}
if ( $paged < $max_page - $p - 1 ) echo "<li><span> ... </span></li>";
//if ( $paged < $max_page - $p ) p_link( $max_page, '&raquo;' );
echo '<li class="next-page">'; next_posts_link('下一页'); echo '</li>';
// echo '<li><span>共 '.$max_page.' 页</span></li>';
echo '</ul></div>';
}
function p_link( $i, $title = '' ) {
if ( $title == '' ) $title = "第 {$i} 页";
echo "<li><a href='", esc_html( get_pagenum_link( $i ) ), "'>{$i}</a></li>";
}
endif;
function deel_strimwidth($str ,$start , $width ,$trimmarker ){
$output = preg_replace('/^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$start.'}((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$width.'}).*/s','\1',$str);
return $output.$trimmarker;
}
function dopt($e){
return stripslashes(get_option($e));
}
if ( ! function_exists( 'deel_views' ) ) :
function deel_record_visitors(){
if (is_singular())
{
global $post;
$post_ID = $post->ID;
if($post_ID)
{
$post_views = (int)get_post_meta($post_ID, 'views', true);
if(!update_post_meta($post_ID, 'views', ($post_views+1)))
{
add_post_meta($post_ID, 'views', 1, true);
}
}
}
}
add_action('wp_head', 'deel_record_visitors');
function deel_views($after=''){
global $post;
$post_ID = $post->ID;
$views = (int)get_post_meta($post_ID, 'views', true);
echo $views, $after;
}
endif;
if ( ! function_exists( 'deel_thumbnail' ) ) :
function deel_thumbnail() {
global $post;
if ( has_post_thumbnail() ) {
$domsxe = simplexml_load_string(get_the_post_thumbnail());
$thumbnailsrc = $domsxe->attributes()->src;
echo '<img src="'.$thumbnailsrc.'" alt="'.trim(strip_tags( $post->post_title )).'" />';
} else {
$content = $post->post_content;
preg_match_all('/<img.*?(?: |\\t|\\r|\\n)?src=[\'"]?(.+?)[\'"]?(?:(?: |\\t|\\r|\\n)+.*?)?>/sim', $content, $strResult, PREG_PATTERN_ORDER);
$n = count($strResult[1]);
if($n > 0){
echo '<img src="'.$strResult[1][0].'" alt="'.trim(strip_tags( $post->post_title )).'" />';
}else {
echo '<img src="'.get_bloginfo('template_url').'/img/thumbnail.png" alt="'.trim(strip_tags( $post->post_title )).'" />';
}
}
}
endif;
function remove_open_sans() {
wp_deregister_style( 'open-sans' );
wp_register_style( 'open-sans', false );
wp_enqueue_style('open-sans','');
}
add_action( 'init', 'remove_open_sans' );
function deel_share(){
echo '<div class="share"><h5>分享到 </h5><div class="bdsharebuttonbox"><a class="bds_qzone" data-cmd="qzone"></a><a class="bds_tsina" data-cmd="tsina"></a><a class="bds_weixin" data-cmd="weixin"></a><a class="bds_tqq" data-cmd="tqq"></a><a class="bds_sqq" data-cmd="sqq"></a><a class="bds_renren" data-cmd="renren"></a><a class="bds_t163" data-cmd="t163"></a><a class="bds_tsohu" data-cmd="tsohu"></a><a class="bds_baidu" data-cmd="baidu"></a><a class="bds_douban" data-cmd="douban"></a><a class="bds_bdhome" data-cmd="bdhome"></a><a class="bds_youdao" data-cmd="youdao"></a><a class="bds_fbook" data-cmd="fbook"></a><a class="bds_twi" data-cmd="twi"></a><a class="bds_more" data-cmd="more"></a><a class="bds_count" data-cmd="count"></a></div></div>';
}
//关键字
function deel_keywords() {
global $s, $post;
$keywords = '';
if ( is_single() ) {
if ( get_the_tags( $post->ID ) ) {
foreach ( get_the_tags( $post->ID ) as $tag ) $keywords .= $tag->name . ', ';
}
foreach ( get_the_category( $post->ID ) as $category ) $keywords .= $category->cat_name . ', ';
$keywords = substr_replace( $keywords , '' , -2);
} elseif ( is_home () ) { $keywords = dopt('d_keywords');
} elseif ( is_tag() ) { $keywords = single_tag_title('', false);
} elseif ( is_category() ) { $keywords = single_cat_title('', false);
} elseif ( is_search() ) { $keywords = esc_html( $s, 1 );
} else { $keywords = trim( wp_title('', false) );
}
if ( $keywords ) {
echo "<meta name=\"keywords\" content=\"$keywords\">\n";
}
}
//网站描述
function deel_description() {
global $s, $post;
$description = '';
$blog_name = get_bloginfo('name');
if ( is_singular() ) {
if( !empty( $post->post_excerpt ) ) {
$text = $post->post_excerpt;
} else {
$text = $post->post_content;
}
$description = trim( str_replace( array( "\r\n", "\r", "\n", " ", " "), " ", str_replace( "\"", "'", strip_tags( $text ) ) ) );
if ( !( $description ) ) $description = $blog_name . "-" . trim( wp_title('', false) );
} elseif ( is_home () ) { $description = dopt('d_description'); // 首頁要自己加
} elseif ( is_tag() ) { $description = $blog_name . "'" . single_tag_title('', false) . "'";
} elseif ( is_category() ) { $description = trim(strip_tags(category_description()));
} elseif ( is_archive() ) { $description = $blog_name . "'" . trim( wp_title('', false) ) . "'";
} elseif ( is_search() ) { $description = $blog_name . ": '" . esc_html( $s, 1 ) . "' 的搜索結果";
} else { $description = $blog_name . "'" . trim( wp_title('', false) ) . "'";
}
$description = mb_substr( $description, 0, 220, 'utf-8' );
echo "<meta name=\"description\" content=\"$description\">\n";
}
function hide_admin_bar($flag) {
return false;
}
//最新发布加new 单位'小时'
function deel_post_new($timer='48'){
$t=( strtotime( date("Y-m-d H:i:s") )-strtotime( $post->post_date ) )/3600;
if( $t < $timer ) echo "<i>new</i>";
}
//修改评论表情调用路径
function deel_smilies_src ($img_src, $img, $siteurl){
return get_bloginfo('template_directory').'/img/smilies/'.$img;
}
//阻止站内文章Pingback
function deel_noself_ping( &$links ) {
$home = get_option( 'home' );
foreach ( $links as $l => $link )
if ( 0 === strpos( $link, $home ) )
unset($links[$l]);
}
//移除自动保存
function deel_disable_autosave() {
wp_deregister_script('autosave');
}
//修改默认发信地址
function deel_res_from_email($email) {
$wp_from_email = get_option('admin_email');
return $wp_from_email;
}
function deel_res_from_name($email){
$wp_from_name = get_option('blogname');
return $wp_from_name;
}
//评论回应邮件通知
function comment_mail_notify($comment_id) {
$admin_notify = '1'; // admin 要不要收回复通知 ( '1'=要 ; '0'=不要 )
$admin_email = get_bloginfo ('admin_email'); // $admin_email 可改为你指定的 e-mail.
$comment = get_comment($comment_id);
$comment_author_email = trim($comment->comment_author_email);
$parent_id = $comment->comment_parent ? $comment->comment_parent : '';
global $wpdb;
if ($wpdb->query("Describe {$wpdb->comments} comment_mail_notify") == '')
$wpdb->query("ALTER TABLE {$wpdb->comments} ADD COLUMN comment_mail_notify TINYINT NOT NULL DEFAULT 0;");
if (($comment_author_email != $admin_email && isset($_POST['comment_mail_notify'])) || ($comment_author_email == $admin_email && $admin_notify == '1'))
$wpdb->query("UPDATE {$wpdb->comments} SET comment_mail_notify='1' WHERE comment_ID='$comment_id'");
$notify = $parent_id ? get_comment($parent_id)->comment_mail_notify : '0';
$spam_confirmed = $comment->comment_approved;
if ($parent_id != '' && $spam_confirmed != 'spam' && $notify == '1') {
$wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); // e-mail 发出点, no-reply 可改为可用的 e-mail.
$to = trim(get_comment($parent_id)->comment_author_email);
$subject = 'Hi,您在 [' . get_option("blogname") . '] 的留言有人回复啦!';
$message = '
<div style="color:#333;font:100 14px/24px microsoft yahei;">
<p>' . trim(get_comment($parent_id)->comment_author) . ', 您好!</p>
<p>您曾在《' . get_the_title($comment->comment_post_ID) . '》的留言:<br /> &nbsp;&nbsp;&nbsp;&nbsp; '
. trim(get_comment($parent_id)->comment_content) . '</p>
<p>' . trim($comment->comment_author) . ' 给您的回应:<br /> &nbsp;&nbsp;&nbsp;&nbsp; '
. trim($comment->comment_content) . '<br /></p>
<p>点击 <a href="' . htmlspecialchars(get_comment_link($parent_id)) . '">查看回应完整內容</a></p>
<p>欢迎再次光临 <a href="' . get_option('home') . '">' . get_option('blogname') . '</a></p>
<p style="color:#999">(此邮件由系统自动发出,请勿回复.)</p>
</div>';
$from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
$headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
wp_mail( $to, $subject, $message, $headers );
//echo 'mail to ', $to, '<br/> ' , $subject, $message; // for testing
}
}
//自动勾选
function deel_add_checkbox() {
echo '<label for="comment_mail_notify" class="checkbox inline" style="padding-top:0"><input type="checkbox" name="comment_mail_notify" id="comment_mail_notify" value="comment_mail_notify" checked="checked"/>有人回复时邮件通知我</label>';
}
//文章(包括feed)末尾加版权说明
function deel_copyright($content) {
if( !is_page() ){
$pid = get_the_ID();
$name = get_post_meta($pid, 'from.name', true);
$link = get_post_meta($pid, 'from.link', true);
$show = false;
if( $name ){
$show = $name;
if( $link ){
$show = '<a target="_blank" href="'.$link.'">'.$show.'</a>';
}
}else if( $link ){
$show = '<a target="_blank" href="'.$link.'">'.$link.'</a>';
}
if( $show ){
$content.= '<p>来源:'.$show.'</p>';
}
// $content.= '<p>转载请注明:<a href="'.get_bloginfo('url').'">'.get_bloginfo('name').'</a> &raquo; <a href="'.get_permalink().'">'.get_the_title().'</a></p>';
}
return $content;
}
//时间显示方式‘xx以前’
function time_ago( $type = 'commennt', $day = 7 ) {
$d = $type == 'post' ? 'get_post_time' : 'get_comment_time';
if (time() - $d('U') > 60*60*24*$day) return;
echo ' (', human_time_diff($d('U'), strtotime(current_time('mysql', 0))), '前)';
}
function timeago( $ptime ) {
$ptime = strtotime($ptime);
$etime = time() - $ptime;
if($etime < 1) return '刚刚';
$interval = array (
12 * 30 * 24 * 60 * 60 => '年前 ('.date('Y-m-d', $ptime).')',
30 * 24 * 60 * 60 => '个月前 ('.date('m-d', $ptime).')',
7 * 24 * 60 * 60 => '周前 ('.date('m-d', $ptime).')',
24 * 60 * 60 => '天前',
60 * 60 => '小时前',
60 => '分钟前',
1 => '秒前'
);
foreach ($interval as $secs => $str) {
$d = $etime / $secs;
if ($d >= 1) {
$r = round($d);
return $r . $str;
}
};
}
//禁用Emoji表情
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('admin_print_styles', 'print_emoji_styles');
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('embed_head', 'print_emoji_detection_script');
remove_filter('the_content_feed', 'wp_staticize_emoji');
remove_filter('comment_text_rss', 'wp_staticize_emoji');
remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
?>
PHP
1
https://gitee.com/yeszao/d9.git
git@gitee.com:yeszao/d9.git
yeszao
d9
D9
master

搜索帮助