Pure Highlightjs外掛介紹
後臺設定

主题选择
- 白天主題:選擇程式碼塊的風格樣式,選擇後儲存,預覽。沒有做精簡,可以選擇幾十種樣式。
- 夜間主題:需要主題支援根html元素新增dark切換夜間模式的方式才會生效,否則只能用白天主題。
捲軸顏色
需根據選擇的主題樣式設定捲軸樣式,捲軸用的是simplebar,相容所有主流瀏覽器,可以應用到全站的需要捲軸的地方,遺憾的是不支援頁面body和html螢幕邊上的捲軸樣式。
注意:外掛後臺設定的捲軸顏色僅對程式碼塊的捲軸生效。
如網站其他地方需要用simplebar時,開啟以下外掛目錄檔案:
//位置 plugins/Pure-Highlightjs/assets/pure-highlight.js
// 根据类名添加simplebar滚动条样式
document
.querySelectorAll(
'pre, .a, .b, .c,.com-scrollbar'
)
.forEach((el) => {
el.setAttribute('data-simplebar', '');
});
以上程式碼如.a,.b,.c,.com-scrollbar這樣將div或者其他元素的類名新增到此處,就會應用到simplebar捲軸,比如:
<!-- 滚动条类最好是添加在这个div -->
<div class="com-scrollbar flex flex-col gap-4">
<!-- 不建议在这个div添加滚动条类 -->
<div class="content">
<span>内容</span>
<span>内容</span>
<span>内容</span>
<span>内容</span>
</div>
</div> 工具欄顏色設定
因為外掛的每個主題風格樣式都不一樣,所以添加了工具樣式顏色設定,如果將顏色直接固定在程式碼裡,對於某些主題樣式並不協調,後臺可以根據選擇的樣式來設定工具欄顏色。
工具欄顯示模式
- 始終顯示:工具欄會一直顯示,不會消失。
- 滑鼠懸停顯示:當滑鼠放在程式碼塊時,工具欄才會顯示,移動端是點選一下程式碼塊才會顯示。
工具欄浮動
工具欄是一直都會滑動的,始終會一直顯示在視口區域內,頁面下滑時跟著下滑,上滑時跟著上滑,視口超過程式碼塊時,回到原位置。
程式碼塊高度
當文章內有很多程式碼塊時,每個程式碼塊的程式碼又很多行時,?建議設定程式碼塊最大高度(max-height),經典編輯器是輸入程式碼的時候填高度,區塊編輯器是用的類名方式。
經典編輯器程式碼塊高度設定

如圖,經典編輯器點選程式碼按鈕插入程式碼時,預設為380最大高度,可以修改為其他數字,插入程式碼時最後會預設加一個空行,該程式碼塊沒有其他程式碼時建議刪除(?當初小編以為是程式碼問題,最後為什麼會多20px空位置,找了半天原來是插入程式碼時加的空行,哭?♀️),下面為經典編輯器演示,最大高度為300px:
<?php
/**
* PHP长行代码演示示例
* 用于测试滚动条效果
*/
// 基本变量定义
$testString = "这是一个普通的字符串变量,用于演示PHP的基本语法特性";
$numberValue = 123456;
$arrayData = [
'name' => '测试数据',
'type' => '演示',
'values' => [10, 20, 30, 40, 50]
];
// 这是一行很长的代码,包含了多个函数调用和字符串拼接,目的是测试滚动条效果。这里我们模拟一个复杂的数据处理过程,包含字符串操作、数组处理和数学计算等多种操作的组合。这段代码会将多个不同类型的数据进行转换和组合,生成一个复杂的结果字符串。
$longLine1 = "处理结果: " . strtoupper(trim(json_encode(array_merge($arrayData, ['timestamp' => time(), 'random' => rand(1000, 9999), 'status' => 'completed', 'message' => '这是一条很长的消息,用于增加字符串长度,测试滚动效果。这里继续添加一些内容,让这行代码变得足够长,以便在显示时需要滚动条才能完全查看。']), " \t\n\r\0\x0B"))) . " | 计算结果: " . (sqrt(pow($numberValue, 2) + pow($numberValue / 2, 2)) * 1.5) . " | 状态信息: 操作已完成,耗时 " . microtime(true) . " 毫秒,内存使用: " . memory_get_usage() . " 字节";
// 另一个长行代码,演示条件判断和函数嵌套的复杂情况
if (strlen($testString) > 10 && is_array($arrayData) && count($arrayData['values']) > 3 && $numberValue > 100000 && strpos($testString, 'PHP') !== false && (time() % 2 == 0)) {
$longLine2 = "满足所有条件 | 数组信息: " . print_r($arrayData, true) . " | 字符串长度: " . strlen($testString) . " | 随机数: " . rand(1, 1000) . " | 当前时间: " . date('Y-m-d H:i:s') . " | 这是为了测试滚动条而添加的额外内容,继续增加长度直到足够长,确保在大多数编辑器或显示窗口中都需要滚动才能看到完整内容。这里再添加一些文字,让这行代码变得更长一些,以达到测试目的。";
} else {
$longLine2 = "不满足所有条件的默认值";
}
// 函数定义
function processData($input) {
if (!is_array($input)) {
return "无效输入: 必须提供数组类型";
}
// 处理数据的逻辑
$result = [];
foreach ($input as $key => $value) {
$result[strtoupper($key)] = is_string($value) ? strrev($value) : $value;
}
return $result;
}
// 类定义
class DemoClass {
private $property1;
protected $property2;
public $property3;
public function __construct($param1, $param2) {
$this->property1 = $param1;
$this->property2 = $param2;
$this->property3 = "默认值: " . $param1 . " - " . $param2;
}
public function getCombined() {
return $this->property1 . "|" . $this->property2 . "|" . $this->property3;
}
}
// 执行演示
echo "PHP长行代码测试演示\n";
echo "=====================\n";
echo "1. 长行字符串1: " . $longLine1 . "\n\n";
echo "2. 长行字符串2: " . $longLine2 . "\n\n";
echo "3. 处理后的数据: " . print_r(processData($arrayData), true) . "\n\n";
$demoObj = new DemoClass("参数1", "参数2");
echo "4. 对象信息: " . $demoObj->getCombined() . "\n";
?> 經典編輯器程式碼塊有高度時,工具欄會顯示展開摺疊按鈕。
經典編輯器程式碼沒有高度時

<?php
// 简单的PHP类示例
class Greeting {
private $name;
public function __construct($name) {
$this->name = $name;
}
public function sayHello() {
return "Hello, " . $this->name . "!";
}
}
$greeter = new Greeting("World");
echo $greeter->sayHello();
?> 經典編輯器沒有高度時不會顯示展開摺疊按鈕。
區塊編輯器程式碼塊高度設定

目前就有這幾個高度類名:
h-200 {
max-height: 200px; /*最大高度为200px*/
}
h-300 {
max-height: 300px; /*最大高度为300px*/
}
h-380 {
max-height: 380px; /*最大高度为380px*/
}
h-500 {
max-height: 500px; /*最大高度为500px*/
} 區塊編輯器沒有像經典編輯器一樣手動輸入高度,採用的是固定類的方式,?可能是小編剛接觸區塊編輯器的原因吧,後續看看能不能程式碼區塊工具欄新增一個手動輸入高度的功能,演示如下:
<?php
/**
* PHP长行代码演示示例
* 用于测试滚动条效果
*/
// 基本变量定义
$testString = "这是一个普通的字符串变量,用于演示PHP的基本语法特性";
$numberValue = 123456;
$arrayData = [
'name' => '测试数据',
'type' => '演示',
'values' => [10, 20, 30, 40, 50]
];
// 这是一行很长的代码,包含了多个函数调用和字符串拼接,目的是测试滚动条效果。这里我们模拟一个复杂的数据处理过程,包含字符串操作、数组处理和数学计算等多种操作的组合。这段代码会将多个不同类型的数据进行转换和组合,生成一个复杂的结果字符串。
$longLine1 = "处理结果: " . strtoupper(trim(json_encode(array_merge($arrayData, ['timestamp' => time(), 'random' => rand(1000, 9999), 'status' => 'completed', 'message' => '这是一条很长的消息,用于增加字符串长度,测试滚动效果。这里继续添加一些内容,让这行代码变得足够长,以便在显示时需要滚动条才能完全查看。']), " \t\n\r\0\x0B"))) . " | 计算结果: " . (sqrt(pow($numberValue, 2) + pow($numberValue / 2, 2)) * 1.5) . " | 状态信息: 操作已完成,耗时 " . microtime(true) . " 毫秒,内存使用: " . memory_get_usage() . " 字节";
// 另一个长行代码,演示条件判断和函数嵌套的复杂情况
if (strlen($testString) > 10 && is_array($arrayData) && count($arrayData['values']) > 3 && $numberValue > 100000 && strpos($testString, 'PHP') !== false && (time() % 2 == 0)) {
$longLine2 = "满足所有条件 | 数组信息: " . print_r($arrayData, true) . " | 字符串长度: " . strlen($testString) . " | 随机数: " . rand(1, 1000) . " | 当前时间: " . date('Y-m-d H:i:s') . " | 这是为了测试滚动条而添加的额外内容,继续增加长度直到足够长,确保在大多数编辑器或显示窗口中都需要滚动才能看到完整内容。这里再添加一些文字,让这行代码变得更长一些,以达到测试目的。";
} else {
$longLine2 = "不满足所有条件的默认值";
}
// 函数定义
function processData($input) {
if (!is_array($input)) {
return "无效输入: 必须提供数组类型";
}
// 处理数据的逻辑
$result = [];
foreach ($input as $key => $value) {
$result[strtoupper($key)] = is_string($value) ? strrev($value) : $value;
}
return $result;
}
// 类定义
class DemoClass {
private $property1;
protected $property2;
public $property3;
public function __construct($param1, $param2) {
$this->property1 = $param1;
$this->property2 = $param2;
$this->property3 = "默认值: " . $param1 . " - " . $param2;
}
public function getCombined() {
return $this->property1 . "|" . $this->property2 . "|" . $this->property3;
}
}
// 执行演示
echo "PHP长行代码测试演示\n";
echo "=====================\n";
echo "1. 长行字符串1: " . $longLine1 . "\n\n";
echo "2. 长行字符串2: " . $longLine2 . "\n\n";
echo "3. 处理后的数据: " . print_r(processData($arrayData), true) . "\n\n";
$demoObj = new DemoClass("参数1", "参数2");
echo "4. 对象信息: " . $demoObj->getCombined() . "\n";
?> 有高度時,工具欄會顯示展開摺疊按鈕。
區塊編輯器程式碼沒有高度時

如果不需要高度或者程式碼很少的情況下,就不用再設定高度類名,沒有高度時,工具欄不會顯示展開白摺疊按鈕,演示如下
<?php
// 简单的PHP类示例
class Greeting {
private $name;
public function __construct($name) {
$this->name = $name;
}
public function sayHello() {
return "Hello, " . $this->name . "!";
}
}
$greeter = new Greeting("World");
echo $greeter->sayHello();
?> 後續會更新需求更新外掛,如外掛有什麼問題請加QQ群1398231反饋!
