|
|
/ U5 Z& r& u' w) N可以将 SpeciaTheme 中 Heropress Pro 主题转换成 Typecho 主题,下面是具体的实现过程:
) p: F" C$ M# o) z3 M7 V/ G& M# w9 s6 g( Z2 T4 j
1.下载主题文件
- _; }2 ], @" `/ W! g) v! S5 s7 k3 B. U [" L; f1 W
在 SpeciaTheme 网站购买 Heropress Pro 主题后,从下载链接中下载主题文件压缩包。
* r6 M/ K; E4 ?
. ]3 z& f9 k2 ?# S ?" ?2.创建 Typecho 主题目录
; _0 ^& m: L# @2 T" ~! I
: c) k! v6 Y0 W# e" V在 Typecho 根目录下的 usr/themes 目录中新建一个名为 heropress-pro 的文件夹,这将是新的主题目录。
; T% X+ s3 Q( T5 _- D5 b) m% R+ N
! Q0 l; ^- }$ q$ z; A! J" Y3.解压主题文件
% q: C' B, v. m) z' W8 X6 l# @6 ^4 K4 e, j
将下载的 Heropress Pro 主题文件压缩包解压缩,然后复制文件到 heropress-pro 目录中。应该会有以下文件和目录: h4 ? n; H) ]' n% I8 y" I
7 v5 Q. ?4 F7 R( {; A/ b3 W
assets/
6 @) d) r4 Y2 p# I, ~dist/
9 f& Z7 ]7 a* T/ |inc/& \2 P5 g# o- h; C
node_modules/3 E$ K, H3 N& l* }7 `+ g/ g9 A2 v
partials/' W5 ~8 |, A9 L2 A( U
templates/' l0 Z, R( D1 B' e& l
.babelrc
3 e( a+ y4 q; }% n.eslintrc.js
* E% J( v$ m0 K4 |& G8 rgulpfile.js% O- l4 [5 Y1 S9 `) _6 t8 j
package.json! b2 G$ r2 j4 z
webpack.config.js
8 \7 w x. o0 x( g! E4.修改主题样式表文件( v3 D) T7 [9 R# {$ h% v, N: N
; J. `2 z( j' z, |# d7 W3 z/ j修改主题样式表文件 assets/css/style.css,将其中所有图片、字体等路径都指向 Typecho 主题所在的地址。例如:3 i* s5 m( L. ^* D: t
! l5 K5 d1 m7 l0 {# r* c% L
css' G2 ]$ i8 c% v- ?! l
background-image: url('https://example.com/usr/themes/heropress-pro/assets/images/bg.jpg');6 |7 U- w8 L, r# U, S2 z) ^
修改为:) j Z4 s# {% r$ ~9 N5 z
* L4 t: K2 H/ {" R, i. P) _
css
2 p2 L9 E q# a$ Y; D0 \background-image: url('/usr/themes/heropress-pro/assets/images/bg.jpg');
5 [4 c1 Q% x, U5.创建 Typecho 主题配置文件
, g0 I6 r, P; M" `5 W; I" p2 s8 R& A4 o5 ^7 D( G
在主题目录中创建一个名为 config.inc.php 的文件,并添加以下代码:8 f1 N& [( Q4 E: y) h& ~( g B
' i8 S @0 q! a+ Y. ?8 ]' q0 V$ ~4 g
php
" j% u7 C4 k v/ L, U<?php* E, \' U/ u0 [2 s$ h
return array(: I1 _! ]; c5 `; o1 v* i2 z
'name' => 'Heropress Pro',
9 R9 K# e7 K# p5 x3 Z 'description' => 'Typecho adaptation of Heropress Pro theme',
+ L; `) m+ d, u9 `7 I5 h! I( A6 j 'version' => '1.0',
5 A: o# x5 l/ f! v; ^ 'author' =>'Your Name',
+ V! [- L4 ~: X# b! @( \);
& g4 K5 u' _' y" v: g8 P4 X% I, b* ^, Z6.配置主题布局文件6 p/ V8 c, D) D) ]; m
( D. @0 n" ]' m- A0 ~9 h5 ~在 heropress-pro 目录中创建一个名为 index.php 的文件,并添加以下代码:
3 I7 T* P% o4 O
& P) `$ v/ u: W, R P. H+ F/ Uphp
, x3 ?- S" c6 o- \* S<?php while ($this->next()): ?>6 L8 \) |1 h- c6 {5 N
<div class="post">
, k g* X$ |+ r% l5 z3 @4 {1 J <h2 class="post-title"> g) H L# W8 ^ @# e! A/ O1 B
<a href="<?php $this->permalink() ?>"><?php $this->title() ?></a>
5 ~/ m, J) v$ b3 u9 p </h2>
& i( `8 S8 I0 n4 Y <div class="post-meta">- Y& T; C6 z4 }
<span><?php $this->date('F j, Y'); ?></span>9 J( k7 Z' J r( I0 T+ d
<?php if($this->tags): ?>
8 g: w0 f1 H4 _; J( s* [' D <span class="post-tags">
* y* U" L6 c) ?" w7 q! J/ y. W <?php $this->tags(', ', true, 'none'); ?>
( R: f ]- D" A4 l. D( T; K </span>
7 [ \% p7 t% u; G <?php endif; ?>6 f/ t" }; Y7 C4 s) W9 h6 t# g& p1 q
</div>
, g H' Q3 v* t: b <div class="post-content">
- r1 Y+ t+ q* G. v' R; [& l <?php $this->content('Read more »'); ?>0 Q- H4 {, c' i0 Y( R2 I) @
</div>) j( [+ G0 v" d2 _8 O, e
</div>
- f# H# w7 W. E1 L8 i$ t4 n<?php endwhile; ?>
8 I7 R6 y; x! @+ Y, X7 g: y0 |2 a1 q7.调用 Typecho 函数0 }& E* c/ T1 I* [- K( y
4 N& i5 |! c' N9 H( K9 W4 x, G
在 index.php 文件中,将需要显示文章的地方改为 Typecho 的函数。例如:
5 d3 ]) @4 G* i/ r; ~# c0 L% d
8 ], K- \; O4 W0 l- a* a用 the_title() 替换 get_the_title()。
0 g5 e) n& t! y- s. o* f K- @- @0 @7 C
用 the_permalink() 替换 get_permalink()。
6 P* R V+ m4 U/ k2 V" X+ N* @8 q3 i' D6 }$ t8 w1 t/ d
用 $this->date('F j, Y'); 替换 the_time('F j, Y')。# h i& @) U1 p
( z4 V4 a. t* y. O$ u8 q' D
用 $this->content('Read more »'); 替换 the_content('Read more »')。, N4 }' b# K) u
- \" c$ {4 k+ j; a" y8.添加 Typecho 标记
$ @7 m; N6 g I! ]6 ?5 Y' L8 t
6 T9 e; K4 J3 P: L" G4 o在 index.php 文件中,添加 Typecho 的头部和页面循环,以及必要的 js 和 css 文件:
1 c5 l+ S1 {; M( ~) n! ^2 Y: W2 ]( ]* c
php
! }$ p1 B2 v! [2 F6 P# g' q<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
0 S" b, S# a' ]& x( Y) z2 T, `<?php $this->need('header.php'); ?>) ~1 }' x' x6 b. H6 O- H! j8 ~
<div id="main" class="container">
( M% x$ m/ X |: y <div id="content" class="row">/ @- \ E" t0 O, [9 j9 G
<?php while ($this->next()): ?>
; T, e: Z1 }# ^) Y3 h4 `5 ^; X <div class="col-md-8 col-md-offset-2">
- \5 t, w; f! }" Z, t <div class="post">
2 D5 m/ x8 U, }3 m( Y <h2 class="post-title">
& ~0 r) ?, i) s& ` <a href="<?php $this->permalink() ?>"><?php $this->title() ?></a>
1 f; e1 P$ j! p' V& ^$ ^ </h2>( x$ f: m* F8 p3 S2 D
<div class="post-meta">% @2 E! h8 x, a6 `+ X. ]! s
<span><?php $this->date('F j, Y'); ?></span>. v" f; s8 f% g
<?php if($this->tags): ?>
- C' n0 ^$ J! }9 Q9 t- D% O. P <span class="post-tags">
; Z7 j8 s h0 f8 `8 @ <?php $this->tags(', ', true, 'none'); ?>
$ ]& I& n4 ~0 `* d0 y; _: { </span>
" ?0 x3 A |; z- Q' J) Q& B+ E <?php endif; ?>
" G6 B* r$ i1 a( [ </div>6 f3 x) y6 F7 h3 M6 w3 r
<div class="post-content">0 V) C/ Q5 \! n
<?php $this->content('Read more »'); ?>
; ?) |0 P# r9 Q1 X) |( D& B7 t- P </div>
! P2 C4 q$ Y3 F; C3 K+ X </div>
& P) _5 Y) ?+ M+ O0 L: g </div>: {; `7 M: N R2 \/ O& x5 Z
<?php endwhile; ?>
7 Q, \3 u) J; d! i9 x$ n: N/ ^ </div>
4 \8 }; D* x( B9 F* Y3 w3 D% V</div>
. U( w4 n# K+ M, B! h- \+ U) f<?php $this->need('footer.php'); ?>
0 U9 t6 ]# `9 d9 Z1 p0 y$ l9.调整其他可能需要的文件和代码7 J% ?" V1 \9 {$ S, Q1 b `
$ y0 O2 J! _. {- i8 [根据 Typecho 的特点,需要调整主题中的一些文件和代码。例如,需要将 header.php 中的 <title> 标签改为:
) k/ n9 }" a1 v a U+ u. B& }' W" ~6 S% z$ H
html
5 _2 s) Y6 k, \/ N2 l' l<title><?php $this->archiveTitle(array(' N0 R4 R9 o) R9 \# ?6 ~! P* N
'category' => _t('%s'),+ w" X- J- `6 F4 X- T5 q. H
'search' => _t('Search "%s"'),% A2 M" i) b& S, |: W2 R. s! I
'tag' => _t('Tag "%s"'),8 `* N( Y; }4 F6 H( m8 k! k
'author' => _t('Author "%s"'),
- L* W. }* A, _) I4 y& n 'date' => _t('Archive "%s"'),
2 D: C* ]5 o9 i0 ] 'default' => ''8 o6 e/ H0 s4 U& c
), '', ' - '); ?><?php $this->options->title(); ?>
7 v) O( u* J) W V" o h3 n+ h</title>$ G; C, ~9 C. l5 c _9 w4 R
10.使用主题
8 P8 F z- C6 [8 A# D- H2 B& m' N F" W& E
登录 Typecho 管理页面,选择外观,找到 Heropress Pro 主题,并选择该主题即可。( q; }8 A, y+ }6 ~
* w+ U' ~2 s _; z( Z T以上就是将 Heropress Pro 主题转换成 Typecho 主题的具体过程,希望对你有所帮助。
3 g( J2 r F: P5 m! j: T! i+ k' U6 l0 V( L: I1 C" [* J
|
|