找回密码
立即注册
发新帖

0

收听

0

听众

263

主题
发表于 2023-5-23 16:51:04 | 查看: 671| 回复: 3 来自 广东深圳

可以将 SpeciaTheme 中 Heropress Pro 主题转换成 Typecho 主题,下面是具体的实现过程:

1.下载主题文件

在 SpeciaTheme 网站购买 Heropress Pro 主题后,从下载链接中下载主题文件压缩包。

2.创建 Typecho 主题目录

在 Typecho 根目录下的 usr/themes 目录中新建一个名为 heropress-pro 的文件夹,这将是新的主题目录。

3.解压主题文件

将下载的 Heropress Pro 主题文件压缩包解压缩,然后复制文件到 heropress-pro 目录中。应该会有以下文件和目录:

assets/
dist/
inc/
node_modules/
partials/
templates/
.babelrc
.eslintrc.js
gulpfile.js
package.json
webpack.config.js
4.修改主题样式表文件

修改主题样式表文件 assets/css/style.css,将其中所有图片、字体等路径都指向 Typecho 主题所在的地址。例如:

css
background-image: url('https://example.com/usr/themes/heropress-pro/assets/images/bg.jpg');
修改为:

css
background-image: url('/usr/themes/heropress-pro/assets/images/bg.jpg');
5.创建 Typecho 主题配置文件

在主题目录中创建一个名为 config.inc.php 的文件,并添加以下代码:

php
<?php
return array(
  'name' => 'Heropress Pro',
  'description' => 'Typecho adaptation of Heropress Pro theme',
  'version' => '1.0',
  'author' =>'Your Name',
);
6.配置主题布局文件

在 heropress-pro 目录中创建一个名为 index.php 的文件,并添加以下代码:

php
<?php while ($this->next()): ?>
<div class="post">
    <h2 class="post-title">
        <a href="<?php $this->permalink() ?>"><?php $this->title() ?></a>
    </h2>
    <div class="post-meta">
        <span><?php $this->date('F j, Y'); ?></span>
        <?php if($this->tags): ?>
        <span class="post-tags">
           <?php $this->tags(', ', true, 'none'); ?>
        </span>
        <?php endif; ?>
    </div>
    <div class="post-content">
        <?php $this->content('Read more »'); ?>
    </div>
</div>
<?php endwhile; ?>
7.调用 Typecho 函数

在 index.php 文件中,将需要显示文章的地方改为 Typecho 的函数。例如:

用 the_title() 替换 get_the_title()。

用 the_permalink() 替换 get_permalink()。

用 $this->date('F j, Y'); 替换 the_time('F j, Y')。

用 $this->content('Read more »'); 替换 the_content('Read more »')。

8.添加 Typecho 标记

在 index.php 文件中,添加 Typecho 的头部和页面循环,以及必要的 js 和 css 文件:

php
<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
<?php $this->need('header.php'); ?>
<div id="main" class="container">
    <div id="content" class="row">
        <?php while ($this->next()): ?>
        <div class="col-md-8 col-md-offset-2">
            <div class="post">
                <h2 class="post-title">
                    <a href="<?php $this->permalink() ?>"><?php $this->title() ?></a>
                </h2>
                <div class="post-meta">
                    <span><?php $this->date('F j, Y'); ?></span>
                    <?php if($this->tags): ?>
                    <span class="post-tags">
                       <?php $this->tags(', ', true, 'none'); ?>
                    </span>
                    <?php endif; ?>
                </div>
                <div class="post-content">
                    <?php $this->content('Read more »'); ?>
                </div>
            </div>
        </div>
        <?php endwhile; ?>
    </div>
</div>
<?php $this->need('footer.php'); ?>
9.调整其他可能需要的文件和代码

根据 Typecho 的特点,需要调整主题中的一些文件和代码。例如,需要将 header.php 中的 <title> 标签改为:

html
<title><?php $this->archiveTitle(array(
        'category'  =>  _t('%s'),
        'search'    =>  _t('Search "%s"'),
        'tag'       =>  _t('Tag "%s"'),
        'author'    =>  _t('Author "%s"'),
        'date'      =>  _t('Archive "%s"'),
        'default'   =>  ''
    ), '', ' - '); ?><?php $this->options->title(); ?>
</title>
10.使用主题

登录 Typecho 管理页面,选择外观,找到 Heropress Pro 主题,并选择该主题即可。

以上就是将 Heropress Pro 主题转换成 Typecho 主题的具体过程,希望对你有所帮助。

发表于 2023-5-23 16:51:51 来自 广东深圳
可以展示上面提到的index.php和相关的配置文件的完整代码吗?

当然,请见下文:

index.php

html
<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
<?php $this->need('header.php'); ?>
<div id="main" class="container">
  <div id="content" class="row">
    <?php while ($this->next()): ?>
      <div class="col-md-8 col-md-offset-2">
        <div class="post">
          <h2 class="post-title">
            <a href="<?php $this->permalink() ?>"><?php $this->title() ?></a>
          </h2>
          <div class="post-meta">
            <span><?php $this->date('F j, Y'); ?></span>
            <?php if($this->tags): ?>
            <span class="post-tags">
              <?php $this->tags(', ', true, 'none'); ?>
            </span>
            <?php endif; ?>
          </div>
          <div class="post-content">
            <?php $this->content('Read more &raquo;'); ?>
          </div>
        </div>
      </div>
    <?php endwhile; ?>
  </div>
</div>
<?php $this->need('footer.php'); ?>
config.inc.php

php
<?php
  return array(
    'name' => 'Heropress Pro',
    'description' => 'Typecho adaptation of Heropress Pro theme',
    'version' => '1.0',
    'author' =>'Your Name',
  );
?>
请注意,在使用上面的代码前,您需要确保您的 Typecho 主题文件夹中包含必要的 header.php 和 footer.php 文件,并且在样式表文件中,所有图片、字体等路径都指向 Typecho 主题所在的地址。

希望这些代码和之前提供的步骤能够帮助您完成 Heropress Pro 主题到 Typecho 主题的转换。如有任何疑问或需要进一步的帮助,请随时联系我。

回复 显示全部楼层 道具 举报

发表于 2023-5-23 16:52:31 来自 广东深圳
上面的提到的必要的 header.php 和 footer.php 文件可以展示完整的代码吗?


当然,请见下文:

header.php

html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title><?php $this->archiveTitle(array(
          'category'  =>  _t('%s'),
          'search'    =>  _t('Search "%s"'),
          'tag'       =>  _t('Tag "%s"'),
          'author'    =>  _t('Author "%s"'),
          'date'      =>  _t('Archive "%s"'),
          'default'   =>  ''
      ), '', ' - '); ?><?php $this->options->title(); ?>
  </title>
  <meta name="description" content="">
  <meta name="keywords" content="">
  <link rel="stylesheet" href="<?php $this->options->themeUrl('assets/css/style.css'); ?>">
</head>
<body>
  <header id="header" class="site-header">
    <div class="container">
      <h1 class="site-title">
        <a href="<?php $this->options->siteUrl(); ?>"><?php $this->options->title() ?></a>
      </h1>
      <nav class="site-nav">
        <ul>
          <?php $this->widget('Widget_Metas_Category_List')->parse('<li><a href="{permalink}">{name}</a></li>'); ?>
        </ul>
      </nav>
    </div>
  </header>
footer.php

html
<footer id="footer">
  <div class="container">
    <p>Powered by <a href="http://typecho.org/">Typecho</a> | Theme by Heropress Pro</p>
  </div>
</footer>

<script src="<?php $this->options->themeUrl('assets/js/index.js'); ?>"></script>

</body>
</html>
请注意,上述代码中包含的路径和文件名可能需要根据您的实际情况进行修改。希望这些代码可以帮助到您。如果您还有其他问题或需要进一步的帮助,请不要犹豫,随时联系我。


回复 显示全部楼层 道具 举报

发表于 2023-5-23 16:53:18 来自 广东深圳
导航菜单可以做成和speciatheme中heropress pro主题一样的吗?而且,可以实现页面滚动时菜单顶置呈现的效果。请展示出这个导航菜单实现的完整代码。

当然可以,请见下面的代码实现:

header.php

html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title><?php $this->archiveTitle(array(
          'category'  =>  _t('%s'),
          'search'    =>  _t('Search "%s"'),
          'tag'       =>  _t('Tag "%s"'),
          'author'    =>  _t('Author "%s"'),
          'date'      =>  _t('Archive "%s"'),
          'default'   =>  ''
      ), '', ' - '); ?><?php $this->options->title(); ?>
  </title>
  <meta name="description" content="">
  <meta name="keywords" content="">
  <link rel="stylesheet" href="<?php $this->options->themeUrl('assets/css/style.css'); ?>">
  <link rel="stylesheet" href="<?php $this->options->themeUrl('assets/css/navbar.css'); ?>">
  <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
  <script src="<?php $this->options->themeUrl('assets/js/navbar.js'); ?>"></script>
</head>
<body>
  <header id="header" class="site-header">
    <nav id="navbar" class="site-nav">
      <div class="container">
        <div class="navbar-brand">
          <a href="<?php $this->options->siteUrl(); ?>"><?php $this->options->title() ?></a>
        </div>
        <button type="button" class="navbar-toggle">
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <ul class="navbar-menu">
          <?php $this->widget('Widget_Metas_Category_List')->parse('<li><a href="{permalink}">{name}</a></li>'); ?>
        </ul>
      </div>
    </nav>
  </header>
navbar.css

css
body {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-size: 16px;
  line-height: 1.5;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", sans-serif;
  background-color: #fff;
  color: #333;
  display: flex;
  flex-direction: column;
}

/* Navbar */
.site-nav {
  background-color: #fff;
  border-bottom: 1px solid #eee;
  height: 70px;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
}

.navbar-brand a {
  color: #333;
  font-weight: bold;
  text-decoration: none;
  display: block;
  height: 70px;
  line-height: 70px;
  padding: 0 20px;
  font-size: 18px;
  transition: all 0.3s ease-out;
}

.navbar-brand a:hover {
  color: #f00;
}

.navbar-menu {
  display: flex;
  margin: 0;
  list-style: none;
  height: 70px;
  margin-left: auto;
}

.navbar-menu li {
  height: 70px;
  line-height: 70px;
}

.navbar-menu li a {
  color: #333;
  text-decoration: none;
  padding: 0 20px;
  display: block;
  height: 70px;
  transition: all 0.3s ease-out;
}

.navbar-menu li a:hover,
.navbar-menu li.active a {
  color: #f00;
}

/* Navbar toggle button */
.navbar-toggle {
  border: none;
  background-color: transparent;
  cursor: pointer;
  position: absolute;
  right: 20px;
  top: 15px;
  z-index: 101;
  display: none;
}

.navbar-toggle span {
  display: block;
  width: 24px;
  height: 3px;
  margin-bottom: 5px;
  background-color: #333;
  border-radius: 2px;
}

@media (max-width: 768px) {
  .navbar-toggle {
    display: block;
  }
  
  .navbar-menu {
    display: none;
    width: 100%;
    flex-direction: column;
    margin-top: 70px;
    background-color: #fff;
    position: absolute;
    top: 0;
    left: 0;
    z-index: 100;
  }

  .navbar-menu li {
    border-bottom: 1px solid #eee;
  }
}
navbar.js

js
$(document).ready(function() {
  $('.navbar-toggle').click(function() {
    $('.navbar-menu').slideToggle();
  });

  $(window).scroll(function() {
    if ($(this).scrollTop() > 70) {
      $('#navbar').addClass('fixed');
    } else {
      $('#navbar').removeClass('fixed');
    }
  });
});
上述代码实现了一个类似于 Heropress Pro 主题中导航菜单的效果,且当页面滚动时,导航菜单顶置呈现。需要注意的是,代码中的路径和文件名可能需要根据您的实际情况进行修改。希望这些代码能够帮助到您。

回复 显示全部楼层 道具 举报

您需要登录后才可以回帖 登录 | 立即注册

QQ|Archiver|手机版|小黑屋|通达产控投资 ( 粤ICP备2023021749号-1|粤公网安备 44030402006137号 )

GMT+8, 2024-11-1 14:31 , Processed in 0.021078 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表