ok,上一篇文章已经对img标签下手了。这次更彻底点,给图片添加上灯箱效果

首先,引入相关js文件
<!--在header里添加这个-->
<link href="https://cdn.bootcss.com/fancybox/3.5.7/jquery.fancybox.min.css" rel="stylesheet">
<!--先加载jquery依赖-->
<script src="//cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
<!--fancybox的js,还是bootcdn-->
<script src="//cdn.bootcss.com/fancybox/3.5.7/jquery.fancybox.min.js"></script>
修改Typecho
首先找到HyperDown.php
文件,在Typecho
下的var
目录里。

然后搜索img
,一般在349行开始,修改img标签为
<a data-fancybox=\"gallery\" href=\"{$url}\"><img src=\"{$url}\" alt=\"{$escaped}\" title=\"{$escaped}\"></a>

正则替换,与上面方案任选其一
ps:这会导致 <!--more-->
无法正常截断文章。
2020-01-05 更新,修正 <!--more-->
无法正常截断文章的问题。
2020-02-09 跟新,正则表达式增加对atl和title属性的匹配。
首先在你的主题文件找到这个
<?php $this->content(); ?>
用正则修改img标签
<?php
$pattern = '/\<img.*?src\=\"(.*?)\".*?alt\=\"(.*?)\".*?title\=\"(.*?)\"[^>]*>/i';
$replacement = '<a href="$1" data-fancybox="gallery" /><img src="$1" alt="$2" title="$3"></a>';
$content = preg_replace($pattern, $replacement, $this->content);
//需要支持截断的添加下面两行
$array=explode('<!--more-->', $content);
$content=$array[0];
echo $content;
?>
下面是在Nginx配置网站HTTPS(ssl)的参数
请酌情修改使用。
注意:TLS 1.1 协议预计将2020年3月份正式“退役”,详情点击 这里 。
server
{
#监听443端口、ssl、http2
listen 443 ssl http2 ;
#启用ssl
ssl on;
#证书配置
ssl_certificate /idzd.top.pem;
ssl_certificate_key /idzd.top.pem;
#支持的协议
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
#支持的加密套件
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
#依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
ssl_prefer_server_ciphers on;
#设置储存SSL会话的缓存类型和大小
ssl_session_cache shared:SSL:10m;
#客户端能够反复使用储存在缓存中的会话参数时间
ssl_session_timeout 10m;
}
首先,上效果图

你可能需要的准备
- 配置ESP8266的Arduino IDE环境 - IDZD
- NodeMCU连接&固件烧录 - IDZD
- 半离线安装EPS8266支持到Arduino IDE
- NTPClient库
- 安装支持库 - IDZD
- ESP8266使用I2C连接OLDE屏幕
连线&安装NTPClient库
安装NTPClient库
这次我们选择NTPClient
库,联网获取ntp时间。
#获取UNIX时间戳
getEpochTime();
#获取当前时间
getFormattedTime();
#获取星期,0是星期日
getDay();
连线
- D1 --- SDA
- D2 --- SCL
- 3V --- VCC
- G --- GND

代码
#include <Arduino.h>
#include <U8g2lib.h>
#include <time.h>
#include <SPI.h>
#include <Wire.h>
#include <NTPClient.h>
// change next line to use with another board/shield
#include <ESP8266WiFi.h>
//#include <WiFi.h> // for WiFi shield
//#include <WiFi101.h> // for WiFi 101 shield or MKR1000
#include <WiFiUdp.h>
#define SDA 05 //ESP8266 D1 PIN 05
#define SCL 04 //ESP8266 D2 PIN 04
const char *ssid = "360 N7 Pro";
const char *password = "123456780";
char *week = "";
//SSD1306,128x64,全屏缓冲模式,模拟I2C,I2C,u8g2(旋转0度,时钟,数据,重置)
U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "ntp1.aliyun.com",60*60*8, 30*60*1000);//设置访问的ntp服务器
void setup(){
Serial.begin(115200);
WiFi.begin(ssid, password);
while ( WiFi.status() != WL_CONNECTED ) {
delay ( 500 );
Serial.print ( "." );
}
timeClient.begin();
u8g2.begin();
u8g2.enableUTF8Print();
}
void loop() {
timeClient.update();
u8g2.setFont(u8g2_font_unifont_t_chinese2);
u8g2.firstPage();
do {
u8g2.setCursor(0, 15);
u8g2.print("北京时间:=");
u8g2.setCursor(0, 35);
u8g2.print(timeClient.getFormattedTime());
u8g2.setCursor(75, 35);
switch(timeClient.getDay();){
case 0:
week = "Sun.";
break;
case 1:
week = "Mon.";
break;
case 2:
week = "Tues.";
break;
case 3:
week = "Wed.";
break;
case 4:
week = "Thur.";
break;
case 5:
week = "Fri.";
break;
case 6:
week = "Sat.";
break;
}
u8g2.print(week);
u8g2.setCursor(0, 55);
time_t t;
struct tm *p;
t=timeClient.getEpochTime();
p=gmtime(&t);
char s[100];
//strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", p);
strftime(s, sizeof(s), "%Y年%m月%d日", p);
u8g2.print(s);
} while ( u8g2.nextPage() );
Serial.println(timeClient.getEpochTime());
delay(1000);
}