love2wind

VSeptember 15, 2020

Typecho常用代码收集

1380848249

伪静态规则整理(Apache + NGINX)

一、Apache 环境(.htaccess)

<IfModule mod_rewrite.c>
RewriteEngine On
# 下面是在根目录,文件夹要修改路径,如 /oldtang/
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

二、NGINX 环境

location / {
index index.html index.php;
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php) {
rewrite (.*) $1/index.php;
}
if (!-f $request_filename) {
rewrite (.*) /index.php;
}
}

三、nginx二级目录

location /blog/ {
    if (-f $request_filename/index.html){
        rewrite (.*) $1/index.html break;
    }
    if (-f $request_filename/index.php){
        rewrite (.*) $1/index.php last;
    }
    if (!-f $request_filename){
        rewrite (.*) /blog/index.php last;
    }
}

注意blog就是您自己的二级目录,请根据实际情况调整。

LAMP 建站教程,可以参考:《使用 LAMP 一键包部署 Linux 建站环境》。

如果需要配置 SSL,并做强制 https 跳转,可以参考《LAMP 环境下安装配置 SSL 证书并自动跳转到 HTTPS》。

升级全站https数据库批量替换网址/内容

内容

UPDATE `typecho_contents` SET `text` = REPLACE(`text`,'旧域名地址','新域名地址');

自定义

UPDATE `typecho_fields` SET `str_value` = REPLACE(`str_value`,'旧域名地址','新域名地址');

评论

UPDATE `typecho_comments` SET `text` = REPLACE(`text`,'http://','https://');
UPDATE `typecho_comments` SET `url` = REPLACE(`url`,'http://','https://');

获取某个分类下的文章列表

$category = $this->widget('Widget_Archive@category', 'pageSize=6&type=category', 'mid=1');
while($category->next()){
    // todo here
    ... ...
}
mid表示分类id,type指定获取分类文章

获取某关键词的搜索结果

$search = $this->widget('Widget_Archive@search', 'pageSize=10&type=search', 'keywords=typecho');
while($search->next()){
    // todo here
    ... ...
}
type指定搜索类型,keywords指定搜索关键词

获取某个tag的文章列表

$tags = $this->widget('Widget_Archive@tag', 'pageSize=10&type=tag', 'mid=2');
//或者:$tags = $this->widget('Widget_Archive@tag', 'pageSize=10&type=tag', 'slug=tag_name');
while($tags->next()){
    // todo here
    ... ...
}
type指定tag类型,mid表示tag的id,slug表示tag的缩写名

获取某篇特定的文章

$post = $this->widget('Widget_Archive@post', 'type=post', 'cid=1');
$post->title();
... ...
type指定post进而获取文章,cid指定文章id

站点名称

<?php $this->options->title() ?>

站点网址

<?php $this->options ->siteUrl(); ?>

站点说明

<?php $this->options->description() ?>

文章/页面的作者

<?php $this->author(); ?>

作者头像

< ?php $this->author->gravatar('40') ?>

上下篇调用代码

<?php $this->thePrev(); ?> <?php $this->theNext(); ?>

判断是否为首页,输出相关内容

<?php if ($this->is('index')): ?>
//是首页输出内容
<?php else: ?>
//不是首页输出内容
<?php endif; ?>
文章/页面评论数目

<?php $this->commentsNum('No Comments', '1 Comment' , '%d Comments'); ?>

截取文章内容显示摘要(350是字符数)

<?php $this->excerpt(350, '.. .'); ?>

调用自定义字段

<?php $this->fields->fieldName ?>

RSS地址

<?php $this->options->feedUrl(); ?>

获取最新评论列表

  • <?php $this->widget('Widget_Comments_Recent')->to($comments); ?> <?php while($comments->next()): ?>
  • {date}; ?>">author(false); ?>: excerpt(50, '...'); ?> 分类名称(无链接)category(',', false); ?>获取文章时间归档 widget('Widget_Contents_Post_Date', 'type=month&format=F Y') ->parse('
  • '); ?>

获取标签集合

<?php $this->widget('Widget_Metas_Tag_Cloud', 'ignoreZeroCount=1&limit=28')->to($tags); ?>
<?php while($tags->next()): ?>
<a href="<?php $tags->permalink(); ?>" class="size-<?php $tags->split(5, 10, 20, 30); ?>"><?php $tags->name(); ?></a>
<?php endwhile; ?>

登陆与未登录用户展示不同内容

<?php if($this->user->hasLogin()): ?>
//登陆可见
<?php else: ?>
//未登录和登陆均可见
<?php endif; ?>

自动调用img字段内容,如果没有,去文章搜索第1个图片。

<?php if (array_key_exists('img',unserialize($this->___fields()))): ?><?php $this->fields->img(); ?><?php else: ?><?php
preg_match_all("/\&lt;img.*?src\=(\'|\")(.*?)(\'|\")[^>]*>/i", $this->content, $matches);
$imgCount = count($matches[0]);
if($imgCount >= 1){
$img = $matches[2][0];
echo <<<Html
{$img}
Html;
}
?><?php endif; ?>

文章内容替换七牛网址

<?php echo $str = str_replace("your.com/usr/uploads","your.qiniu.com/usr/uploads",$this->content); ?>

文章字数统计

在functions.php中写入代码:

function  art_count ($cid){
$db=Typecho_Db::get ();
$rs=$db->fetchRow ($db->select ('table.contents.text')->from ('table.contents')->where ('table.contents.cid=?',$cid)->order ('table.contents.cid',Typecho_Db::SORT_ASC)->limit (1));
echo mb_strlen($rs['text'], 'UTF-8');
}

在模板中调用:

<?php echo art_count($this->cid); ?>

自动调用第1个文章图片

<?php
preg_match_all("/\&lt;img.*?src\=(\'|\")(.*?)(\'|\")[^>]*>/i", $this->content, $matches);
$imgCount = count($matches[0]);
if($imgCount >= 1){
    $img = $matches[2][0];
echo <<<Html
     <p class="post-images">
      <a href="{$this->permalink}" title="{$this->title}">
       <img src="{$img}" alt="{$this->title}">
      </a>
     </p>
Html;
}
?>

边栏不显示博主评论

<?php $this->widget('Widget_Comments_Recent','ignoreAuthor=true')->to($comments); ?>

前台登录表单

<form action="<?php $this->options->loginAction()?>" method="post" name="login" rold="form">
<input type="hidden" name="referer" value="<?php $this->options->siteUrl(); ?>">
<input type="text" name="name" autocomplete="username" placeholder="请输入用户名" required/>
<input type="password" name="password" autocomplete="current-password" placeholder="请输入密码" required/>
<button type="submit">登录</button>
</form> 

......

原创文章,作者:love2wind,如若转载,请注明出处:https://love2wind.cn/archives/2165.html
17

发表评论