标签 typecho SEO 下的文章

typecho百度主动推送插件,SEO优化

插件设计代码:

<?php 
/**
 * 百度站长工具 链接提交
 * 发布、更新文章后,自动提交百度链接更新 
 * @package BaiduLinkSubmit 
 * @version 1.0.0
 */
class BaiduLinkSubmit implements Typecho_Plugin_Interface {
    /* 激活插件方法 */
    public static function activate(){
        Typecho_Plugin::factory('Widget_Contents_Post_Edit')->finishPublish = array(__CLASS__, 'render');
        Typecho_Plugin::factory('Widget_Contents_Page_Edit')->finishPublish = array(__CLASS__, 'render');
        return _t('请设置 <b>站点域名</b> 和 <b>密钥</b>');
    }
     
    /* 禁用插件方法 */
    public static function deactivate(){}
     
    /* 插件配置方法 */
    public static function config(Typecho_Widget_Helper_Form $form){
        preg_match("/^(http(s)?:\/\/)?([^\/]+)/i", Helper::options()->siteUrl, $matches);
        $domain = $matches[2] ? $matches[2] : '';
        $site = new Typecho_Widget_Helper_Form_Element_Text('site', NULL, $domain, _t('站点域名'), _t('站长工具中添加的域名'));
        $form->addInput($site->addRule('required', _t('请填写站点域名')));
        $token = new Typecho_Widget_Helper_Form_Element_Text('token', NULL, '', _t('准入密钥'), _t('更新密钥后,请同步修改此处密钥,否则身份校验不通过将导致数据发送失败。'));
        $form->addInput($token->addRule('required', _t('请填写准入密钥')));
    }
     
    /* 个人用户的配置方法 */
    public static function personalConfig(Typecho_Widget_Helper_Form $form){}
     
    /* 插件实现方法 */
    public static function render($contents, $widget){
        $options = Helper::options();
        $site = $options->plugin(__CLASS__)->site;
        $token = $options->plugin(__CLASS__)->token;
        
        $urls = array( $widget->permalink );
        $api = sprintf('http://data.zz.baidu.com/urls?site=%s&token=%s', $site, $token);
        $client = Typecho_Http_Client::get();
        if ($client) {
            $client->setData( implode(PHP_EOL, $urls ) )
                ->setHeader('Content-Type', 'text/plain')
                ->setTimeout(30)
                ->send($api);
            $status = $client->getResponseStatus();
            $rs = $client->getResponseBody();
            return true;
        }
        return false;
    }   
}

typecho自动内链,实现文章内容替换为内链,有助于SEO优化

其实typecho在发布文章的时候,是可以去添加外链的,但是个人觉得麻烦,

而且如果文章数量多的话,维护起来更加麻烦了,添加内链可以引导蜘蛛爬行走向,对网站:首页-栏目-文章的分层权重是很有帮助的

其实也可以借助插件实现这个功能,插件地址:http://www.yzmb.me/archives/net/keywords-for-typecho

如果不喜欢插件,可以按教材实现到主题里面

$Keywordspress = new Typecho_Widget_Helper_Form_Element_Textarea('Keywordspress', NULL, NULL, _t('关键字内链'), _t('每行1组以"关键词<strong style="color:#467B96;">|</strong>(半角竖线)链接"形式填写)'));
    $form->addInput($Keywordspress);

/**
 * 文章内容替换为内链
 */
function get_glo_keywords($content)
{

   
    $settings = Helper::options()->Keywordspress;    
    $keywords_list = array();
    

    if (strpos($settings,'|')) {
            //解析关键词数组
            $kwsets = array_filter(preg_split("/(\r|\n|\r\n)/",$settings));
            foreach ($kwsets as $kwset) {
                $keywords_list[] = explode('|',$kwset);
            }
        }
    ksort($keywords_list);  //对关键词排序,短词排在前面
    
    if($keywords_list){
        $readnum = 0;
        $i = 0;
        $j = 1;
        foreach ($keywords_list as $key => $val) {
            
            $title = $val[$i];
            $len = strlen($title);
            $str = '<a href="'.$val[$j].'" target="_blank">@'.$title.'</a>';
            $str_index = mb_strpos($content, $title);            
            $content = preg_replace('/(?!<[^>]*)'.$title.'(?![^<]*>)/',$str,$content,1); 
            
            if(is_numeric($str_index)){
                $readnum += 1;
                //$content = substr_replace($content,$str,$str_index,$len);
                //$content = $this->str_replace_limit($title,$str,$content,$this->limit);
            }
            if($readnum == 8) {
            return $content; //匹配到8个关键词就退出
            $i += 2;
            $j += 2;
            }
        }
    }
    return $content;

}

主要是涉及到3个问题,获取到主题里面的字符串,解析到数值里面,然后循环赋值到正则替换文章内容,就可以实现了

typecho 生成sitemap地图的方法

typecho 暂时没有自动生成sitemap地图的功能
但是我们可以通过插件或手动修改来生成typecho的sitemap地图

众所周知的,站点地图 Sitemap 是网站 SEO 的一种重要的方式,站点地图的存在,可方便的告知搜索引擎网站有哪些可供抓取的网页,有利于搜索引擎蜘蛛对网站信息的结构化收录。 Typecho 这个简洁的博客程序,默认并没有提供 sitemap,不过我们可以通过插件或者不使用插件可以生成 sitemap。

Typecho Sitemap 插件
网上 Typecho 的 Sitemap 插件还是挺多的,一般使用较多的是 Hanny 版本以及 八云酱的版本,二者基本上没什么太大的差别,
无非就是 下载 - 上传 - 设置启用 三步走。

下载插件
从作者博客网站或者 Github 上下载插件,不建议从其他第三方下载。

寒泥 Hanny 的网站下载链接:http://www.imhan.com/typecho/
八云酱 Github 下载链接:https://github.com/bayunjiang/typecho-sitemap

上传
利用 FTP 或者其他方式将下载好的插件上传到 Typecho 安装路径下的 /usr/plugins 下面,一般还需要将文件夹的名字修改下,注意大小写,可能有些时候不必修改,但仍然建议修改。

设置并启用
登陆 Typecho 后台,在插件管理处,启用相应插件即可。可能有些其他版本的 Sitemap 插件还会员设置 sitemap 文件存放路径,是否建立索引,以及设置文章的优先级与更新频率等问题。博主的建议是,文件存放路径设置为 / 即网站的根目录,这样 sitemap 的访问路径即是一般认为的 https://domain.com/sitemap.xml

无插件实现 Typecho 站点地图
对于博主这种懒得搭理,文章不多,更新频率也不高的,还是搭建在虚拟主机上的,对于插件的使用是能少一个就少一个的,就在 Yephy 的网站上找到了不用插件即生成站点地图的方法。

其实原来很简单,设置一个页面,自动替换和调用 Typecho 的文章、页面等信息。使用方法更简单,下载上传文件,创建页面即可。

下载 sitemap.php 文件,复制下面的代码,保存为 sitemap.php,page-sitemap.php 等任何你认为文件名合适的 php 文件。

点此下载-sitemap.rar

将上述代码解压之后,与之前插件上传目录不同的是,这个文件是上传到 Typecho 主题文件里,即 /usr/themes/yourtheme/

创建站点地图
在 Typecho 选择增加独立页面,其中,slug 设置为 sitemap,同时模板选择 sitemap,不需要任何内容,直接发布文章即可,如下图所示,图片来自于原作:

屏幕截图 2020-10-15 160208.png屏幕截图 2020-10-15 160208.png

访问 http://yourdomain.com/sitemap.html,即可看到生成的站点地图,本站的站点地图:https://www.ozabc.com/sitemap.html

一个遗留的问题
上述创建的 sitemap 是 html 页面,你也可以自行修改上述文件生成标准的 sitemap.xml 文件。这里,提供一个 rewrite 规则,将对 sitemap.xml 跳转到 sitemap.html.

Apache
将下面的代码写进到网站目录下的 .htaccess 即可

RewriteRule ^sitemap\.xml$ sitemap.html [L,R]

Nginx 的跳转规则

location /sitemap {
  rewrite ^/sitemap\.xml$ /sitemap.html redirect;
}