分类 网站 下的文章

Typecho默认是全文输出的,想摘要的话,官方给出了最简单的方法,就是在你想截取的位置加上标签即可。

但是这种方法在有图片文章的情况下摘要就会出现图片信息,也完全暴露了标签元素,影响美观,下面就给出了PHP正则表达式自动摘要的两种解决方法。

注:如果没有标签,会自动截取文章的前270字当作缩略输出。

编辑主题index.php文件,找到以下PHP代码;

<?php $this->content('阅读剩余部分...'); ?>

替换为你想实现的代码,如下;

输出图片的正则表达式代码:

<?php 

    if(preg_match('/<!--more-->/',$this-&gt;content)||mb_strlen($this->content, 'utf-8') < 270)
    {
        $this->content('阅读全文...');
    }
    else
    {    
            $c=mb_substr($this->content, 0, 270, 'utf-8');
        echo $c.'...';
            echo '</br><p class="more"><a href="',$this-&gt;permalink(),&#39;&quot;&nbsp;title=&quot;&#39;,$this->title(),'">阅读全文...</a></p>';
    }
?>

不输出图片的正则表达式代码:

<?php 
    if(preg_match('/<!--more-->/',$this-&gt;content)||mb_strlen($this->content, 'utf-8') < 270)
    {
        $this->content('阅读全文...');
    }
    else
    {    
            $c=mb_substr($this->content, 0, 270, 'utf-8');
            $c=preg_replace(&quot;/&lt;[img|IMG].*?src=[\&#39;\&quot;](.*?(?:[\.gif|\.jpg|\.jpeg|\.png|\.tiff|\.bmp]))[\&#39;|\&quot;].*?[\/]?&gt;/&quot;,&quot;&quot;,$c);
            echo $c.'...';
            echo '</br><p class="more"><a href="',$this-&gt;permalink(),&#39;&quot;&nbsp;title=&quot;&#39;,$this->title(),'">阅读全文...</a></p>';
    }
?>

如果截取的文章前面存在代码段,由于自动截取遇到代码段虽然截取了但是没有添加</code></pre>结束标签,所以会造成整站css的错乱,使用正则查找是否存在代码段,如果存在截取后自动添加结束标签,下面是修正版正则式代码。

修正版:

输出图片的正则表达式代码:

  <?php 
            if(preg_match('/<!--more-->/',$this-&gt;content)||mb_strlen($this->content, 'utf-8') < 270)
            {
                $this->content('阅读全文...');
            }
            else
            {    
                    $c=mb_substr($this->content, 0, 270, 'utf-8');
                    if(preg_match('/<pre>/',$c))
                    {
                       echo $c,'</code></pre>','...';;
                    }
                    else
                    {
                       echo $c.'...';
                    }
                    echo '</br><p class="more"><a href="',$this-&gt;permalink(),&#39;&quot;&nbsp;title=&quot;&#39;,$this->title(),'">阅读全文...</a></p>';
            }
        ?>

不输出图片的正则表达式代码:

<?php 
            if(preg_match('/<!--more-->/',$this-&gt;content)||mb_strlen($this->content, 'utf-8') < 270)
            {
                $this->content('阅读全文...');
            }
            else
            {    
                    $c=mb_substr($this->content, 0, 270, 'utf-8');
                    $c=preg_replace(&quot;/&lt;[img|IMG].*?src=[\&#39;\&quot;](.*?(?:[\.gif|\.jpg|\.jpeg|\.png|\.tiff|\.bmp]))[\&#39;|\&quot;].*?[\/]?&gt;/&quot;,&quot;&quot;,$c);
                    if(preg_match('/<pre>/',$c))
                    {
                       echo $c,'</code></pre>','...';;
                    }
                    else
                    {
                       echo $c.'...';
                    }
                    echo '</br><p class="more"><a href="',$this-&gt;permalink(),&#39;&quot;&nbsp;title=&quot;&#39;,$this->title(),'">阅读全文...</a></p>';
            }
        ?>

可以参考他的文章:

Typecho自动摘要截取功能

Typecho自动摘要截取代码段处理

<br/>

国内目前调用镜像的方法,如果没有用Lite和TC Version 可以不用jsdelivr的css:

<html><head>
  <link rel="stylesheet" href="https://cdn.staticfile.org/lxgw-wenkai-webfont/1.6.0/style.css" />
  <!-- 没有Lite version, 有需要的可以向cdnjs发pr看看能不能通过-->
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/style.css" />
  <!-- 没有TC version, 有需要的可以向cdnjs发pr看看能不能通过-->
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/style.css" />
  <!-- Screen version -->
  <link rel="stylesheet" href="https://cdn.staticfile.org/lxgw-wenkai-screen-webfont/1.6.0/style.css" />
  <style>
    body {
      font-family: "LXGW WenKai", sans-serif;
      /* Lite version */
      font-family: "LXGW WenKai Lite", sans-serif;
      /* TC version */
      font-family: "LXGW WenKai TC", sans-serif;
      /* Screen version */
      font-family: "LXGW WenKai Screen", sans-serif;
    }
  </style></head><body>
  <!-- blablabla --></body></html>

感谢这位朋友:https://github.com/lxgw/LxgwWenKai/issues/24

一、介绍

PhotoPrism 是一个开源的照片管理工具,是一款 AI 驱动的应用程序,用于浏览、组织和分享您的照片集,可以在本地搭建Server端,可以很好的替代Google相册

 

二、搭建PhotoPrism

镜像管理,选择镜像仓库,搜索 PhotoPrism镜像。



默认选择安装版本latest就好。





在Docker文件夹下创建一个名为photo-prism的子文件夹。在那里,创建两个子文件夹——config和photos。



创建容器,选择镜像和容器名称,如下图。



在后面的步骤中,我们将看看如何将不同的照片目录映射到PhotoPrism。但是,如果您当前没有 存储照片的文件夹,请将照片复制到照片文夹photos中。这是启动工具时PhotoPrism将读取的内容。

创建容器存储空间安装路径。



在存储空间位置,创建2个卷映射,如下面的屏幕截图所示。第一个将我们的配置文件夹映射到 /photoprism/storage安装路径。我们第二个将我们的照片文件夹映射到 /photoprism/originals安装路径。



在端口设置中,将本地端口从自动更改为8080。



在环境部分,创建一个名为PHOTOPRISMADMINPASSWORD的新环境变量,并将该值添加为您想在网页上使用的任何密码。



点击完成等待几分钟来创建容器,然后启动photoprism容器。





然后使用绿联云NAS的IP地址和端口8080访问网页,如果无法找到自己的ip地址可以点开详情点击出现的ip地址即可跳至访问页面。



使用用户名admin和您在环境变量中创建的密码登录。



登录后选择Library图书馆,然后选择Start开始。这将开始为您的照片编制索引,您应该会看到它们开始出现。索引所有照片需要一些时间,因为它取决于大小。如果您要为数千张甚至更多的照片编制索引,请给它一些时间来抓取所有信息。请注意,只有在所有照片都被索引后,面部识别才会开始。







至此,就设置好了!,以下是效果图。






Typecho能够正常工作后,默认链接里都会带有一个首页的路径【index.pnp】,例如:【https://annum.cn/index.php/archives/1.html】。这个【index.php】在页面不能产生任何作用,还导致页面链接过长,非常影响美观。我们可以通过Typecho自带的地址重写功能去掉这个【index.php】。

1、启用地址重写功能

进入Typecho后台“控制面板>设置>永久链接”,将“是否使用地址重写功能”改为【启用】,这里可能会导致系统提示不支持地址重写,解决方法是直接选择强制开启就可以。

2、自定义文章路径

【自定义文章路径】中选择自己喜欢的URL格式,保存。

68afea4ed74920f488381dcf6a145e8c.png

如果设置完固定链接,打开文章和页面显示为404错误,这是由于Nginx对pathinfo支持不够的问题,需要手动添加地址重写代码。

将下面代码复制到宝塔面板“网站>设置>伪静态”的typecho规则文件下,然后保存。文章和页面即可恢复访问。

if (-f $request_filename/index.html){

rewrite (.*) $1/index.html break;

}

if (-f $request_filename/index.php){

rewrite (.*) $1/index.php;

}

if (!-f $request_filename){

rewrite (.*) /index.php;

}

image.png