-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.xml
2275 lines (2140 loc) · 115 KB
/
index.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Hello World</title>
<link>https://zynismus16.github.io/</link>
<description>Recent content on Hello World</description>
<image>
<title>Hello World</title>
<url>https://zynismus16.github.io/papermod-cover.png</url>
<link>https://zynismus16.github.io/papermod-cover.png</link>
</image>
<generator>Hugo -- gohugo.io</generator>
<language>zh</language>
<lastBuildDate>Tue, 18 Apr 2023 08:50:00 +0000</lastBuildDate><atom:link href="https://zynismus16.github.io/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>升级局域网并安装群晖nas</title>
<link>https://zynismus16.github.io/posts/110/</link>
<pubDate>Tue, 18 Apr 2023 08:50:00 +0000</pubDate>
<guid>https://zynismus16.github.io/posts/110/</guid>
<description>DayN 越来越忙,前几天查看论坛发现,其实目前组的raid1机械硬盘存储库最快也就200MB,因为是同时拷贝同一份文件到两块硬盘,就算加了SSD缓</description>
<content:encoded><![CDATA[<h1 id="dayn">DayN</h1>
<p>越来越忙,前几天查看论坛发现,其实目前组的raid1机械硬盘存储库最快也就200MB,因为是同时拷贝同一份文件到两块硬盘,就算加了SSD缓存等SSD缓存的空间用完还是会降速到机械硬盘的速度(因为缓存用完后群晖会将文件直接写入存储池)。
而测试群晖ssd缓存的回写速度最快才10~MB/S。 谢特!
想在现在的基础上加速,只能更换读写速度更快的存储设备或者更改为raid10(在raid1的基础上应用raid0组成条带空间。一份文件会被切分成多份存储到不同硬盘中,这样同时写入的理论速度将会成倍增加).
先这样吧,等老板回来后再给他说,看他升不升级。</p>
<h1 id="day8">Day8</h1>
<p>今日将将所有硬盘取出手动降级dsm到6.2.4,终于看见了跳过连续IO选项,遂取消勾选。再次测试,哦豁,虽然是在往缓存中写入数据了,不过速度还是依旧200多MB,下载倒是快了,最快的可以达到1GB每秒。先这样。</p>
<p>堆叠线也到了,刚好插上测试电脑对接的模块及线的问题….</p>
<p>哦豁,速度还是只有200多MB,排除光模块及线的问题,现在需要去找电脑或者网卡的问题,不过我也注意到一点,在这两台特别慢的电脑上,如果对该电脑进行网络写操作,电脑将变的很卡,虽然在任务管理器中监视设备性能并没有发现短板,但是卡顿现象确实发生了,对比不卡的电脑,除了硬件不一致外操作系统也没更新,晚上更新下系统试试。</p>
<h1 id="day7">Day7</h1>
<p>工作繁忙,暂时无暇顾及网络,暂时搁置问题排查,等前两天买的成品万兆堆叠线到货后再次短接测试。排除线材及光模块的问题。
上班时想到查看硬盘写入,遂打开群晖资源管理对硬盘写入进行监控,同时拷贝文件到相应存储池,发现缓存完全不参与。
沟通群晖官方,DSM7+无法缓存连续IO,哦豁…
手动降级安装dsm6版本。</p>
<h1 id="day6">Day6</h1>
<p>怀疑部分硬件问题,尝试将两台电脑对接,使用iperf及smb文件传输测速。OMG!速度不达标,还是只有200MB/S。
继续查找问题所在……</p>
<h1 id="day5">Day5</h1>
<p>网卡到货,安装测试。
好家伙,速度没有丝毫提升,开始头疼。
对网卡属性进行配置,开巨型帧,关传输缓存,关闭远程分差api。无效果。
用最高配置电脑使用Homebox测速,能跑满宽带。iperf还是无法跑满宽带。</p>
<h1 id="day4">Day4</h1>
<p>查找了一天的问题,发现买的网卡是pcie x8的,电脑的pcie是x4的,怀疑可能是带宽不够,看到一块tp的tl-nt521f单口万兆网卡,购买等到货。</p>
<h1 id="day3">Day3</h1>
<p>所有光纤全部到位,开始安装硬件设备,先安装三台电脑的万兆网卡,安装路由器及相关光模块。
安装群晖nas硬盘,配置两块m2做RAID1缓存阵列,两块16T硬盘做RAID1数据盘。
<strong>对局域网宽带测速</strong>
问题来了,不管用iperf测试还是smb本地文件传输均无法达到万兆,最大速度才200MB/S。开始找问题。</p>
<h1 id="day2">Day2</h1>
<p>硬件基本到货,开始安装。
先把光纤走好,下午请宽带运营商师傅来进行熔纤。</p>
<h1 id="day1">Day1</h1>
<p>配件陆陆续续到货,暂时无法安装。</p>
<h1 id="起因">起因</h1>
<p>由于公司存储视频素材的硬盘坏的很快,所以计划购买群晖NAS做素材仓库并挂载到电脑进行工程备份。
领导决定使用群晖DS1821+做NAS,购买万兆路由器及相应网卡做万兆局域网。
以下是具体配置单:</p>
<table>
<thead>
<tr>
<th style="text-align:center">定位</th>
<th style="text-align:center">品牌</th>
<th style="text-align:center">数量</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">NAS</td>
<td style="text-align:center">群晖DS1821+</td>
<td style="text-align:center">1</td>
</tr>
<tr>
<td style="text-align:center">缓存盘</td>
<td style="text-align:center">致态TiPlus 7100 1TB</td>
<td style="text-align:center">2</td>
</tr>
<tr>
<td style="text-align:center">存储盘</td>
<td style="text-align:center">西数 HC550 16T</td>
<td style="text-align:center">2</td>
</tr>
<tr>
<td style="text-align:center">NAS拓展卡</td>
<td style="text-align:center">intelx520SR1DA2</td>
<td style="text-align:center">1</td>
</tr>
<tr>
<td style="text-align:center">路由器</td>
<td style="text-align:center">TL-R6812TP-AC</td>
<td style="text-align:center">1</td>
</tr>
<tr>
<td style="text-align:center">光模块</td>
<td style="text-align:center">TL-SM512LM-300m</td>
<td style="text-align:center">6</td>
</tr>
<tr>
<td style="text-align:center">跳线</td>
<td style="text-align:center">单模双芯2.0mm</td>
<td style="text-align:center">2</td>
</tr>
<tr>
<td style="text-align:center">光转电口模块</td>
<td style="text-align:center">ZK-10G-TX</td>
<td style="text-align:center">1</td>
</tr>
<tr>
<td style="text-align:center">光纤</td>
<td style="text-align:center">山泽 4芯OM3万兆室内100M</td>
<td style="text-align:center">1</td>
</tr>
<tr>
<td style="text-align:center">ups</td>
<td style="text-align:center">雷迪司H1000M</td>
<td style="text-align:center">1</td>
</tr>
<tr>
<td style="text-align:center">网卡</td>
<td style="text-align:center">万兆通(10Gtek) X520-DA1</td>
<td style="text-align:center">3</td>
</tr>
</tbody>
</table>
]]></content:encoded>
</item>
<item>
<title>Unraid上使用rclone插件挂载网盘</title>
<link>https://zynismus16.github.io/posts/106/</link>
<pubDate>Mon, 17 Apr 2023 16:54:00 +0000</pubDate>
<guid>https://zynismus16.github.io/posts/106/</guid>
<description>安装rclone插件 应用中搜索rclone 选择这个插件安装,其他两个为docker 安装完成后会出现在设置-用户实用程序中 连接网盘 微软网盘 因U</description>
<content:encoded><![CDATA[<h3 id="安装rclone插件">安装rclone插件</h3>
<p>应用中搜索<code>rclone</code>
选择这个插件安装,其他两个为docker
安装完成后会出现在<code>设置</code>-<code>用户实用程序</code>中
<img loading="lazy" src="https://cdn.jsdelivr.ren/gh/Zynismus16/Zynismus16@master/picture/2023/04/17/1681721706.png" alt="1681721706.png" />
</p>
<h3 id="连接网盘">连接网盘</h3>
<p>微软网盘
因Unraid没有浏览器
所以rclone无法直接获取code来连接网盘
我们采用这种的方式来,在windows上获取config内容
下载个客户端
假设解压到c盘根目录</p>
<pre><code>C:\Users\Administrator>cd c:\rclone
</code></pre>
<p>切换到解压目录</p>
<pre><code>c:\rclone>rclone config
</code></pre>
<p>开始配置</p>
<pre><code>No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
</code></pre>
<p>选择n新建</p>
<pre><code>name> onedrive
</code></pre>
<p>建立个名称</p>
<pre><code>Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
1 / 1Fichier
\ "fichier"
2 / Alias for an existing remote
\ "alias"
3 / Amazon Drive
\ "amazon cloud drive"
4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, and Tencent COS
\ "s3"
5 / Backblaze B2
\ "b2"
6 / Box
\ "box"
7 / Cache a remote
\ "cache"
8 / Citrix Sharefile
\ "sharefile"
9 / Compress a remote
\ "compress"
10 / Dropbox
\ "dropbox"
11 / Encrypt/Decrypt a remote
\ "crypt"
12 / Enterprise File Fabric
\ "filefabric"
13 / FTP Connection
\ "ftp"
14 / Google Cloud Storage (this is not Google Drive)
\ "google cloud storage"
15 / Google Drive
\ "drive"
16 / Google Photos
\ "google photos"
17 / Hadoop distributed file system
\ "hdfs"
18 / Hubic
\ "hubic"
19 / In memory object storage system.
\ "memory"
20 / Jottacloud
\ "jottacloud"
21 / Koofr
\ "koofr"
22 / Local Disk
\ "local"
23 / Mail.ru Cloud
\ "mailru"
24 / Mega
\ "mega"
25 / Microsoft Azure Blob Storage
\ "azureblob"
26 / Microsoft OneDrive
\ "onedrive"
27 / OpenDrive
\ "opendrive"
28 / OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
\ "swift"
29 / Pcloud
\ "pcloud"
30 / Put.io
\ "putio"
31 / QingCloud Object Storage
\ "qingstor"
32 / SSH/SFTP Connection
\ "sftp"
33 / Sugarsync
\ "sugarsync"
34 / Tardigrade Decentralized Cloud Storage
\ "tardigrade"
35 / Transparently chunk/split large files
\ "chunker"
36 / Union merges the contents of several upstream fs
\ "union"
37 / Webdav
\ "webdav"
38 / Yandex Disk
\ "yandex"
39 / Zoho
\ "zoho"
40 / http Connection
\ "http"
41 / premiumize.me
\ "premiumizeme"
42 / seafile
\ "seafile"
Storage> 26
</code></pre>
<p>如要连接谷歌的盘,根据标识选择26(版本不同,序号不一定一样,按实际标识选择)</p>
<pre><code>** See help for onedrive backend at: https://rclone.org/onedrive/ **
OAuth Client Id
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id>
</code></pre>
<p>不输入,直接回车</p>
<pre><code>OAuth Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret>
</code></pre>
<p>不输入,直接回车</p>
<pre><code>Choose national cloud region for OneDrive.
Enter a string value. Press Enter for the default ("global").
Choose a number from below, or type in your own value
1 / Microsoft Cloud Global
\ "global"
2 / Microsoft Cloud for US Government
\ "us"
3 / Microsoft Cloud Germany
\ "de"
4 / Azure and Office 365 operated by 21Vianet in China
\ "cn"
region> 1
</code></pre>
<p>选择1</p>
<pre><code>Edit advanced config? (y/n)
y) Yes
n) No (default)
y/n> n
</code></pre>
<p>选择n,不编辑</p>
<pre><code>Remote config
Use auto config?
* Say Y if not sure
* Say N if you are working on a remote or headless machine
y) Yes (default)
n) No
y/n> y
</code></pre>
<p>选择1自动配置</p>
<pre><code>If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=FDOLLiSz***rSJBbag
Log in and authorize rclone for access
Waiting for code...
Got code
</code></pre>
<p>点击链接,登陆账户,授权给rclone使用,脚本自动获取code</p>
<pre><code>Choose a number from below, or type in an existing value
1 / OneDrive Personal or Business
\ "onedrive"
2 / Root Sharepoint site
\ "sharepoint"
3 / Sharepoint site name or URL (e.g. mysite or https://contoso.sharepoint.com/sites/mysite)
\ "url"
4 / Search for a Sharepoint site
\ "search"
5 / Type in driveID (advanced)
\ "driveid"
6 / Type in SiteID (advanced)
\ "siteid"
7 / Sharepoint server-relative path (advanced, e.g. /teams/hr)
\ "path"
Your choice> 1
</code></pre>
<p>选择1</p>
<pre><code>Found 1 drives, please select the one you want to use:
0: OneDrive (business) id=b!jC7ndQM3XkO5C6RFjk8FC0l6JPipknpLuC4BB4ohz64u3aY5OQn_T4Vh-Rr-ZaZD
Chose drive to use:> 0
</code></pre>
<p>选择标识的0网盘</p>
<pre><code>Found drive 'root' of type 'business', URL: https://kogfw***.sharepoint.com/personal/s1oz_****/Documents
Is that okay?
y) Yes (default)
n) No
y/n> y
</code></pre>
<p>选择y</p>
<pre><code>--------------------
[onedrive]
type = onedrive
region = global
token = {"access_token":"eyJ0eXAiLiIs**gU2l0ZXMuUmVhZC5BbGwgcHJvZmlsZSMastoKDtaM8uxbH-ypRGI0y8H_ysiRw20QRRLc7pdol6BmYo0BcRNXJgJN6xccP5b20-iyLejE_vF1Iw5AKQP4-qirH3NHP-S5l*********pLuC4BB4ohz64u3aY5OQn_T4Vh-Rr-ZaZD
drive_type = business
--------------------
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
</code></pre>
<p>显示相关config信息,提示你是否确认
输入y</p>
<pre><code>Current remotes:
Name Type
==== ====
onedrive onedrive
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q
</code></pre>
<p>按q退出配置界面
将刚显示的这段config信息粘贴到rclone插件中</p>
<pre><code>--------------------
[onedrive]
type = onedrive
region = global
token = {"access_token":"eyJ0eXAiLiIs**gU2l0ZXMuUmVhZC5BbGwgcHJvZmlsZSMastoKDtaM8uxbH-ypRGI0y8H_ysiRw20QRRLc7pdol6BmYo0BcRNXJgJN6xccP5b20-iyLejE_vF1Iw5AKQP4-qirH3NHP-S5l*********pLuC4BB4ohz64u3aY5OQn_T4Vh-Rr-ZaZD
drive_type = business
</code></pre>
<p>粘贴至<code>Unraid设置</code>-<code>用户实用程序</code>-<code>rclcone</code></p>
<p><img loading="lazy" src="https://cdn.jsdelivr.ren/gh/Zynismus16/Zynismus16@master/picture/2023/04/17/1681722052.png" alt="1681722052.png" />
</p>
<p>然后在Unraid终端中输入</p>
<pre><code>rclone config
</code></pre>
<p>即可看到已经连接的网盘信息</p>
<p><img loading="lazy" src="https://cdn.jsdelivr.ren/gh/Zynismus16/Zynismus16@master/picture/2023/04/17/1681722080.png" alt="1681722080.png" />
</p>
<p>创建用于挂载磁盘的目录
根据自己需求,新建一个用于挂载网盘的空文件夹</p>
<pre><code>mkdir -p /mnt/user/rclone/onedrive
</code></pre>
<p>我想分的细一点,所以等下使用`onedrive空文件夹挂载刚刚连接的谷歌团队盘</p>
<p>挂载网盘到本地
示例</p>
<pre><code>rclone mount onedrive:test /mnt/user/rclone/onedrive --umask 0000 --default-permissions --allow-non-empty --allow-other --buffer-size 32M --low-level-retries 200 --dir-cache-time 2h --vfs-read-chunk-size 64M --vfs-read-chunk-size-limit 1G &
</code></pre>
<p>需要修改的就是
<code>onedrive:test onedrive</code>为网盘的名字不特指微软网盘<code>test</code>为要挂载的网盘文件夹路径,不填留为挂载整个网盘
<code>/mnt/user/rclone/onedrive</code>本地用于挂载的空目录
关于其他参数含义,可自行查阅最下方命令说明
如需要给emby之类使用,挂载文件夹不显示文件,请修改<code>--umask 000</code>
在emby终端输入 <code>umask</code></p>
<pre><code>/ # umask
0022
/ #
</code></pre>
<p>将示例中<code>--umask 000</code>修改为<code>--umask 0022</code> emby即可正常访问文件</p>
<p>查询是否成功将网盘挂载到本地</p>
<pre><code>df -h
</code></pre>
<p>输入命令后,如成功挂载,就会有显示挂载的目录了</p>
<p>开机自动挂载
可使用<code>User Scripts插件</code>新建开机任务,输入示例命令</p>
<p>常用命令</p>
<pre><code>fusermount -qzu /mnt/user/rclone/onedrive
</code></pre>
<p>按挂载的目录路径,卸载已挂载的网盘</p>
<pre><code>https://rclone.org/commands/
</code></pre>
<p>官方的命令说明</p>
]]></content:encoded>
</item>
<item>
<title>解决索尼相机拍摄素材在win10上无法显示缩略图的问题</title>
<link>https://zynismus16.github.io/posts/103/</link>
<pubDate>Thu, 13 Apr 2023 11:09:00 +0000</pubDate>
<guid>https://zynismus16.github.io/posts/103/</guid>
<description>目前推测是因为视频色彩空间不同导致的,测试电脑对4:2:0色彩的视频能够生成缩略图但速度较慢,对4:2:2色彩的视频无法生成缩略图。 网上查找</description>
<content:encoded><![CDATA[<p>目前推测是因为视频色彩空间不同导致的,测试电脑对4:2:0色彩的视频能够生成缩略图但速度较慢,对4:2:2色彩的视频无法生成缩略图。
网上查找后发现安装 <strong>K-Lite Codec Pack</strong> 可解决。
安装完成后成功显示4:2:2色彩的缩略图,4:2:0的缩略图显示速度有明显提升。</p>
<p>软件官网:<a href="http://www.codecguide.com/">Codec Guide: K-Lite Codec Pack - For Windows 11 / 10 / 8.1 / 7</a>
分流下载:</p>
]]></content:encoded>
</item>
<item>
<title>网页禁用左右键</title>
<link>https://zynismus16.github.io/posts/44/</link>
<pubDate>Tue, 14 Feb 2023 20:50:00 +0000</pubDate>
<guid>https://zynismus16.github.io/posts/44/</guid>
<description>先来一种最简单的方法,它直接在body属性定义了oncontextmenu,使得右键的值为false,起到了屏蔽右键的效果。 &lt;body oncontextmenu=self.event.returnValue=false&gt; 复制 这个方式</description>
<content:encoded><![CDATA[<p>先来一种最简单的方法,它直接在body属性定义了oncontextmenu,使得右键的值为false,起到了屏蔽右键的效果。</p>
<pre tabindex="0"><code><body oncontextmenu=self.event.returnValue=false>
</code></pre><p>复制</p>
<p>这个方式虽然屏蔽掉了右键的功能,但是左键还可以使用,自然Ctrl+c,Ctrl+v的功能还是可以用的,这时需要屏蔽掉左键,可是要屏蔽左键不是就废掉了,别急,这里只是屏蔽掉左键的选定功能,代码如下:</p>
<pre tabindex="0"><code><body onselectstart="return false">
</code></pre><p>复制</p>
<p>左右键联合起来,就彻底控制了左右键:</p>
<pre tabindex="0"><code><body oncontextmenu=self.event.returnValue=false onselectstart="return false">
</code></pre>]]></content:encoded>
</item>
<item>
<title>使用Office Tool Plus部署Ofiice 2021</title>
<link>https://zynismus16.github.io/posts/27/</link>
<pubDate>Tue, 17 Jan 2023 06:33:00 +0000</pubDate>
<guid>https://zynismus16.github.io/posts/27/</guid>
<description>安装 下载 点击该链接下载 Office Tool Plus,或访问 Office Tool Plus 官网 下载压缩包。 下载完成后解压压缩包得到以下文件 双击打开 Office Tool Plus.exe 部署 点击左边部署 按下图配置 添加</description>
<content:encoded><![CDATA[<h1 id="安装">安装</h1>
<ol>
<li>下载
点击该链接下载 <a href="https://otp.landian.vip/redirect/download.php?type=runtime&site=yuntu">Office Tool Plus</a>,或访问 Office Tool Plus <a href="https://otp.landian.vip/zh-cn/">官网</a> 下载压缩包。
下载完成后解压压缩包得到以下文件
<img loading="lazy" src="https://img1.imgtp.com/2023/02/16/39eSbf7C.png" alt="1676523160095.png" />
双击打开 <code>Office Tool Plus.exe</code></li>
</ol>
<p><img loading="lazy" src="https://img1.imgtp.com/2023/02/16/DBcnqESe.png" alt="1676523252598.png" />
</p>
<ol start="2">
<li>部署
点击左边<code>部署</code></li>
</ol>
<p><img loading="lazy" src="https://img1.imgtp.com/2023/02/16/j5ch1xUz.png" alt="1676523297126.png" />
</p>
<p>按下图配置</p>
<p><img loading="lazy" src="https://img1.imgtp.com/2023/02/16/MfqgJ3eE.png" alt="1676523587851.png" />
</p>
<ol start="3">
<li>添加产品
产品中点击右方<code>添加产品</code></li>
</ol>
<p><img loading="lazy" src="https://img1.imgtp.com/2023/02/16/p2gsscQC.png" alt="1676523658180.png" />
</p>
<p>添加 <code>Office 专业增强版 2021</code></p>
<p>下方应用程序可按照需求选择,如只需要Word Excel PPT 就按照下图选择
<img loading="lazy" src="https://img1.imgtp.com/2023/02/16/URoUIaSB.png" alt="1676523814775.png" />
</p>
<ol start="4">
<li>开始部署
选择完成后点击页面最上方 <code>开始部署</code>
<img loading="lazy" src="https://img1.imgtp.com/2023/02/16/sVbnhZdY.png" alt="1676523889180.png" />
等待下载完成并部署完成
<img loading="lazy" src="https://img1.imgtp.com/2023/02/16/ldv7KIWL.png" alt="1676523933759.png" />
</li>
</ol>
<h1 id="激活">激活</h1>
<p>部署完成后点击页面左方<code>激活</code>
<img loading="lazy" src="https://img1.imgtp.com/2023/02/16/VOl4ODem.png" alt="1676524022283.png" />
</p>
<ol>
<li>
<p>许可证安装
选择许可证管理并点击<code>安装许可证</code>
<img loading="lazy" src="https://img1.imgtp.com/2023/02/16/mj0U6Omt.png" alt="1676524070671.png" />
选择 <code>Office LTSC 专业增强版 2021 -批量许可证</code>
<img loading="lazy" src="https://img1.imgtp.com/2023/02/16/xclwAGoj.png" alt="1676524919045.png" />
界面最下方有安装进度,等待所有许可证安装完成。
<img loading="lazy" src="https://img1.imgtp.com/2023/02/16/dtoGUszV.png" alt="1676524299520.png" />
</p>
</li>
<li>
<p>KSM主机设置
安完成后选择上方 <code>KSM管理</code> ,并在 <code>KSM主机</code> 栏填入KSM 主机地址:kms.loli.best
这里提供其他KSM主机列表,可选择其他主机地址: <a href="https://www.coolhub.top/tech-articles/kms_list.html">KMS 列表 | Yerong の小窝 (coolhub.top)</a>
<img loading="lazy" src="https://img1.imgtp.com/2023/02/16/fOqcdBNR.png" alt="1676524474868.png" />
填入KSM主机地址后点击 <code>设置主机</code></p>
</li>
</ol>
<p>最后点击<code>激活</code>并等待程序运行完成即可。
<img loading="lazy" src="https://img1.imgtp.com/2023/02/16/SAXJIpNh.png" alt="1676524788754.png" />
</p>
<p>Tip:
如果输出区提示激活失败,红色字体提示许可证未安装时可尝试卸载许可证后重新安装类似产品的许可证。
<img loading="lazy" src="https://img1.imgtp.com/2023/02/16/oqF7spVE.png" alt="1676524883781.png" />
</p>
]]></content:encoded>
</item>
<item>
<title>3D max入门学习 Part.1</title>
<link>https://zynismus16.github.io/posts/10/</link>
<pubDate>Thu, 24 Nov 2022 16:36:00 +0000</pubDate>
<guid>https://zynismus16.github.io/posts/10/</guid>
<description>Max界面与菜单栏讲解 基本工具 选择工具 快捷键:Q c tr l :加选 a l t :减选 有多种选择方式 交叉/窗口 移动工具 快捷键:w 轴向是可以锁定的,移动前</description>
<content:encoded><![CDATA[<h1 id="max界面与菜单栏讲解">Max界面与菜单栏讲解</h1>
<h2 id="基本工具">基本工具</h2>
<h3 id="选择工具">选择工具</h3>
<p>快捷键:Q</p>
<p>c tr l :加选 a l t :减选 有多种选择方式 交叉/窗口</p>
<h3 id="移动工具">移动工具</h3>
<p>快捷键:w</p>
<p>轴向是可以锁定的,移动前请先确认选择的轴向</p>
<h3 id="旋转工具">旋转工具</h3>
<p>快捷键:E</p>
<p>外圈灰色进行旋转是于屏幕平行轴向进行旋转</p>
<h3 id="缩放工具">缩放工具</h3>
<p>快捷键:R</p>
<p>有三种缩放方式,除特殊情况不要使用第三种</p>
<h2 id="进阶工具">进阶工具</h2>
<h3 id="3d捕捉工具">3D捕捉工具</h3>
<p>用来进行点对点的对齐以及快速单轴向对</p>
<h3 id="角度捕捉工具">角度捕捉工具</h3>
<p>对于旋转角度进行固定数值旋转</p>
<h3 id="材质编辑器">材质编辑器</h3>
<p>节点材质编辑器和层级材质编辑器,给与模型真正的颜色显示</p>
<h3 id="对齐与镜像">对齐与镜像</h3>
<p>对齐工具:补充无法进行点位吸附的一种对齐方式镜像:快速复制并且翻转模型,但是个人基本不用</p>
<h1 id="3dmax软件常用快捷键">3DMAX软件常用快捷键</h1>
<p><code>鼠标中键</code> 平移运动</p>
<p><code>Alt + 鼠标中键</code> 旋转视图</p>
<p><code>Alt + ctrl + 鼠标中键</code> 视图的放大缩小</p>
<p><code>Ctrl + z</code> 恢复上一步</p>
<p><code>Ctrl + y</code> 重复上一步</p>
<p><code>Ctrl + a</code> 全选</p>
<p><code>Ctrl + I</code> 反选</p>
<p><code>G</code> 网格切换</p>
<p><code>F</code> 前视图</p>
<p><code>T</code> 顶视图</p>
<p><code>L</code> 左视图</p>
<p><code>B</code> 底视图</p>
<p><code>Alt + W</code> 最 大化显示视图</p>
<p><code>Ctrl + C</code> 将摄相机适配到视图</p>
<p><code>Alt + Q</code> 将当前选择的物体隔离并最 大化显示在视图上, 其它物体暂时消失显示。</p>
<p><code>C</code> 将所选的视图转换为摄相机视图</p>
<p><code>w</code> 位移</p>
<p><code>e</code> 旋转</p>
<p><code>r</code> 放缩</p>
<p><code>O</code> 显示降级适配(开关)</p>
<p><code>V</code> 打开视图快捷键切换菜单,选择视图进行切换。</p>
<p><code>+ </code>放大坐标轴</p>
<p><code>-</code> 缩小坐标轴</p>
<p><code>Ctrl + Atl + z</code> 在当前视图完全显示所有物体</p>
<p><code>z</code> 在当前视图完全显示所选物体</p>
<p><code>shift + 鼠标左键</code> 复制所选择的一个或多个物体</p>
<p><code>Ctrl + 鼠标左键</code> 增加选择</p>
<p><code>Alt + 鼠标左键</code> 减少选择</p>
<p><code>H</code> 菜单选择物体</p>
<p><code>M</code> 显示材质编辑器</p>
<p><code>N</code> 打开动画记录按钮</p>
<p><code>/?</code> 播放动画</p>
<p><code>F3</code> 实体显示和线框显示的切换</p>
<p><code>F4</code> 线框显示</p>
<p><code>F9</code> 快速渲染</p>
<p><code>F10</code> 显示渲染菜单
<code>[ ] </code>分别放大或缩小一倍视图显示</p>
<p><code>M</code> 材质</p>
<p><code>z</code> 选择物最大</p>
<p><code>ctrl + AlT + z</code> 满屏</p>
<p><code>ctrl + x</code> 视图模式</p>
<p><code>ALT + W</code> 最 大化</p>
<p><code>Shift + Q =</code> 渲染</p>
<p><code>F9 </code>视图切换</p>
<p><code>F3 </code>显示降级适配(开关)</p>
<p><code>O</code> 适应透视图格点</p>
<p><code>Shift + Ctrl + A</code> 排列</p>
<p><code>Alt + A</code> 角度捕捉(开关)</p>
<p><code>A</code> 动画模式 (开关)</p>
<p><code>N</code> 改变到后视图</p>
<p><code>K</code> 背景锁定(开关)</p>
<p><code>Alt + Ctrl + B</code> 前一时间单位</p>
<p><code>.</code> 下一时间单位</p>
<p><code>,</code> 改变到上(Top)视图</p>
<p><code>T</code> 改变到底(Bottom)视图</p>
<p><code>B</code> 改变到相机(Camera)视图</p>
<p><code>C</code> 改变到前(Front)视图</p>
<p><code>F</code> 改变到等大的用户(User)视图</p>
<p><code>U</code> 改变到右(Right)视图</p>
<p><code>R</code> 改变到透视(Perspective)图</p>
<p><code>P</code> 循环改变选择方式</p>
<p><code>Ctrl + F</code> 默认灯光(开关)</p>
<p><code>Ctrl + L</code> 删除物体</p>
<p><code>DEL</code> 当前视图暂时失效</p>
<p><code>D</code> 是否显示几何体内框(开关)</p>
<p><code>Ctrl + E</code> 显示第 一个工具条</p>
<p><code>Alt + 1</code> 专家模式全屏(开关)</p>
<p><code>Ctrl + X</code> 暂存(Hold)场景</p>
<p><code>Alt + Ctrl + H</code> 取回(Fetch)场景</p>
<p><code>Alt + Ctrl + F</code> 冻结所选物体</p>
<p><code>6</code> 跳到最 后一帧</p>
<p><code>END</code> 跳到第 一帧</p>
<p><code>HOME</code> 显示/隐藏相机(Cameras)</p>
<p><code>Shift + C</code> 显示/隐藏几何体(Geometry)</p>
<p><code>Shift + O</code> 显示/隐藏网格(Grids)</p>
<p><code>G</code> 显示/隐藏帮助(Helpers)物体</p>
<p><code>Shift + H</code> 显示/隐藏光源(Lights)</p>
<p><code>Shift + L</code> 显示/隐藏粒子系统(Particle Systems)</p>
<p><code>Shift + P</code> 显示/隐藏空间扭曲(Space Warps)物体</p>
<p><code>Shift + W</code> 锁定用户界面(开关)</p>
<p><code>Alt + 0</code> 匹配到相机(Camera)视图</p>
<p><code>Ctrl + C</code> 材质(Material)编辑器</p>
<p><code>M</code> 最 大化</p>
]]></content:encoded>
</item>
<item>
<title>使用ADBlock插件屏蔽知乎登录弹窗</title>
<link>https://zynismus16.github.io/posts/11/</link>
<pubDate>Tue, 08 Nov 2022 07:25:00 +0000</pubDate>
<guid>https://zynismus16.github.io/posts/11/</guid>
<description>在ADBlock插件设置中找到添加自定义屏蔽规则,添加下面代码即可屏蔽。 static.zhihu.com/heifetz/main.signflow.*.js static.zhihu.com/heifetz/*.signflow.*.css</description>
<content:encoded><![CDATA[<p>在ADBlock插件设置中找到添加自定义屏蔽规则,添加下面代码即可屏蔽。</p>
<pre tabindex="0"><code>static.zhihu.com/heifetz/main.signflow.*.js
static.zhihu.com/heifetz/*.signflow.*.css
</code></pre>]]></content:encoded>
</item>
<item>
<title>Typecho数据库常用的API,创建/更新/读取/删除</title>
<link>https://zynismus16.github.io/posts/12/</link>
<pubDate>Wed, 02 Nov 2022 08:47:00 +0000</pubDate>
<guid>https://zynismus16.github.io/posts/12/</guid>
<description>Typecho数据库常用API,整理了Typecho数据库常用的API,实现基本的CURD操作。创建(Create)、更新(Update)、</description>
<content:encoded><![CDATA[<p>Typecho数据库常用API,整理了Typecho数据库常用的API,实现基本的CURD操作。创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)</p>
<h2 id="表创建和删除">表创建和删除</h2>
<p>在Typecho插件开发过程中,往往需要创建自己的表。<code>Typecho_Db</code>类中的<code>query</code>函数,可用于执行所有sql语句,因此我们使用<code>query()</code>来进行表的创建、修改或者删除。</p>
<pre tabindex="0"><code>$db= Typecho_Db::get();
$prefix = $db->getPrefix();
$db->query('create table '.$prefix.'metas xxxxx');
</code></pre><p>注意,使用<code>query</code>方式创建表的时候,需要在表明前手动添加<code>$prefix</code>前缀,否则在后面的使用过程中会造成困惑。</p>
<p>还可以使用<code>table.</code>来代替<code>$prefix</code>,typecho会自动识别并替换成指定的前缀。</p>
<p>同理,修改或者删除Typecho数据库中表,按照同样的方式调用<code>query</code>即可。</p>
<h2 id="数据查询">数据查询</h2>
<h3 id="select查询表数据">select,查询表数据</h3>
<p><code>select</code>语句是可以说Typecho插件开发中最常用的sql调用。</p>
<pre tabindex="0"><code>$db = Typecho_Db::get();
$query= $db->select()->from('table.metas');
$result = $db->fetchAll($query);
</code></pre><h3 id="说明">说明:</h3>
<p>typecho中,<code>.</code>号具有特定的意义,这里<code>table.metas</code>表示这是一个metas表。实际上,typecho是自动将<code>table.</code>的字符使用<code>str_replace</code>替换成了<code>config.inc.php</code>中设定的前缀。</p>
<h3 id="举例">举例:</h3>
<p><code>$db->select()->from('table.metas');</code>将生成<code>SELECT * FROM typecho_metas WHERE (mid= '2' ),</code>其中<code>typecho_</code>是表前缀;
而<code>$db->select()->from('metas');</code>将生成<code>SELECT * FROM metas WHERE (mid= '2' ),</code>注意这里没有了表前缀。
指定表字段查询</p>
<p>有时为了提高查询性能,需要指定查询表中特定的几个字段,那么可以使用下面的方式:</p>
<pre tabindex="0"><code>$query= $db->select('mid','name')->from('table.metas');
echo $query; //SELECT `mid` , `name` FROM typecho_metas
</code></pre><p>如果联合查询中,两个表存在相同的字段名,那么可以使用table.来指定表名:</p>
<pre tabindex="0"><code>$query = $db->select('table.contents.cid')->from('table.contents')->join....
</code></pre><h3 id="指定查询条件">指定查询条件</h3>
<p>指定SQL查询的<code>where</code>语句,是最常用的api调用。</p>
<pre tabindex="0"><code>$query= $db->select('mid','name')->from('table.metas')->where('mid = ?', 2);
echo $query; //SELECT * FROM typecho_metas WHERE (`mid` = '2' )
</code></pre><p>如需要指定多个查询条件,直接多次调用<code>where</code>即可,将生成<code>and</code>关系的<code>where</code>条件</p>
<pre tabindex="0"><code>$db->select('mid','name')->from('table.metas')->where('mid = ?', 2)->where('name like ? ', $name);
</code></pre><p>使用<code>OR</code>关系的查询条件</p>
<p>可以使用<code>orWhere()</code>函数来指定SQL查询的或条件。</p>
<pre tabindex="0"><code>$db->select('mid','name')->from('table.metas')->where('mid = ?', 2)->orWhere('mid = ? ', 3);
//SELECT `mid` , `name` FROM typecho_metas WHERE (`mid` = '2' ) OR (`mid` = '3' )
</code></pre><p>指定查询范围</p>
<p>在需要分页的场景下,分页是必需的操作。offset()和limit()分别用于指定起始位置和结束位置,即指定查询范围。</p>
<pre tabindex="0"><code>$query = $db->select('mid','name')->from('table.metas')->offset(2)->limit(3);
echo $query;//SELECT `mid` , `name` FROM typecho_metas LIMIT 3 OFFSET 2
</code></pre><p>Typecho中,还提供了一种简写的方法,见<code>page()</code>函数。</p>
<pre tabindex="0"><code>$query = $db->select('mid','name')->from('table.metas')->page(3,10);
echo $query;//SELECT `mid` , `name` FROM typecho_metas LIMIT 10 OFFSET 20
//表示取第三页,并取10条记录。
</code></pre><h3 id="对查询结果进行排序">对查询结果进行排序</h3>
<p>在Typecho中,使用<code>order()</code>函数和<code>Typecho_Db::SORT_DESC</code>指定查询结果的排序方式。</p>
<pre tabindex="0"><code>$query = $db->select('mid','name')->from('table.metas')->order('mid',Typecho_Db::SORT_DESC);
echo $query;//SELECT `mid` , `name` FROM typecho_metas ORDER BY `mid` DESC
</code></pre><p>Tips: <code>Typecho_Db::SORT_ASC </code>表示升序排序,<code>Typecho_Db::SORT_DESC</code>表示降序排序</p>
<h3 id="联合查询">联合查询</h3>
<p>联合查询是SQL的常用语法,在Typecho中,同样使用内置函数<code>join()</code>方便地进行联合查询。</p>
<pre tabindex="0"><code>$query = $db->select()
->from('table.contents')
->join('table.comments', 'table.contents.cid = table.comments.cid',Typecho_Db::LEFT_JOIN)
->where('table.contents.type = ?', 'post');
echo $query;
//SELECT * FROM typechocontents LEFT JOIN typecho_comments ON typecho_contents.`cid` = typecho_comments.`cid` WHERE (typecho_contents.`type` = 'post' )
</code></pre><p><code>update</code>,更新表数据
Typecho中,使用<code>update()</code>函数来进行更新表操作。但注意,update操作,需要借助于query执行。</p>
<pre tabindex="0"><code>$update = $db->update('table.metas')->rows(array('name'=>'case_in_cn'))->where('mid=?',6);
echo $update;//UPDATE typecho_metas SET `name` = 'some_name' WHERE (`mid`='6' )
//执行后,返回收影响的行数。
$updateRows= $db->query($update);
</code></pre><p><code>insert</code>,插入数据
Typecho中,使用<code>insert()</code>函数来进行表插入操作。同样,<code>insert</code>操作需要借助于<code>query</code>函数。</p>
<pre tabindex="0"><code>$insert = $db->insert('table.metas')
->rows(array('mid' => '22', 'name' => 'hello world'));
//将构建好的sql执行, 如果你的主键id是自增型的还会返回insert id
$insertId = $db->query($insert);
</code></pre><p><code>delete</code>,删除数据
Typecho中使用<code>delete()</code>函数来删除数据表中的行。delete操作用于删除数据表中指定的行,同样需要借助<code>query</code>函数执行。</p>
<pre tabindex="0"><code>$delete = $db->delete('table.metas')
->where('mid = ?', 2);
//将构建好的sql执行, 会自动返回已经删除的记录数
$deletedRows = $db->query($delete);
</code></pre><p>数据库调试</p>
<h2 id="查看查询语句">查看查询语句</h2>
<p>在Typecho调试过程中,打印sql语句往往是很有帮助的。对于大于5.2版本的php,直接<code>echo $query</code>即可,对于小于5.2版本,则需要显式调用<code>__toString()</code>函数</p>
<pre tabindex="0"><code>$select = $db->select()->from('table.metas');
//如果版本大于php5.2
echo $select;
//如果小于php5.2
echo $select->__toString();
</code></pre>]]></content:encoded>
</item>
<item>
<title>Typecho主题前台实现删除文章功能</title>
<link>https://zynismus16.github.io/posts/13/</link>
<pubDate>Wed, 12 Oct 2022 10:49:00 +0000</pubDate>
<guid>https://zynismus16.github.io/posts/13/</guid>
<description>将下面的代码放到 post.php 中即可 &lt;?php Typecho_Widget::widget(&#39;Widget_Security&#39;)-&gt;to($security); ?&gt; &lt;a href=&#34;&lt;?php $security-&gt;index(&#39;/action/contents-post-edit?do=delete&amp;cid=&#39;.$this-&gt;cid); ?&gt;&#34;&gt;删除文章&lt;/a&gt; 点击按钮立即删除文章! 上面的代码虽然实现了功能,</description>
<content:encoded><![CDATA[<p>将下面的代码放到 <code>post.php</code> 中即可</p>
<pre tabindex="0"><code><?php Typecho_Widget::widget('Widget_Security')->to($security); ?>
<a href="<?php $security->index('/action/contents-post-edit?do=delete&cid='.$this->cid); ?>">删除文章</a>
</code></pre><p>点击按钮立即删除文章!</p>
<p>上面的代码虽然实现了功能,但却泯灭了人性!下面我们完善下人性部分,代码改为</p>
<pre tabindex="0"><code><?php Typecho_Widget::widget('Widget_Security')->to($security); ?>
<a href="<?php $security->index('/action/contents-post-edit?do=delete&cid='.$this->cid); ?>" onclick="javascript:return p_del()">删除文章</a>
<script>
function p_del() {
var msg = "您真的确定要删除吗?";
if (confirm(msg)==true){
return true;
}else{
return false;
}
}
</script>
</code></pre><p>这样弄好,点击按钮会弹出确认框,问其是否删除文章,用户确认后才会删除,比较符合操作习惯!</p>
<p><code>post.php </code>页面成功删除文章后,因为文章不存在了,所以页面自动跳到了 404 页面</p>
]]></content:encoded>
</item>
<item>
<title>author.php打造用户中心社区的参数调用和使用方法</title>
<link>https://zynismus16.github.io/posts/14/</link>
<pubDate>Wed, 14 Sep 2022 10:49:00 +0000</pubDate>
<guid>https://zynismus16.github.io/posts/14/</guid>
<description>typecho的author.php文件 是用户页面,但是官网给予的参考文档很少,很多人也是直接忽略掉了这个页面 我也是通过打印$this 获取了</description>
<content:encoded><![CDATA[<p>typecho的<code>author.php</code>文件</p>
<p>是用户页面,但是官网给予的参考文档很少,很多人也是直接忽略掉了这个页面</p>
<p>我也是通过打印<code>$this</code></p>
<p>获取了我们大概能调用,有用的东西</p>
<p>例如:获取当前用户的信息</p>
<pre tabindex="0"><code>$userInfo = (object)$this->pageRow;
print_r($userInfo->screenName);
</code></pre><p>具体可调用参数,可打印print_r($userInfo)来查看</p>
<p>输出该作者的文章,这里跟列表页面一样的</p>
<p>至于为什么?</p>
<p><code>archive.php</code> 通用(分类、搜索、标签、作者)页面文件</p>
<p>可以看结构,这四个页面能调用的东西都大致相同</p>
<pre tabindex="0"><code><?php if ($this->have()): ?>
<?php while($this->next()): ?>
内容
<?php endwhile; ?>
<?php else: ?>
<article class="article-post">
<div class="content-null">
<p>空空如也~</p>
</div>
</article>
<?php endif; ?>
</code></pre><p>输出这个人的评论</p>
<p>需要在 <code>functions.php</code> 添加代码</p>
<pre tabindex="0"><code>/*输出作者发表的评论*/
class Widget_Post_AuthorComment extends Widget_Abstract_Comments
{
var $getAuthorUid;
public function execute()
{
global $AuthorCommentId;//全局作者id
$select = $this->select()->limit($this->parameter->pageSize)
->where('table.comments.status = ?', 'approved')
->where('table.comments.authorId = ?',$this->parameter->authorId)//获取作者id
->where('table.comments.type = ?', 'comment')
->order('table.comments.coid', Typecho_Db::SORT_DESC);//根据coid排序
$this->db->fetchAll($select, array($this, 'push'));
}
}
</code></pre><p>然后再 <code>author.php</code> 可以调用</p>
<pre tabindex="0"><code><?php $this->widget('Widget_Post_AuthorComment@author','pageSize=8&authorId=用户id')->to($AuthorComment); ?>
<?php if ($AuthorComment->have()): ?>
<?php while($AuthorComment->next()): ?>
//循环处
//可调用参数
//$AuthorComment->permalink(); 该评论所属文章链接
//$AuthorComment->title();该评论所属文章标题
//$AuthorComment->content();该评论内容
//$AuthorComment->dateWord();该评论时间
<?php endwhile; ?>
<?php else: ?>
<div class="text-center"><div class="icon-svg svg-empty"></div><div class="text-muted">看起来这里没有任何东西。</div></div>
<?php endif; ?>
</code></pre>]]></content:encoded>
</item>
<item>
<title>Typecho常用函数</title>
<link>https://zynismus16.github.io/posts/16/</link>
<pubDate>Wed, 11 May 2022 10:53:00 +0000</pubDate>
<guid>https://zynismus16.github.io/posts/16/</guid>
<description>Typecho常用函数: 1、网站名称 &lt;?php $this-&gt;options-&gt;title() ?&gt; 2、网站网址 &lt;?php $this-&gt;options -&gt;siteUrl(); ?&gt; 3、站点说明 &lt;?php $this-&gt;options-&gt;description() ?&gt; 4、文章完整路径和标题 &lt;?php $this-&gt;archiveTitle(&#39; &amp;raquo; &#39;, &lt; span class=&#34;string&#34;&gt;&#39;&#39;, &#39; | &#39;); ?&gt;&lt;?php $this -&gt;options-&gt;title(); ?&gt; 5、模板地</description>
<content:encoded><![CDATA[<p>Typecho常用函数:</p>
<p>1、网站名称</p>
<pre tabindex="0"><code><?php $this->options->title() ?>
</code></pre><p>2、网站网址</p>
<pre tabindex="0"><code><?php $this->options ->siteUrl(); ?>
</code></pre><p>3、站点说明</p>
<pre tabindex="0"><code><?php $this->options->description() ?>
</code></pre><p>4、文章完整路径和标题</p>
<pre tabindex="0"><code><?php $this->archiveTitle(' &raquo; ', < span class="string">'', ' | '); ?><?php $this ->options->title(); ?>
</code></pre><p>5、模板地址</p>
<pre tabindex="0"><code><?php $this->options->themeUrl(); ?>
</code></pre><p>6、导入模板文件夹内的php文件</p>
<pre tabindex="0"><code><?php $this->need('.php'); ?>
</code></pre><p>7、输出文章或单页面的作者</p>
<pre tabindex="0"><code><?php $this->author(); ?>
</code></pre><p>8、输出作者gravatar头像</p>
<pre tabindex="0"><code>//此处是输出完整的 img 标签,40 是头像的宽高
< ?php $this->author->gravatar('40') ?>
</code></pre><p>9、作者文章列表链接</p>
<pre tabindex="0"><code>//Typecho支持多用户博客时,按作者获取该作者文章连接
<?php $this->author->permalink (); ?>
</code></pre><p>10、作者个人主页链接</p>
<pre tabindex="0"><code>//Typecho 支持多用户博客,此处输出作者个人主页地址
<?php $this->author->url(); ?>
</code></pre><p>11 、作者的邮箱地址</p>
<pre tabindex="0"><code><?php $this->author->mail(); ?>
</code></pre><p>12、上一篇与下一篇调用代码</p>
<pre tabindex="0"><code>// 上一篇
<?php $this->thePrev(); ?>
// 下一篇
<?php $this->theNext(); ?>
</code></pre><p>13、typecho中is语法是否为首页并输出相关内容</p>
<pre tabindex="0"><code><?php if ($this->is('index')): ?>
// 首页输出内容
<?php elseif ($this->is('category')): ?>
// 按照分类输出内容
<?php else: ?>
// 不是首页、分类输出内容
<?php endif; ?>
</code></pre><p>14、获取文章或页面评论数</p>
<pre tabindex="0"><code><?php $this->commentsNum('No Comments', '1 Comment' , '%d Comments'); ?>
</code></pre><p>15、截取文章指定字数(可用于首页显示文章摘要)</p>
<pre tabindex="0"><code>// 截取350字并以"..."结尾
<?php $this->excerpt(350, '...'); ?>
</code></pre><p>16、调用自定义字段</p>
<pre tabindex="0"><code><?php $this->fields->fieldName ?>
</code></pre><p>17、获取 RSS 地址</p>
<pre tabindex="0"><code><?php $this->options->feedUrl(); ?>
</code></pre><p>18、获取最新文章</p>
<pre tabindex="0"><code><?php $this->widget('Widget_Contents_Post_Recent', 'pageSize=8&type=category')->parse('<li><a href="{permalink}">{title}</a></li>'); ?>
</code></pre><p>19、获取分类名称,不带链接</p>
<pre tabindex="0"><code>// 不带连接的获取分类
<?php $this->category(',', false); ?>
// 获取所有分类
<?php $this->widget('Widget_Metas_Category_List')->listCategories('wrapClass=widget-list'); ?>
// 自定义分类
<?php $category = NULL; $this->widget('Widget_Metas_Category_List')->to($category); ?>
<?php while ($category->next()): ?>
<a class="list-group-item list-group-item-action" title="<?php $category->description(); ?>" href="<?php $category->permalink(); ?>"><?php $category->name(); ?></a>
<?php endwhile; ?>
</code></pre><p>20、获取文章分类列表</p>
<pre tabindex="0"><code><?php $this->widget('Widget_Metas_Category_List')->parse('<li><a href="{permalink}">{name}</a> ({count})</li>'); ?>
</code></pre><p>21、获取某分类下的POST文章</p>
<pre tabindex="0"><code>// 注意参数 mid=1
<?php $this->widget('Widget_Archive@index', 'pageSize=8&type=category', 'mid=1')
->parse('<li><a href="{permalink}" title="{title}">{title}</a></li>'); ?>
</code></pre><p>22、获取最新评论列表</p>
<pre tabindex="0"><code><?php $this->widget('Widget_Comments_Recent')->to($comments); ?>
<?php while($comments->next()): ?>
<li>
<a href="<?php $comments->permalink(); ?>">
<?php $comments->author(false); ?>
</a>: <?php $comments->excerpt(50, '...'); ?>
</li>
<?php endwhile; ?>
</code></pre><p>23、首页获取限制条数的最新文章(可用于置顶操作类)</p>
<pre tabindex="0"><code><?php while ($this->next()): ?>
<?php if ($this->sequence <= 3): ?>
//这里编写html逻辑
<?php endif; ?>
<?php endwhile; ?>
</code></pre><p>24、获取访客最新评论,只显示访客评论不显示博主自己发的评论</p>
<pre tabindex="0"><code><?php $this->widget('Widget_Comments_Recent','ignoreAuthor=true')->to($comments); ?>
<?php while($comments->next()): ?>
<li><a href="<?php $comments->permalink(); ?>"><?php $comments->author(false); ?></a>: <?php $comments->excerpt(50, '...'); ?></li>
<?php endwhile; ?>
</code></pre><p>25、文章按时间归档</p>
<pre tabindex="0"><code><?php
$this->widget('Widget_Contents_Post_Date', 'type=month&format=F Y')->parse('<li><a href="{permalink}">{date}</a></li>');
?>
</code></pre><p>26、获取标签云</p>
<pre tabindex="0"><code>// 输出标签云
<?php $this->widget('Widget_Metas_Tag_Cloud', 'sort=mid&ignoreZeroCount=1&desc=0&limit=30')->to($tags); ?>
<?php if($tags->have()): ?>
<ul class="tags-list">
<?php while ($tags->next()): ?>
<li><a href="<?php $tags->permalink(); ?>" rel="tag" class="size-<?php $tags->split(5, 10, 20, 30); ?>" title="<?php $tags->count(); ?> 个话题"><?php $tags->name(); ?></a></li>
<?php endwhile; ?>
<?php else: ?>