Tyecho主题模板开发的问题和解决思路记录

最近在自己制作Typecho的模板,也就是本站的主题模板。写下这篇记录文章,记录在开发过程中遇到的问题和解决思路。

由于本站域名没有备案(目前已经备案),在这里我使用的是反代(洛杉矶反代到国内)的方式。
在反代机器的Nginx中加入规则(自行修改源机器和端口号):

 location ~* \.(php|jsp|cgi|asp|aspx)$ { proxy_pass http://源机器:端口号; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; } location / { proxy_pass http://源机器:端口号; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; add_header X-Cache $upstream_cache_status;  proxy_ignore_headers Set-Cookie Cache-Control expires; add_header Cache-Control no-cache;  }  

然后在源机器中添加站点并监听对应端口号,将域名解析至反代机器上就可以了。

反代过程中可能会出现的问题:静态资源加载缓慢。

所以我使用的方式是把站点中的静态资源全部cdn化。

首先修改Typecho的文件主目录/config.inc.php,加入如下代码:

 define('__TYPECHO_CDN_DIR__', '静态资源CDN的域名'); 

然后修改var/Widget/Options.php,大概在第160行:

protected function ___themeUrl() { return defined('__TYPECHO_THEME_URL__') ? __TYPECHO_THEME_URL__ : Typecho_Common::url(__TYPECHO_THEME_DIR__ . '/' . $this->theme, $this->siteUrl); }  protected function ___pluginUrl() { return defined('__TYPECHO_PLUGIN_URL__') ? __TYPECHO_PLUGIN_URL__ : Typecho_Common::url(__TYPECHO_PLUGIN_DIR__, $this->siteUrl); } 

替换成如下代码:

protected function ___themeUrl() { return defined('__TYPECHO_THEME_URL__') ? __TYPECHO_THEME_URL__ : Typecho_Common::url(__TYPECHO_THEME_DIR__ . '/' . $this->theme,__TYPECHO_CDN_DIR__); }  protected function ___pluginUrl() { return defined('__TYPECHO_PLUGIN_URL__') ? __TYPECHO_PLUGIN_URL__ : Typecho_Common::url(__TYPECHO_PLUGIN_DIR__,__TYPECHO_CDN_DIR__); } 

然后把所有的静态资源(模板和插件的都要)上传到CDN服务器上就可以了。

首先在反代服务器上配置站点的https证书(使用的是Let’s Encrypt免费证书)。

然后要修改后台设置->基本里面的网站链接。

最后修改Typecho的文件主目录/config.inc.php,加入如下代码:

 define('__TYPECHO_SECURE__',true); 

后台使用了EditorMD编辑器,但是前台文章却不显示,问题在于在编写模板header.php的时候,应该加上代码:

<!-- 通过自有函数输出HTML头部信息 --> <?php $this->header(); ?> 

模板footer.php加入:

<?php $this->footer(); ?> <?php $this->options->script(); ?> 

才能在前台加载相关插件。其他插件在前台无效的问题也可以参考本方法来解决。

在functions.php文件中加入如下代码:

function Postviews($archive) { $db = Typecho_Db::get(); $cid = $archive->cid; if (!array_key_exists('views', $db->fetchRow($db->select()->from('table.contents')))) { $db->query('ALTER TABLE `'.$db->getPrefix().'contents` ADD `views` INT(10) DEFAULT 0;'); } $exist = $db->fetchRow($db->select('views')->from('table.contents')->where('cid = ?', $cid))['views']; if ($archive->is('single')) { $db->query($db->update('table.contents') ->rows(array('views' => (int)$exist+1)) ->where('cid = ?', $cid)); $exist = (int)$exist+1; } echo $exist == 0 ? '0' :$exist; } 

然后在需要调用阅读统计的地方写入代码:

<?php Postviews($this); ?> 

原文链接:https://blog.csdn.net/jinhuang888/article/details/125120270?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165918471416782388040845%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165918471416782388040845&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-9-125120270-null-null.nonecase&utm_term=%E5%85%8D%E5%A4%87%E6%A1%88cdn

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/534

(0)
上一篇 2022年7月30日 20:41
下一篇 2022年7月30日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml