上次设置的B站追番列表,但是最近它的 cookie 的值失效了,观看进度都变成了 尚未观看 ,为了方便的改 cookie 的值,我想在后台管理里面增加一个配置项,这样我通过后台就能直接更改参数,不用再手动改代码后发布主题。PS:为了方便用我主题的小伙伴(虽然我觉得也没有人会用o(╥﹏╥)o),多加了一个用户 ID 的配置。

增加扩展参数

在主题下面找到 functions.php 文件,我们可以看到文件中有一个主要的函数 themeConfig ,里面的内容大致是:

function themeConfig($form) {
    $logoUrl = new Typecho_Widget_Helper_Form_Element_Text('logoUrl', NULL, NULL, _t('站点 LOGO 地址'), _t('在这里填入一个图片 URL 地址, 以在网站标题前加上一个 LOGO'));
    $form->addInput($logoUrl);
    //后面的省略
}

这里面的 $logoUrl 就是我们在主题的外观设置中的默认的第一项,与之类似的,我们想要增加一个一样的表单项,只需要把这个复制一份,换成我们定义的名字,就可以增加一个表单项啦,比如:

$bilibiliCookie = new Typecho_Widget_Helper_Form_Element_Text('bilibiliCookie', NULL, NULL, _t('Bilibili Cookie SESSDATA:'), _t('追番列表需要设置的cookie值'));
$form->addInput($bilibiliCookie);

$bilibiliId = new Typecho_Widget_Helper_Form_Element_Text('bilibiliId', NULL, NULL, _t('Bilibili ID:'), _t('追番列表需要设置的Bilibili用户ID'));
$form->addInput($bilibiliId);

添加好之后,保存,去我们后台管理系统里面,控制台-->主题-->外观设置 ,就会发现多了一个输入框出来,那么我们的初步目标就达成啦,接下来就是想办法在追番列表这个页面中取到这两个值

取值

进入到 sub-anime-list.php 文件中(这是我定义的追番列表页面的模板),使用如下代码:

$sessData = $this->options->bilibiliCookie;
$vmid = $this->options->bilibiliId;

就可以取到这两个值啦,然后在需要的地方把这两个变量替换上,并与之前后的字符串使用 . 拼接上即可,例如:

$opts = array(
    'http'=>array(
      'method'=>"GET",
      'header'=>"Accept-language: en\r\n" .
                "Cookie: SESSDATA=" . $sessData . "\r\n"
    )
  );

这样我们回到页面刷新就可以看到啦

参考文章

typecho使用 themeFileds 增加自定义字段和主题设置 主要参考了这篇文章,感谢大佬的文章,对我很有帮助

标签: none

添加新评论