最近在自己制作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; }
然后在源机器中添加站点并监听对应端口号,将域名解析至反代机器上就可以了。
反代过程中可能会出现的问题:静态资源加载缓慢。
首先修改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