typecho 附件页添加描述并加入sitemap.xml



  今天上班摸鱼时意外发现 Typecho 给每张附件图片也都有单独的页面(如:https://80srz.com/attachment/640/),顿时来了个莓用(没啥卵用)的想法,在图片文件页添加图片描述,并添加到 sitemap.xml 中。

莓用想法之科学解释

  1. 既然上传的图片有单独的前端展示页面,我们加上图片描述后,能够方便日后我们快速的回想起拍照时的感想、心情,再次触发心灵深处的那沉寂许久的小鹿,感觉对我们这种个人博客站长还是蛮有意义的;
  2. 添加到 sitemap 中,能够让你上传一张图片,在搜索引擎眼中,你又水了一篇文章,美滋滋……(有没有卵用,我也不知道!)
  3. 后面我还想做一个前端相册,但苦于根本不懂技术,没法搞,有大佬愿意的话,可以花几秒钟给整个……拜谢!

功能实现经过

研究分析

  花了几个世纪研究 https://80srz.com/attachment/640/ 页面代码及 typecho 系统文件、 数据表结构,还是被我这小白整明白了,不得不说 typecho 真真滴适合小白使用,总结为以下几点:

  1. 图片前端展示页用的是主题的 page.php 模板;
  2. 图片即(attachment)、页面(page)、文章(post) 共同存储在 typecho_contents 数据表中;type 分别是 attachmentpagepost ;
  3. BaiduSubmit 地图插件中由 Action.php 负责输出 sitemap.xml 数据;

修改 page.php 模板文件

  在 <?php parseContent($this); ?> 代码后面加上判断文件是否是图片,如是,则输出图片描述;不是就不输出内容;代码如下:

<?php if ($this->attachment->isImage): ?>
     <p><h3>“<?php $this->attachment->name();?>”的描述:</h3><br/><span style="padding-left:40px;"><?php $this->attachment->description();?></span></p>
<?php endif; ?>

DIY BaiduSubmit 地图插件

  声明:本人纯小白,BaiduSubmit 地图插件 DIY 过程就是看着代码是那么回事就复制,然后将字段改成 attachment ,还真能行!哈哈……谁都不服,就服我自己??

  以下是我对 BaiduSubmit 地图插件中 Action.php 文件 DIY 的几段代码:

52行:

$attachments = $db->fetchAll($db->select()->from('table.contents')
   ->where('table.contents.status = ?', 'publish')
   ->where('table.contents.created < ?', $options->gmtTime)
   ->where('table.contents.type = ?', 'attachment')
   ->order('table.contents.created', Typecho_Db::SORT_DESC));
            

84行:

foreach ($attachments AS $attachment) {
    $type = $attachment['type'];
    $routeExists = (NULL != Typecho_Router::get($type));
    $attachment['pathinfo'] = $routeExists ? Typecho_Router::url($type, $attachment) : '#';
    $urls[] = Typecho_Common::url($attachment['pathinfo'], $options->index);
}
        

142行:

$attachments = $db->fetchAll($db->select()->from('table.contents')
   ->where('table.contents.status = ?', 'publish')
   ->where('table.contents.created < ?', $options->gmtTime)
   ->where('table.contents.type = ?', 'attachment')
   ->order('table.contents.created', Typecho_Db::SORT_DESC));
            

230行:

foreach($attachments AS $attachment) {
        $type = $attachment['type'];
        $routeExists = (NULL != Typecho_Router::get($type));
        $attachment['pathinfo'] = $routeExists ? Typecho_Router::url($type, $attachment) : '#';
        $attachment['permalink'] = Typecho_Common::url($attachment['pathinfo'], $options->index);
        echo "\t<url>\n";
    echo "\t\t<loc>".$attachment['permalink']."</loc>\n";
    echo "\t\t<lastmod>".date('Y-m-d\TH:i:s\Z',$attachment['modified'])."</lastmod>\n";
    echo "\t\t<changefreq>monthly</changefreq>\n";
    echo "\t\t<priority>0.4</priority>\n";
    echo "\t</url>\n";
}    

注明:这里我将图片(文件)展示页权重设为 0.4 ,月更新 。可根据需要修改 230 行代码。

食用方法

步骤一:(参考前文)研究分析 → 修改 page.php 模板文件;

步骤二:安装《 BaiduSubmit 百度结构化插件魔改版之莓用版》 ,如果用的是“老高 & 迷你日志”的 BaiduSubmit 百度结构化插件魔改版 0.7 版 则直接覆盖上传即可。

  下载链接:https://pan.baidu.com/s/1G6vNrxcBs5S8euaM2EZq_Q

抱歉,隐藏内容 回复 后可见

前端相册(入口)以后折腾

  技术有限,冇法子,慢慢来。

效果

  1. 图片展示页:https://80srz.com/attachment/640/
  2. sitemap.php :https://80srz.com/sitemap.xml

免责声明

  我也不知道这么搞有没有啥卵用,会不会有啥反效果,反正就是玩呗,有感兴趣的朋友请慎用,由此造成的任何后果,本人不负责!!!

类似功能推荐:typecho给文章标签添加描述( description )字段


 赏 
感谢您的支持,我会继续努力哒!
支付宝收款码
tips
(*) 7 + 7 =
共 19 条评论, 6 次评论点赞。快来参与吧!
    2022年05月01日 广东省广州市白云区 发自Windows 10 回复 1

    这方法很不错

      2022年05月01日 广东省广州市 发自Windows Server 2003 回复 0

      有没有用就不知道了?

    2022年04月26日 安徽省马鞍山市 发自Windows 10 回复 0

    来看看啊

      2022年04月26日 广东省广州市 发自Windows Server 2003 回复 0


      rz.sb的主题开卖了?

        2022年04月26日 安徽省滁州市 发自Windows 10 回复 0

        没有呢,我卖屁股弄来的。

          2022年04月29日 广东省广州市 发自Windows Server 2003 回复 0

          额额,牛逼plus