|
|
/ F, S3 e' h+ X/ O) I4 M可以将 SpeciaTheme 中 Heropress Pro 主题转换成 Typecho 主题,下面是具体的实现过程:
) o; s( y3 f8 N0 j: ~, E1 T
; y, c1 r9 l8 {3 z+ s1 t1.下载主题文件
{! J) w" @# X! V: D+ n( t$ _
在 SpeciaTheme 网站购买 Heropress Pro 主题后,从下载链接中下载主题文件压缩包。) e( S* I( ?$ O J; C
3 W' g/ t2 |+ a& Z k2.创建 Typecho 主题目录- Y) w2 N$ @2 j0 v3 N
% M; ~/ Z: w: |7 n& d: Z在 Typecho 根目录下的 usr/themes 目录中新建一个名为 heropress-pro 的文件夹,这将是新的主题目录。
$ P. D: x! F0 w2 S4 Q5 a3 H. ]) f, ?3 N* I2 O
3.解压主题文件. P4 {: d" ~3 Z, V) B! H
x2 m( x1 A6 `$ i) i% G" ^! @1 P6 O将下载的 Heropress Pro 主题文件压缩包解压缩,然后复制文件到 heropress-pro 目录中。应该会有以下文件和目录:! h- U, P0 S$ p
# J9 B( v# n U8 r; m
assets/
[. w/ R _6 }( x4 Jdist/% n: y# ]) y2 f% X" S# a
inc/' \* m, ^; { U* p
node_modules/$ h$ a$ c) U! d& x+ U4 I ~2 K
partials/
- U' G: ~0 t: F% J" b; a) B2 w* B; htemplates/: I0 B2 I [- v J
.babelrc
! E% T" O! O; v P4 P.eslintrc.js
6 y7 V- L- {$ ]% lgulpfile.js
5 a- O2 ]% ?8 q/ G1 Opackage.json
, Q6 w' R! m9 \/ Kwebpack.config.js& p* R1 P" |" L; \- R- q$ Y! L
4.修改主题样式表文件6 G' d: ]8 y1 p8 w/ m" e4 t
7 a$ p( w4 K9 p1 Z) u3 `修改主题样式表文件 assets/css/style.css,将其中所有图片、字体等路径都指向 Typecho 主题所在的地址。例如:. ?2 O1 p2 \. N/ _# R- Z
- l6 ^# \4 `) zcss
r5 z8 x* }5 ~0 S: ?0 E, C; Obackground-image: url('https://example.com/usr/themes/heropress-pro/assets/images/bg.jpg');
$ L! Z2 o) c0 b6 B9 A修改为:
: @' r6 {! b7 y1 i* T& J1 W, n$ d$ H+ T2 K! n
css
4 u7 \0 _3 W* V S& x* cbackground-image: url('/usr/themes/heropress-pro/assets/images/bg.jpg');
! _1 [+ S9 y4 V( J5.创建 Typecho 主题配置文件5 _$ G, y( g4 B+ x3 U' f
5 c% u/ D' r7 O) P在主题目录中创建一个名为 config.inc.php 的文件,并添加以下代码:/ G# z- H( \1 A+ T; P2 A
) O1 n# ~2 `, @# c. G" K5 R
php
, l2 h1 B/ F" Q<?php4 O+ g" A6 K1 t! f
return array(& v0 Q; g8 _8 Y6 z2 e; X
'name' => 'Heropress Pro',
g: T7 x$ S& ^& T0 j3 h 'description' => 'Typecho adaptation of Heropress Pro theme',
6 W' j2 W; u; a% \0 d 'version' => '1.0',0 u# v/ d6 ~! S' x: \
'author' =>'Your Name',
1 r x: ^! I6 U* U);# d( A2 ^4 J9 U+ m
6.配置主题布局文件
) v! |3 [1 ~4 c0 R5 H$ D2 x6 Q; O; a7 O
在 heropress-pro 目录中创建一个名为 index.php 的文件,并添加以下代码:
: D. E% q. N) _6 \6 m* i. G: B' H$ a( o2 `# S( C7 ]) c* C. D
php
2 ~( u. p0 U5 k q<?php while ($this->next()): ?>* N$ `" E9 f# c3 n3 E1 m3 S7 n' Y
<div class="post">
% X+ z4 _5 z: k7 i5 b% i v9 z# ? <h2 class="post-title">
/ \8 w- [8 _' E <a href="<?php $this->permalink() ?>"><?php $this->title() ?></a>' A1 T2 B) r& J7 J6 B
</h2>
1 R, s5 N; q! \, i8 i <div class="post-meta">
) i2 f5 A7 F4 ?8 H1 A" E% h2 K \ <span><?php $this->date('F j, Y'); ?></span>
5 K6 {6 O( O1 k' x& I6 i# t <?php if($this->tags): ?>
4 V% w9 }) W5 r <span class="post-tags"> j% n L( S0 J( t7 }' P) g3 v
<?php $this->tags(', ', true, 'none'); ?># H$ K, _* {2 K8 p% X N
</span>4 T* o( R! E/ x, f
<?php endif; ?>& V( h0 o4 F$ |1 ~2 v/ d, p. O
</div>
# S9 ?. Q3 N6 `2 m <div class="post-content">6 g' j. @$ ~: X& G$ y! v
<?php $this->content('Read more »'); ?>
- v; J; q# S6 g* j6 X+ O# Q </div>
! W9 ]- E" W9 u! V1 W7 |</div>. b# t& u* e8 e, k: H* q
<?php endwhile; ?>
, m! a8 ]7 ` ]" o" ]& G7.调用 Typecho 函数6 {# c4 k, i% u, L: p) W
" a6 d* g3 |& V6 ~' i: H
在 index.php 文件中,将需要显示文章的地方改为 Typecho 的函数。例如:. ]3 g; B" U5 S; _ N. d
% @% n6 h% H! I( a" D+ o8 B
用 the_title() 替换 get_the_title()。
/ l% z8 {% F6 r9 D3 d
& n8 \$ Q+ t5 E t( g用 the_permalink() 替换 get_permalink()。
2 y7 K' E" ?4 Z% \: s- Q* Y0 t5 c/ q' Y9 A9 Y" K
用 $this->date('F j, Y'); 替换 the_time('F j, Y')。
- ~' K v, d7 f2 r( W' e7 `
9 F7 l/ u! e% L# b7 d. s用 $this->content('Read more »'); 替换 the_content('Read more »')。
5 H7 P @, b& V% Z
5 [; i5 y+ W% y7 H8.添加 Typecho 标记
0 F7 A3 X* C2 s ?1 g6 l" l( W5 P" z. V( ?
在 index.php 文件中,添加 Typecho 的头部和页面循环,以及必要的 js 和 css 文件:2 D/ A1 c" H* Z2 T6 C. d
& r- q' ^% i# D; A% f T1 X2 B
php
" h( u& f1 L5 T% \7 R<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>( h' x2 U! k( J7 s( V4 u9 }
<?php $this->need('header.php'); ?>) h6 V" r4 a: l3 u6 R, v& ?$ S! \! x
<div id="main" class="container">
# d) [7 L$ s* U9 d' u b' J <div id="content" class="row"> V2 Z9 e {# [) B3 `
<?php while ($this->next()): ?>3 n: U( V; T6 X$ S
<div class="col-md-8 col-md-offset-2">! z, v& P. X( R1 I' r* `2 }; Q
<div class="post">
2 f7 _- }% |2 B9 P; ? <h2 class="post-title">- {* h; l8 \: s6 f' J, s. o
<a href="<?php $this->permalink() ?>"><?php $this->title() ?></a>
^! ?" @- S& N </h2>
# F7 D/ B+ A- C Z* \ <div class="post-meta">4 [. h% K3 v0 d0 u$ h6 V. @" e
<span><?php $this->date('F j, Y'); ?></span>
2 b) R* T% q J$ h" a" |( e <?php if($this->tags): ?>" b( X9 z M( G" X: J
<span class="post-tags">$ @* i* w! T' x8 B7 M% @, _' f
<?php $this->tags(', ', true, 'none'); ?>
/ r/ s0 Z- f. y9 K; }' X </span>( q1 j; [ M l; X8 `3 n* q
<?php endif; ?>
0 Z9 M' P# C* T' m1 Z0 y: s4 f </div>
0 J, V; l% i. ] <div class="post-content">$ g5 v2 x* W; q% O0 ?1 V# A6 @7 T
<?php $this->content('Read more »'); ?>
" g# E- |, d4 x9 b7 R& m </div>/ b" B, s$ f" T
</div>
7 i- Y4 U8 D) E9 A: M4 D v8 B </div>
" m: y6 Y) r9 F <?php endwhile; ?>
* L3 p' O% n; L* ]2 z </div>0 y" E3 z/ x- ~6 e4 F' D
</div>
; m' d6 S6 P+ P/ P9 i<?php $this->need('footer.php'); ?>
9 h ~4 G( T% x' v5 p9.调整其他可能需要的文件和代码
3 R0 r# `4 `' O7 u' \# D* f8 q( |! v
根据 Typecho 的特点,需要调整主题中的一些文件和代码。例如,需要将 header.php 中的 <title> 标签改为:7 o8 u S* g- z; C) Q$ I
) o$ n {- @8 _% @7 q. c9 ]
html
" G+ D$ L- a( v7 i5 t2 B4 g<title><?php $this->archiveTitle(array(
2 [# J! y+ l% E/ ] 'category' => _t('%s'),2 ~$ Q5 b% K! c/ L( I
'search' => _t('Search "%s"'),
1 H" s3 H" N0 q$ y+ g$ w 'tag' => _t('Tag "%s"'),
3 r# C! a% w8 I 'author' => _t('Author "%s"'),
( d4 s5 U. h# \0 I1 ]0 d/ o8 L" ]) y h 'date' => _t('Archive "%s"')," H- [) C5 @: A( G: M% _
'default' => ''
1 T' @6 K( K% j* J2 }4 ^ ), '', ' - '); ?><?php $this->options->title(); ?>: n! l' n) ~, O8 m+ \
</title>
* ]- n) F$ [+ A& m0 D" j H5 D10.使用主题
7 [ G; h8 n8 \
! ]" N1 @0 Q+ o7 Y8 B登录 Typecho 管理页面,选择外观,找到 Heropress Pro 主题,并选择该主题即可。
0 j5 o* y2 x9 h# V! W/ ]7 j: l! b! s! m
以上就是将 Heropress Pro 主题转换成 Typecho 主题的具体过程,希望对你有所帮助。- N1 P, Z0 \" D
/ `9 m( Y, `. ^' m+ A6 m2 I |
|