huwhois преди 3 години
родител
ревизия
a5739c6bab

+ 9 - 9
app/common/model/Article.php

@@ -60,24 +60,24 @@ class Article extends Base
             if (!preg_match("/^([0-9]{4})\/([0-9]{1,2})$/", $params['yearMonth']) && !preg_match("/^([0-9]{4})-([0-9]{1,2})$/", $params['yearMonth'])) {
                 throw new HttpException(404, '日期格式不正确');
             }
-
             $separator = strrpos('/', $params['yearMonth']) ? '/' : '-';
-
+            
             $year = $month = '';
-
+            
             if (strnatcasecmp(PHP_VERSION, '7.0.0') >= 0) {
                 list($year, $month) = explode($separator, $params['yearMonth']);
             } else {
                 list($month, $year) = explode($separator, $params['yearMonth']);
             }
-
+            
             if ((int) $month < 1 || (int) $month > 12) {
                 throw new HttpException(404, '日期格式不正确');
             }
-
+            
             $days = month_frist_and_last_day($year, $month);
-
-            $where['create_time'] = ['between', [$days['firstday'], $days['lastday']]];
+            
+            // $where['create_time'] = ['between', [$days['firstday'], $days['lastday']]];
+            $where[] = ['create_time','between', [$days['firstday'], $days['lastday']]];
         }
 
         $limit = empty($params['limit']) ? 20 : (int)$params['limit'];
@@ -158,9 +158,9 @@ class Article extends Base
         return ['prev' => $data_p, 'next' => $data_N];
     }
 
-    public function createTimeArchive()
+    public static function createTimeArchive()
     {
-        $create_times = $this->order('create_time desc')->column('create_time');
+        $create_times = self::order('create_time desc')->column('create_time');
         $timeList = [];
         foreach ($create_times as $value) {
             $yearAndMonth = date("Y-m", $value);

+ 23 - 4
app/index/controller/Article.php

@@ -69,14 +69,12 @@ class Article extends Base
 
         if ($data->content_type==1) {
             $parsedownExtension = new \ParsedownExtension();
-            $parsedownExtension->setTocEnabled(true);
+            // $parsedownExtension->setTocEnabled(true);
             $res = $parsedownExtension->text($data->content);
-
+            // $data->toc = $res['toc'];
             $data->content = $res['content'];
-            $data->toc = $res['toc'];
         }
 
-
         return View::fetch();
     }
 
@@ -115,6 +113,27 @@ class Article extends Base
         return View::fetch();
     }
 
+    /**
+     * 归档页面(时间)
+     */
+    public function archive($year=0, $month=0)
+    {
+        $yearMonth = $year . '-' . $month;
+
+        if ($year==0 || $month==0) {
+            throw new HttpException(404, '日期格式不正确');
+        }
+
+        $list = ArticleModel::queryPage(['yearMonth'=>$yearMonth]);
+
+        View::assign([
+            'list' => $list,
+            'yearMonth'  => $yearMonth
+        ]);
+
+        return View::fetch();
+    }
+
     /**
      * 时光轴
      */

+ 6 - 2
app/index/controller/Base.php

@@ -15,6 +15,7 @@ use think\App;
 
 use app\common\model\Article;
 use app\common\model\Category;
+use think\facade\Env;
 
 abstract class Base
 {
@@ -68,10 +69,13 @@ abstract class Base
 
         $top_lists = Article::getTop(7);
 
+        $time_lists = Article::createTimeArchive();
+
         View::assign([
             'cate_lists' => $cate_lists,
-            'hits_lists'  => $hits_lists,
-            'top_lists'  => $top_lists
+            'hits_lists' => $hits_lists,
+            'top_lists'  => $top_lists,
+            'time_lists' => $time_lists
         ]);
     }
 }

+ 1 - 0
app/index/route/app.php

@@ -29,6 +29,7 @@ Route::get('think', function () {
 Route::view('/404', '404');
 Route::get('/all', 'index/article/index');
 Route::get('/:year/:month/:day/:id', 'index/article/read');
+Route::get('/:year/:month', 'index/article/archive');
 Route::post('/dolike', 'index/article/dolike');
 Route::get('/tags/:name', 'index/article/tags');
 Route::get('/time', 'index/article/time')->append(['_aside' => true]);

+ 1 - 0
app/sys/controller/Article.php

@@ -77,6 +77,7 @@ class Article extends Base
                 $data = ArticleModel::find($id);
             } else {
                 $data = new ArticleModel();
+                $data->content_type = $content_type;
             }
 
             $categories = CategoryModel::field('id, parent_id, name')->select();

+ 23 - 0
view/index/article/archive.html

@@ -0,0 +1,23 @@
+<div class="box">
+  <div class="place">
+    <h2>Archive for {$yearMonth}</h2>
+  </div>
+  <div class="blank"></div>
+  <div class="blogs">
+    {foreach $list as $val}
+    <div class="bloglist">
+      <h2><a href="/index/{$val.create_time|date='Y/m/d'}/{$val.id}" title="{$val.title}">{$val.title}</a></h2>
+      <div class="bloginfo">
+        <ul>
+          <li class="author"><a href="/index/{$val.category_url}"> {$val.category_name} </a></li>
+          <li class="timer">{$val.create_time}</li>
+          <li class="view">{$val.hits} 已阅读</li>
+          <li class="like">{$val.likes}</li>
+        </ul>
+      </div>
+      <p>{$val.summary}</p>
+    </div>
+    {/foreach}
+  </div>
+  {include file="aside"}
+</div>

+ 0 - 0
view/index/index/article.html → view/index/article/article.bak.html


+ 2 - 2
view/index/article/index.html

@@ -15,10 +15,10 @@
   <div class="blogs">
     {foreach $list as $val}
     <div class="bloglist">
-      <h2><a href="/read/{$val.id}" title="{$val.title}">{$val.title}</a></h2>
+      <h2><a href="/index/{$val.create_time|date='Y/m/d'}/{$val.id}" title="{$val.title}">{$val.title}</a></h2>
       <div class="bloginfo">
         <ul>
-          <li class="author"><a href="/{$val.category_url}"> {$val.category_name} </a></li>
+          <li class="author"><a href="/index/{$val.category_url}"> {$val.category_name} </a></li>
           <li class="timer">{$val.create_time}</li>
           <li class="view">{$val.hits} 已阅读</li>
           <li class="like">{$val.likes}</li>

+ 0 - 0
view/index/index/lists.html → view/index/article/lists.bak.html


+ 3 - 22
view/index/article/read.html

@@ -1,4 +1,4 @@
-<link href="/static/plugins/highlight/styles/solarized-light.css" rel="stylesheet"> 
+<link href="/static/plugins/highlight/styles/monokai-sublime.min.css" rel="stylesheet"> 
 
 <div class="box">
   <div class="blank"></div>
@@ -23,7 +23,6 @@
       <div class="news_con" id="preview">
         {$data.content|raw}
       </div>
-      <p id="content_md" style="display: none;"></p>
       <p class="diggit"><a href="JavaScript:getLike({$data.id});"> 很赞哦! </a>(<b id="diggnum"> {$data.likes} </b>)</p>
     </div>
     <div class="nextinfo">
@@ -58,33 +57,15 @@
 
 <script src="/static/plugins/highlight/highlight.pack.js"></script>
 <!-- <script src="/static/plugins/md/js/marked.js"></script> -->
-<script src="/static/plugins/lib/ueditor/1.4.3/third-party/SyntaxHighlighter/shCore.js"></script>
 <script type="text/javascript">
   $(document).ready(function() {
         $('pre').each(function(i, block) {
           hljs.highlightBlock(block);
         });
     });
+    // hljs.initHighlightingOnLoad();
+    // hljs.highlightAll();
 
-  // hljs.initHighlightingOnLoad();
-  // hljs.highlightAll();
-  // SyntaxHighlighter.all();
-  // marked.setOptions({
-  //   renderer: new marked.Renderer(),
-  //   gfm: true,
-  //   tables: true,
-  //   breaks: false,
-  //   pedantic: false,
-  //   sanitize: false,
-  //   smartLists: true,
-  //   smartypants: false,
-  //   highlight: function (code) {
-  //     return hljs.highlightAuto(code).value;
-  //   }
-  // });
-
-  // $("#preview").html(marked($("#content_md").html()));
- 
   function getLike(id) {
     var num = parseInt($('#diggnum').text());
     $.post('/dolike', {

+ 2 - 2
view/index/article/tags.html

@@ -6,10 +6,10 @@
   <div class="blogs">
     {foreach $list as $val}
     <div class="bloglist">
-      <h2><a href="/read/{$val.id}" title="{$val.title}">{$val.title}</a></h2>
+      <h2><a href="/index/{$val.create_time|date='Y/m/d'}/{$val.id}" title="{$val.title}">{$val.title}</a></h2>
       <div class="bloginfo">
         <ul>
-          <li class="author"><a href="/{$val.category_url}"> {$val.category_name} </a></li>
+          <li class="author"><a href="/index/{$val.category_url}"> {$val.category_name} </a></li>
           <li class="timer">{$val.create_time}</li>
           <li class="view">{$val.hits} 已阅读</li>
           <li class="like">{$val.likes}</li>

+ 2 - 6
view/index/article/time.html

@@ -2,15 +2,11 @@
   <div class="timebox">
     <ul>
       {foreach $list as $val}
-      <li><span>{$val.create_time|date="Y-m-d"}</span><i><a href="/{$val.create_time|date='Y/m/d'}/{$val.id}" title="{$val.title}">{$val.title}</a></i></li>
+      <li><span>{$val.create_time|date="Y-m-d"}</span><i><a href="/index/{$val.create_time|date='Y/m/d'}/{$val.id}" title="{$val.title}">{$val.title}</a></i></li>
       {/foreach}
     </ul>
   </div>
   <div class="pagelist">
-    
-    <a title="Total record">共&nbsp;<b>{//$data.pages}</b>页</a>&nbsp;&nbsp;&nbsp;
-     
-      <a href="{//:url('/time/'.($page + 1))}">下一页</a>&nbsp;
-      <a href="{//:url('/time/'.$data.pages)}">尾页</a>
+    {$list->render()|raw}
   </div>
 </article>

+ 17 - 9
view/index/aside.html

@@ -2,7 +2,7 @@
   <div class="ztbox">
     <ul>
       {foreach $cate_lists as $value}
-      <li><a href="/{$value.url}">{$value.name}</a></li>
+      <li><a href="/index/{$value.url}">{$value.name}</a></li>
       {/foreach}
     </ul>
   </div>
@@ -10,18 +10,26 @@
     <h2>点击排行</h2>
     <ul>
       {foreach $hits_lists as $value}
-      <li><a href="/read/{$value.id}" title="{$value.title}">{$value.title}</a></li>
+      <li><a href="/index/{$value.create_time|date='Y/m/d'}/{$value.id}" title="{$value.title}">{$value.title}</a></li>
       {/foreach}
     </ul>
   </div>
   <div class="paihang">
-      <h2>博文推荐</h2>
-      <ul>
-        {foreach $top_lists as $value}
-        <li><a href="/read/{$value.id}" title="{$value.title}" title="{$value.title}">{$value.title}</a></li>
-        {/foreach}
-      </ul>
-    </div>
+    <h2>博文推荐</h2>
+    <ul>
+      {foreach $top_lists as $value}
+      <li><a href="/index/{$value.create_time|date='Y/m/d'}/{$value.id}" title="{$value.title}">{$value.title}</a></li>
+      {/foreach}
+    </ul>
+  </div>
+  <div class="paihang">
+    <h2>归档</h2>
+    <ul>
+      {foreach $time_lists as $value}
+      <li><a href="/index/{:str_replace('-','/',$value)}" title="{$value}">{:str_replace('-','年',$value)}月</a></li>
+      {/foreach}
+    </ul>
+  </div>
   <!-- <div class="paihang">
     <h2>友情链接</h2>
     <ul>

+ 2 - 2
view/index/index/about.html

@@ -12,9 +12,9 @@
       <br>
       <h2>About This Site</h2>
       &nbsp;
-      <p>域 名:huwhois.cn 创建于2022年3月10日&nbsp;</p>
+      <p>域 名:{:env('domain.domain_host')} 创建于2018年2月17日&nbsp;</p>
       <br>
-      <!-- <p>备案号:暂无</p> -->
+      <!-- <p>备案号:{:env('domain.icp')}</p> -->
       <br>
       <p>
         <br>后端框架: ThinkPHP6.0 官网:http://www.thinkphp.cn/

+ 5 - 5
view/index/layout.html

@@ -8,7 +8,7 @@
   <meta name="description" content="huwhois个人博客" />
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <link href="/static/index/css/index.css" rel="stylesheet">
-  <script type="text/javascript" src="/static/plugins/lib/jquery/1.9.1/jquery.min.js"></script>
+  <script type="text/javascript" src="/static/plugins/jquery/1.9.1/jquery.min.js"></script>
 </head>
 
 <body>
@@ -16,9 +16,9 @@
     <div class="logo"><a href="{:url('/index')}">huwhois个人博客</a></div>
     <nav>
       <ul id="starlist">
-        <li><a href="{:url('/index')}">网站首页</a></li>
+        <li><a href="/index">网站首页</a></li>
         {foreach $categories as $val}
-        <li><a href="/{$val.url}">{$val.name}</a></li>
+        <li><a href="/index/{$val.url}">{$val.name}</a></li>
         {/foreach}
       </ul>
     </nav>
@@ -29,8 +29,8 @@
   <div class="blank"></div>
 
   <footer>
-    <p>Power by <a href="mailto:{//$Think.config.email}" target="_blank">{//$Think.config.email}</a> </p>
-    <!-- <p>备案号:<a href="/"></a></p> -->
+    <p>Power by <a href="{:env('domain.email')}" target="_blank">{:env('domain.email')}</a> </p>
+    <!-- <p>备案号:<a href="/" style="color:blue">{:env('domain.icp')} </a></p> -->
   </footer>
 </body>
 

+ 8 - 8
view/sys/article/savemd.html

@@ -249,11 +249,11 @@
             <input type="hidden" name="content" value="" id="content">
             <div class="formControls col-xs-11 col-sm-10">
                 <div id="toolbar">
-                    <img src="/static/img/bold.png" id="bold" onclick="insertText('**这里填写要加粗的文字**')" />
-                    <img src="/static/img/italic.png" id="italic" onclick="insertText('_这里填写要斜体的文字_')" />
-                    <img src="/static/img/hyperlink.png" id="hyperlink" onclick="insertText('[这里写连接的描述](这里填写连接地址)')" />
-                    <img src="/static/img/code.png" id="code" onclick="insertText('```\n这里插入代码\n```')" />
-                    <img src="/static/img/image.png" id="image" onclick="showDialog()" />
+                    <img src="/static/images/bold.png" id="bold" onclick="insertText('**这里填写要加粗的文字**')" />
+                    <img src="/static/images/italic.png" id="italic" onclick="insertText('_这里填写要斜体的文字_')" />
+                    <img src="/static/images/hyperlink.png" id="hyperlink" onclick="insertText('[这里写连接的描述](这里填写连接地址)')" />
+                    <img src="/static/images/code.png" id="code" onclick="insertText('```\n这里插入代码\n```')" />
+                    <img src="/static/images/image.png" id="image" onclick="showDialog()" />
                 </div>
                 <div id="mdeditor" style="width: 100%;height: 400px;">{$data.content}</div>
             </div>
@@ -285,7 +285,7 @@
 <div id="dialog">
     <div style="position: absolute;height: 40px;width: 100%;background: #FFFFFF;border-bottom: 1px solid gray;">
         <span style="position: absolute;left: 10px;top: 10px;color: gray;">插入图片</span>
-        <img src="img/X.png" style="height: 25px;width: 25px;position: absolute;right: 10px;top: 10px;cursor: pointer;"
+        <img src="/static/images/X.png" style="height: 25px;width: 25px;position: absolute;right: 10px;top: 10px;cursor: pointer;"
             onclick="f_cancel()" />
     </div>
 
@@ -315,7 +315,7 @@
                             <button class="btn btn-primary radius" type="button" onCLick="uploadImg()">上传</button>
                         </div>
                         <div style="width: 200px;height: 200px;">
-                            <img id="view-picture" src="/static/plugins/h-ui.admin/images/admin-login-bg.jpg" alt="图片"
+                            <img id="view-picture" src="/static/images/upload_picture.png" alt="图片"
                                 title="图片" style="max-width: 200px;max-height: 200px;">
                         </div>
                         <div class="col-3"> </div>
@@ -344,7 +344,7 @@
                             <button class="btn btn-primary radius" type="button" onCLick="uploadUrlImg()">确定</button>
                         </div>
                         <div style="width: 200px;height: 200px;">
-                            <img id="view-picture-url" src="/static/plugins/h-ui.admin/images/admin-login-bg.jpg" alt="图片"
+                            <img id="view-picture-url" src="/static/images/upload_picture.png" alt="图片"
                                 title="图片" style="max-width: 200px;max-height: 200px;">
                         </div>
                         <div class="col-3"> </div>

+ 1 - 1
view/sys/layout.html

@@ -41,7 +41,7 @@
             {__CONTENT__}
             <footer class="footer mt-20">
                 <div class="container-fluid">
-                    <strong>Copyright &copy; 2013-{:date("Y")} <a href="javascript:void(0);">国家材料环境腐蚀平台</a>.</strong>
+                    <strong>Copyright &copy; 2013-{:date("Y")} <a href="javascript:void(0);">HUWHOIS</a>.</strong>
                     All rights reserved.
                     <b>Version</b> {:config('app.sys_version')}
                     <!-- <p>感谢jQuery、layer、laypage、Validform、UEditor、My97DatePicker、iconfont、Datatables、WebUploaded、icheck、highcharts、bootstrap-Switch<br> Copyright &copy;2015 H-ui.admin v3.0 All Rights Reserved.<br> 本后台系统由<a href="http://www.h-ui.net/" target="_blank" title="H-ui前端框架">H-ui前端框架</a>提供前端技术支持</p> -->