理想技术网 - 同时 2024-06-04T20:09:00+08:00 Typecho https://im1.cc/feed/atom/tag/%E5%90%8C%E6%97%B6/ <![CDATA[Typecho怎么让各种类型的文件都能上传?]]> https://im1.cc/Typecho/154.html 2024-06-04T20:09:00+08:00 2024-06-04T20:09:00+08:00 admin https://www.im1.cc

在 Typecho 中,默认情况下,只有特定类型的文件(如图片、音频、视频等)可以上传。如果你想允许上传更多类型的文件,例如 .exe、.zip、.rar 等,需要对 Typecho 的配置进行一些修改。以下是详细的步骤:

修改 Typecho 配置文件
首先,你需要修改 Typecho 的配置文件 config.inc.php,以允许更多类型的文件上传。

  1. 找到配置文件
    通常,Typecho 的配置文件位于 Typecho 安装目录的根目录下。如果找不到,请联系你的服务器管理员或参考 Typecho 的安装文档。
  2. 编辑配置文件
    在 config.inc.php 文件中添加以下代码,允许更多类型的文件上传:

    <?php
    // 其他配置项...
    
    /**
     * 允许的文件类型,可以根据需要进行修改
     */
    $allowedFiles = array(
     'gif', 'jpg', 'jpeg', 'png', 'bmp', 'webp', 'mp3', 'mp4', 'ogg', 'avi', 'wav', 'zip', 'rar', '7z', 'tar', 'gz', 'bz2', 'exe', 'pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'txt', 'rtf', 'csv', 'xml', 'html', 'htm', 'css', 'js'
    );
    
    // 设置允许的文件类型
    Typecho_Widget_Helper_Upload::allowedFileTypes($allowedFiles);
    ?>

    修改后台文件上传逻辑
    有时候,只修改配置文件还不够,你可能需要修改 Typecho 源代码来确保允许所有文件类型上传。

  3. 修改 Upload.php
    找到并编辑 var/Widget/Upload.php 文件。
  4. 修改文件类型验证逻辑
    找到以下代码:

    $exts = array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'webp', 'mp3', 'mp4', 'ogg', 'avi', 'wav', 'zip', 'rar', '7z', 'tar', 'gz', 'bz2', 'exe', 'pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'txt', 'rtf', 'csv', 'xml', 'html', 'htm', 'css', 'js');

    替换为:

    $exts = array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'webp', 'mp3', 'mp4', 'ogg', 'avi', 'wav', 'zip', 'rar', '7z', 'tar', 'gz', 'bz2', 'exe', 'pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'txt', 'rtf', 'csv', 'xml', 'html', 'htm', 'css', 'js', '任意其他需要的文件类型');

    或者,如果你想允许所有类型的文件上传,可以修改为:

    $exts = array('*'); // 允许所有文件类型

    但请注意,允许所有文件类型上传可能存在安全风险,建议仅允许特定类型的文件上传,并确保文件的安全性。

修改前端上传逻辑
如果你使用了某些前端上传插件或工具,还需要确保前端也允许这些文件类型上传。

  1. 检查和修改前端文件上传插件配置
    例如,如果你使用了某些 JavaScript 文件上传库,如 Dropzone 或 FineUploader,需要确保它们的配置也允许上传更多类型的文件。

    // 以 Dropzone 为例
    Dropzone.options.myDropzone = {
     acceptedFiles: ".gif,.jpg,.jpeg,.png,.bmp,.webp,.mp3,.mp4,.ogg,.avi,.wav,.zip,.rar,.7z,.tar,.gz,.bz2,.exe,.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.txt,.rtf,.csv,.xml,.html,.htm,.css,.js"
    };

    安全性考虑
    允许更多类型的文件上传可能会增加安全风险。

因此,在实施以上更改时,请考虑以下安全措施:

  1. 严格验证文件类型和大小:确保仅允许必要的文件类型和大小。
  2. 启用杀毒软件:在服务器上安装和启用杀毒软件,扫描上传的文件。
  3. 定期备份:定期备份网站数据,以防止因恶意文件上传导致的数据丢失。
  4. 文件上传目录隔离:将上传的文件存储在独立的目录中,避免与核心网站文件混淆。

通过以上步骤,你可以在 Typecho 中允许各种类型的文件上传,同时采取适当的安全措施来保护网站安全。

]]>
<![CDATA[Typecho为什么不能获取多次分类或标签?]]> https://im1.cc/Typecho/150.html 2024-06-04T19:44:26+08:00 2024-06-04T19:44:26+08:00 admin https://www.im1.cc

Typecho 是一款简洁高效的开源博客系统,但在获取多次分类或标签时可能会遇到一些限制或问题。以下是几个可能的原因和解决方法:

原因
数据库查询限制:
Typecho 可能在某些情况下对分类和标签的查询进行优化,导致无法同时获取多个分类或标签的信息。

插件冲突:
安装的一些插件可能会影响分类和标签的正常获取,特别是如果插件修改了默认的查询逻辑或数据结构。

模板问题:
使用的模板可能没有正确调用 Typecho 的相关函数,导致无法获取多个分类或标签。

解决方法
修改模板代码:
检查并修改模板文件中的相关代码,确保使用正确的函数来获取分类或标签。例如,可以使用 getCategory 或 getTags 函数来获取所需的数据。

<?php
$this->widget('Widget_Metas_Category_List')->to($categories);
while ($categories->next()): ?>
    <a href="<?php $categories->permalink(); ?>"><?php $categories->name(); ?></a>
<?php endwhile; ?>

<?php
$this->widget('Widget_Metas_Tag_Cloud')->to($tags);
while ($tags->next()): ?>
    <a href="<?php $tags->permalink(); ?>"><?php $tags->name(); ?></a>
<?php endwhile; ?>

检查插件:
禁用所有插件,然后逐个启用,找到可能导致问题的插件,并联系插件作者或社区寻求解决方案。

自定义 SQL 查询:
如果默认的 Typecho 函数无法满足需求,可以通过自定义 SQL 查询来获取数据。这需要一定的 SQL 语法知识,并且要注意安全性。

<?php
$db = Typecho_Db::get();
$prefix = $db->getPrefix();

// 获取分类
$categories = $db->fetchAll($db->select()->from($prefix . 'metas')->where('type = ?', 'category'));
foreach ($categories as $category) {
    echo '<a href="' . Typecho_Common::url($category['slug'], Typecho_Widget::widget('Widget_Options')->siteUrl) . '">' . $category['name'] . '</a>';
}

// 获取标签
$tags = $db->fetchAll($db->select()->from($prefix . 'metas')->where('type = ?', 'tag'));
foreach ($tags as $tag) {
    echo '<a href="' . Typecho_Common::url($tag['slug'], Typecho_Widget::widget('Widget_Options')->siteUrl) . '">' . $tag['name'] . '</a>';
}
?>

总结
获取多次分类或标签的问题通常可以通过修改模板代码、检查插件冲突、自定义 SQL 查询等方法来解决。如果遇到复杂问题,建议多参考 Typecho 的官方文档和社区资源。

]]>
<![CDATA[WordPress文章阅读量统计和显示(非插件, 刷新页面不累加)]]> https://im1.cc/WordPress/146.html 2024-05-25T10:34:35+08:00 2024-05-25T10:34:35+08:00 admin https://www.im1.cc

要在 WordPress 文章中实现阅读量统计和显示功能,同时确保在刷新页面时不重复计算阅读量,您可以按照以下步骤进行操作:

在主题的 functions.php 文件中添加代码:

在您的 WordPress 主题的 functions.php 文件中添加以下代码,用于创建一个自定义字段来存储文章的阅读量:

function custom_post_views() {
    $post_id = get_the_ID();
    $views = get_post_meta($post_id, 'post_views', true);
    $views = $views ? $views : 0;
    $views++;
    update_post_meta($post_id, 'post_views', $views);
}

add_action('wp', 'custom_post_views');

在文章模板中显示阅读量:

在您的文章模板文件(如 single.php)中添加以下代码来显示文章的阅读量:

$post_id = get_the_ID();
$views = get_post_meta($post_id, 'post_views', true);
echo '阅读量:' . $views;

确保阅读量只在用户访问时增加:

在上述代码中,我们使用了 update_post_meta() 函数来更新文章的阅读量。这确保了阅读量只在用户访问时增加,而不会在页面刷新时重复计算。

通过以上步骤,您可以在 WordPress 文章中实现阅读量统计和显示功能,同时确保在刷新页面时不重复累加阅读量。

如果您需要进一步的帮助或有任何疑问,请随时告诉我。

]]>
<![CDATA[Typecho如何代码实现评论无限嵌套]]> https://im1.cc/Typecho/124.html 2024-05-13T12:36:00+08:00 2024-05-13T12:36:00+08:00 admin https://www.im1.cc

要在 Typecho 中实现评论的无限嵌套功能,你可以通过修改主题文件中的评论循环部分来实现。以下是一个简单的示例代码,演示如何在 Typecho 主题中实现评论的无限嵌套功能:

  1. 在主题文件中找到显示评论的代码段,通常在 comments.php 文件中。
  2. 在评论循环中添加以下代码来实现评论的无限嵌套:

    <?php ThreadedComments::showCommentsList($comments); ?>
    
    <?php class ThreadedComments {
     public static function showCommentsList($comments) {
         foreach ($comments as $comment) {
             self::showComment($comment);
         }
     }
    
     public static function showComment($comment) {
         $comment->content();
         if ($comment->children) {
             echo '<ul class="children">';
             self::showCommentsList($comment->children);
             echo '</ul>';
         }
     }
    }
    ?>

    在上面的代码中,ThreadedComments::showCommentsList($comments) 方法用于显示评论列表,ThreadedComments::showComment($comment) 方法用于显示单个评论。如果评论有子评论(即回复评论),则递归调用 showCommentsList 方法来显示子评论,从而实现评论的无限嵌套。

  3. 根据需要设计合适的样式来区分不同层级的评论,例如使用缩进、不同的背景色等。
  4. 保存文件并刷新网页,查看评论是否已经实现了无限嵌套功能。

请注意,以上代码仅为示例,实际应用中可能需要根据你的主题和需求进行适当的修改和调整。同时,为了确保代码的正确性和安全性,建议在修改代码之前备份文件,并在本地环境中进行测试。

如果遇到问题,可以参考 Typecho 的官方文档或波博客评论留言寻求帮助。

]]>
<![CDATA[【原创插件】首页滚动公告插件]]> https://im1.cc/Note/120.html 2024-05-11T20:49:00+08:00 2024-05-11T20:49:00+08:00 admin https://www.im1.cc

为什么要更新首页的滚动公告功能呢?

最初为了省时间,博主偷懒,首页公告是直接采用PHP文件进行调用,设置的为固定内容;

每次想去进行添加公告都需要重新去PHP文件进行手写新增代码;

那这次是怎么进行更新的呢?

在实用性的缺陷下,博主始终无法偷懒了,这次我选择还是写了插件来进行控制首页的公告;

插件简介

  1. 插件名:Lxgonggao
  2. 插件也没设置过多复杂的操作,主要是达到方便快捷即可;
  3. 插件启用后,点击设置选项后,设置内分别为:
  4. 滚动文字公告内容填写处;(支持文本框自由控制)
  5. 滚动速度(秒)控制;
  6. 设置文字大小;

设置滚动文字公告内容中,您可以在滚动文字公告中按照以下格式添加文字信息:

文本内容|链接地址

示例:

原创插件集:点击进入|https://www.im1.cc/Note/

插件界面:

cjjm.png

插件演示效果:

gonggaochajian.GIF

最后我把之前我的公告PHP调用文件分享给大家;

<div class="category-item">
    <div id="scrolling-notice">
        <ul>
            <?php
            $notices = array(
                array('text' => '更新说明:本博客更两停一,比如:星期一发布教学帖子、星期二发布教学帖子、星期三不进行文章教学帖更新!'),
                array('text' => '注意事项:禁止发布涉黄、擦边、虚假、包含大量广告的帖子,发现立即封号,同时封存历史帖子!'),
                array('text' => '问题反馈:如果你有想学习的资料,而本站没有,可去关于页面进行评论,我看到也会尽量为你解决你的问题。'),
                array('text' => '温馨提示:爱学习是种美德,但也要注意时间,每隔1小时记得适当的去户外走动走动,有利于对身体的保护哟。')
                // 添加更多公告
            );

            foreach ($notices as $notice) {
                echo '<li>' . $notice['text'] . '</li>';
            }
            ?>
        </ul>
    </div>
</div>

<style>
#scrolling-notice {
    width: 100%;
    overflow: hidden;
    padding: 10px;
}

#scrolling-notice ul {
    list-style-type: none;
    padding: 0;
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
}

#scrolling-notice li {
    display: inline-block;
    margin-right: 20px;
    color: var(--jj-article-card-title-color);
    text-align: left; /* 将文字左对齐 */
}


#scrolling-notice a {
    text-decoration: none;
    color: #1e80ff;
}

#scrolling-notice a:hover {
    text-decoration: underline;
}
</style>

<script>
var notices = <?php echo json_encode($notices); ?>;
var currentNotice = localStorage.getItem('currentNotice') || 0;

function displayNotice() {
    document.getElementById('scrolling-notice').innerHTML = '<ul><li>' + notices[currentNotice].text + '</li></ul>';
    currentNotice = (parseInt(currentNotice) + 1) % notices.length;
    localStorage.setItem('currentNotice', currentNotice);
}

displayNotice(); // 显示第一条公告

setInterval(displayNotice, 10000);
</script>
]]>
<![CDATA[typecho调用分类下文章时怎么才能不显示子分类文章?]]> https://im1.cc/Typecho/117.html 2024-05-10T10:25:00+08:00 2024-05-10T10:25:00+08:00 admin https://www.im1.cc

要在 Typecho 中调用某一分类下的文章时不显示子分类文章,您可以在调用文章列表的循环中添加一个条件判断,只输出该分类下的文章,而不包括子分类的文章。以下是一种可能的解决方案:

  1. 打开您的 Typecho 主题文件,找到展示文章列表的循环代码部分。
  2. 在循环代码中添加一个条件判断,判断文章的分类是否为指定的分类,而非其子分类。您可以使用以下代码来实现:
<?php while($this->next()): ?>
    <?php if($this->category == $your_category_id): ?>
        <!-- 输出文章内容的代码 -->
    <?php endif; ?>
<?php endwhile; ?>

在上面的代码中,$your_category_id 是您想要显示文章的分类的 ID。只有当文章的分类与 $your_category_id 相同时,才会输出文章内容。

  1. 替换 $your_category_id 为您要显示文章的分类的实际 ID。您可以在 Typecho 后台的分类管理中找到每个分类的 ID。

通过以上步骤,您可以在 Typecho 中调用某一分类下的文章时不显示子分类文章,只显示当前分类下的文章。

请根据您的实际情况和代码结构进行相应的调整。

如果需要进一步的帮助或有其他问题,请随时告诉我。

]]>
<![CDATA[tyeocho首页输出全部分类文章时,如何隐藏多个分类不显示?]]> https://im1.cc/Typecho/114.html 2024-05-10T09:45:00+08:00 2024-05-10T09:45:00+08:00 admin https://www.im1.cc

要在 Typecho 的首页输出全部分类文章时,同时隐藏多个分类不显示,可以在首页模板文件中使用条件判断来实现。您可以在首页模板文件(一般是 index.php)中添加以下代码来排除不需要显示的分类文章:

<?php while($this->next()): ?>
    <?php 
        // 获取当前文章的分类
        $categories = $this->categories;
        
        // 判断当前文章的分类是否需要隐藏
        $excludeCategories = array('分类1', '分类2', '分类3'); // 需要隐藏的分类
        $showArticle = true;
        foreach ($categories as $category) {
            if (in_array($category['name'], $excludeCategories)) {
                $showArticle = false;
                break;
            }
        }
        
        // 输出文章内容
        if ($showArticle) {
    ?>
        <h2><a href="<?php $this->permalink() ?>"><?php $this->title() ?></a></h2>
        <p><?php $this->content('阅读全文 &raquo;'); ?></p>
    <?php } ?>
<?php endwhile; ?>

在上面的代码中,首先获取当前文章的分类,然后定义一个 $excludeCategories 数组来存放需要隐藏的分类名称。接着使用循环来判断当前文章的分类是否在需要隐藏的分类中,如果是则将 $showArticle 设置为 false,不输出该文章;否则输出文章的标题和内容。

您可以根据实际需求修改 $excludeCategories 数组中的分类名称,以及根据需要调整代码逻辑。

这样就可以在 Typecho 的首页输出全部分类文章时,同时隐藏多个分类不显示。

]]>
<![CDATA[TypeCho搬家]]> https://im1.cc/Typecho/108.html 2024-05-09T13:40:51+08:00 2024-05-09T13:40:51+08:00 admin https://www.im1.cc

要将Typecho网站搬家到新的主机或域名上,您可以按照以下步骤进行:

备份文件和数据库:

首先,通过FTP或文件管理器将Typecho的所有文件从旧主机下载到本地计算机。

接着,通过phpMyAdmin或其他数据库管理工具导出Typecho网站的数据库。
上传文件和数据库:

将下载的Typecho文件通过FTP或文件管理器上传到新主机的网站根目录。

在新主机的数据库中创建一个新数据库,并将之前导出的数据库文件导入到新数据库中。

修改配置文件:

在新主机上找到Typecho的配置文件config.inc.php,通常位于Typecho的根目录下。

修改配置文件中的数据库连接信息,包括数据库名、用户名、密码等,以连接到新的数据库。

更新网站链接:

如果同时搬迁了域名,需要在WordPress数据库中将旧域名替换为新域名。可以使用工具如Better Search Replace插件来批量替换数据库中的链接。

测试网站:

访问新的网站地址,确保网站能够正常访问,并且所有功能都正常运行。

通过以上步骤,您就可以成功将Typecho网站搬迁到新的主机或域名上。

请确保在操作前做好备份,以防意外情况发生。

]]>
<![CDATA[新版网站缩略图生成器]]> https://im1.cc/Typecho/83.html 2024-05-02T20:43:00+08:00 2024-05-02T20:43:00+08:00 admin https://www.im1.cc
简介

当初2023年7月写的,因为蓝大富提出的功能要求,当时有空就写了这两种风格。

界面展示
abc.png

一共有两个版本,蓝大富自己喜欢这款样式,但我把两款同时分享给大家吧。

后期我也会新增Xiuno相关技术教学,如果觉得本博客还不错的可以收藏一下!

]]>
<![CDATA[WordPress宝塔面板Mysql数据库经常停止解决办法]]> https://im1.cc/EmpireCMS/78.html 2024-04-30T14:24:00+08:00 2024-04-30T14:24:00+08:00 admin https://www.im1.cc

针对 WordPress 在宝塔面板上 MySQL 数据库经常停止的问题,通常可以通过以下代码解决办法来尝试解决:

增加 MySQL 内存限制:

在 MySQL 配置文件(通常是 my.cnf)中增加内存限制参数,可以尝试增加如下配置:
[hide]

- innodb_buffer_pool_size = 128M
- innodb_log_buffer_size = 8M
- key_buffer_size = 64M
- query_cache_size = 16M

[/hide]

这些参数可以根据服务器实际情况进行调整,增加内存限制有助于提高 MySQL 的性能和稳定性。

优化 MySQL 查询缓存:

可以尝试优化 MySQL 查询缓存,通过以下代码来设置查询缓存大小和开启查询缓存:
[hide]

- query_cache_size = 32M
- query_cache_type = 1
- query_cache_limit = 2M

[/hide]

这些参数可以帮助 MySQL 缓存查询结果,提高查询性能。
增加 MySQL 连接数限制:

有时 MySQL 连接数限制较低可能导致数据库经常停止,可以尝试增加连接数限制:

max_connections = 200

增加连接数限制可以确保数据库能够处理更多的同时连接请求。

检查 MySQL 日志:

定期查看 MySQL 的错误日志,以便及时发现和解决问题。
请注意,在修改 MySQL 配置文件之前,请确保备份好原始配置文件,以防意外情况发生。

另外,调整 MySQL 配置参数需要根据服务器实际情况和性能需求来进行调整,建议谨慎操作并逐步测试效果。

如果以上方法无法解决问题,建议咨询宝塔面板官方支持或专业的数据库管理员寻求帮助。

]]>