ホームページ バックエンド開発 PHPチュートリアル Discuz!插件:自动隐藏帖子第1/2页_PHP教程

Discuz!插件:自动隐藏帖子第1/2页_PHP教程

Jul 21, 2016 pm 03:56 PM
discuz 序文 スタジオ 役職 プラグイン ネチズン 自動 必要とする これ 隠れる

前言
  应一位网友要求开卷工作室制作了这个自动隐藏帖子的插件,主要用途是无需手动添加 [hide] 代码,则自动隐藏所有发布的帖子内容,会员需要回复后才可以浏览该帖。这想法相当不错,要实现这一功能也不很难,所以就帮忙做了一个出来。插件提供两种自动隐藏的模式,一种是只隐藏一楼的帖子,另一种是隐藏包括回复在内的所有帖子。因为秉承开卷工作室绿色插件的作风,能够不改动数据库的就不改,所以本插件不增加后台开关功能,而只提供 config.inc.php 的开关设置。
  本插件适用于 Discuz! 所有版本的论坛,但这里只提供 DZ4.1 / DZ5.0 / DZ5.5 的安装方法,其它版本的论坛请参照着自行修改。
更新记录:
2007-01-25        修正不包含论坛代码的帖子无法隐藏的问题;增加隐藏除一楼以外的所有帖子的设置;增加可预览字节设置,设置后可以预览部分被隐藏的帖子内容,从而让内容好的帖子吸引更多人参与回帖;增加可自定义哪些论坛开启自动隐藏功能的设置。
2007-01-27        增加对游客访问时只能阅读部分内容的设置,效果如下:
  非常抱歉,您的当前状态为游客,因此只能阅读部分内容。要阅读完整内容请:注册 或 登录 。
2007-01-28        更正公告及短消息也会被自动隐藏,同时因缺少变量而报错的问题;增加可自定义允许或排除指定论坛自动隐藏功能的设置;提供解决文本截断后页面代码错乱问题的两种解决办法,大家可根据自己的情况选择使用。
2007-02-04        增加与干扰码的兼容性修改。
2007-03-14        增加 Discuz!5.5 的安装方法,并测试成功。
名称:开卷工作室自动隐藏帖子[增强版] For Discuz! All Version
难度:一般
适用版本:Discuz!所有版本
作者:KaijuanStudio
发布日期:2006-11-07
更新日期:2007-03-14
发布站点:中国制造论坛
技术支持:http://madeinchn.cn/thread-4-13016-1-1.htm
安装方法如下:
修改:viewthread.php
打开:viewthread.php
DZ4.1,找到:
$post['message'] = discuzcode($post['message'], $post['smileyoff'], $post['bbcodeoff'], $post['htmlon'], $forum['allowsmilies'], $forum['allowbbcode'], $forum['allowimgcode'], $forum['allowhtml'], ($forum['jammer'] && $post['authorid'] != $discuz_uid ? 1 : 0));替换为:
$post['message'] = discuzcode($post['message'], $post['smileyoff'], $post['bbcodeoff'], $post['htmlon'], $forum['allowsmilies'], $forum['allowbbcode'], $forum['allowimgcode'], $forum['allowhtml'], ($forum['jammer'] && $post['authorid'] != $discuz_uid ? 1 : 0), $post['first']);DZ5.0,找到:
$post['message'] = discuzcode($post['message'], $post['smileyoff'], $post['bbcodeoff'], $post['htmlon'], $forum['allowsmilies'], $forum['allowbbcode'], ($forum['allowimgcode'] && $showimages ? 1 : 0), $forum['allowhtml'], ($forum['jammer'] && $post['authorid'] != $discuz_uid ? 1 : 0), $pasetype, $post['authorid']);替换为:
$post['message'] = discuzcode($post['message'], $post['smileyoff'], $post['bbcodeoff'], $post['htmlon'], $forum['allowsmilies'], $forum['allowbbcode'], ($forum['allowimgcode'] && $showimages ? 1 : 0), $forum['allowhtml'], ($forum['jammer'] && $post['authorid'] != $discuz_uid ? 1 : 0), $pasetype, $post['authorid'], $post['first']);DZ5.5,找到:
$post['message'] = discuzcode($post['message'], $post['smileyoff'], $post['bbcodeoff'], $post['htmlon'], $forum['allowsmilies'], $forum['allowbbcode'], ($forum['allowimgcode'] && $showimages ? 1 : 0), $forum['allowhtml'], ($forum['jammer'] && $post['authorid'] != $discuz_uid ? 1 : 0), 0, $post['authorid']);替换为:
$post['message'] = discuzcode($post['message'], $post['smileyoff'], $post['bbcodeoff'], $post['htmlon'], $forum['allowsmilies'], $forum['allowbbcode'], ($forum['allowimgcode'] && $showimages ? 1 : 0), $forum['allowhtml'], ($forum['jammer'] && $post['authorid'] != $discuz_uid ? 1 : 0), 0, $post['authorid'], $post['first']);
修改:discuzcode.func.php
打开:include\discuzcode.func.php
DZ4.1,找到:
function discuzcode($message, $smileyoff, $bbcodeoff, $htmlon = 0, $allowsmilies = 1, $allowbbcode = 1, $allowimgcode = 1, $allowhtml = 0, $jammer = 0) {替换为:
function discuzcode($message, $smileyoff, $bbcodeoff, $htmlon = 0, $allowsmilies = 1, $allowbbcode = 1, $allowimgcode = 1, $allowhtml = 0, $jammer = 0, $first = '0') {再将下面一行的:
        global $discuzcodes, $credits, $tid, $discuz_uid, $highlight, $maxsmilies, $db, $tablepre;替换为:
        global $discuzcodes, $credits, $fid, $tid, $discuz_uid, $highlight, $maxsmilies, $db, $tablepre, $hidemsg, $hidecut, $leavemod, $hidefids;
        $bbcodeoff = $hidemsg ? '' : $bbcodeoff;继续找到:
if(preg_match("/\[hide=?\d*\].+?\[\/hide\]/is", $message)) {替换为:
//hidemsg by KaijuanStudio
                if($hidefids) {
                        foreach($hidefids as $hidefid) {
                                if($leavemod) {
                                        if($fid == $hidefid) {
                                                $unallowed = 1;
                                        } else {
                                                $allowhide = 1;
                                        }
                                } else {
                                        if($fid == $hidefid) {
                                                $allowhide = 1;
                                        }
                                }
                        }
                } elseif($fid) {
                        $allowhide = 1;
                }
                if($hidemsg && $allowhide && !$unallowed) {
                        global $language;
                        include_once language('misc');
                        $hidefirst = $hidemsg == 1 ? $first : ($hidemsg == 2 ? 1 : ($hidemsg == 3 ? ($first ? '' : 1) : ''));
                        if($hidefirst) {
                                if($hidecut                                         $query = $db->query("SELECT pid FROM {$tablepre}posts WHERE tid='$tid' AND authorid='$discuz_uid' LIMIT 1");
                                        if($GLOBALS['forum']['ismoderator'] || $db->result($query, 0)) {
                                                $message = ''.$language['post_hide_reply'].'
'.
                                                '==============================

'.
                                                $message.'

'.
                                                '==============================';
                                        } else {
                                                $message = $hidecut ? ($hidecut >= strlen($message) ? $message : dhtmlspecialchars(cutstr($message, $hidecut)).'

'.$language['post_hide_reply_hidden'].'') : ''.$language['post_hide_reply_hidden'].'';
                                        }
                                }
                        } elseif(!$discuz_uid && $hidemsg == 4 && $hidecut) {
                                $message = $hidecut >= strlen($message) ? $message : dhtmlspecialchars(cutstr($message, $hidecut)).'

'.$language['post_hide_limit'];
                        }
                } elseif(preg_match("/\[hide=?\d*\].+?\[\/hide\]/is", $message)) {DZ5.0/DZ5.5,找到:
function discuzcode($message, $smileyoff, $bbcodeoff, $htmlon = 0, $allowsmilies = 1, $allowbbcode = 1, $allowimgcode = 1, $allowhtml = 0, $jammer = 0, $parsetype = '0', $authorid = '0') {替换为:
function discuzcode($message, $smileyoff, $bbcodeoff, $htmlon = 0, $allowsmilies = 1, $allowbbcode = 1, $allowimgcode = 1, $allowhtml = 0, $jammer = 0, $parsetype = '0', $authorid = '0', $first = '0') {DZ5.0 再将下面一行的:
        global $discuzcodes, $credits, $tid, $discuz_uid, $highlight, $maxsmilies, $db, $tablepre;替换为:
        global $discuzcodes, $credits, $fid, $tid, $discuz_uid, $highlight, $maxsmilies, $db, $tablepre, $hidemsg, $hidecut, $leavemod, $hidefids;
        $bbcodeoff = $hidemsg ? '' : $bbcodeoff;DZ5.5 将下面一行的:
        global $discuzcodes, $credits, $tid, $discuz_uid, $highlight, $maxsmilies, $db, $tablepre, $hideattach;替换为:
        global $discuzcodes, $credits, $fid, $tid, $discuz_uid, $highlight, $maxsmilies, $db, $tablepre, $hideattach, $hidemsg, $hidecut, $leavemod, $hidefids;
        $bbcodeoff = $hidemsg ? '' : $bbcodeoff;DZ5.0 继续找到:
if(!in_array($parsetype, array(1, 2)) && preg_match("/\[hide=?\d*\].+?\[\/hide\]/is", $message)) {替换为:
//hidemsg by KaijuanStudio
                if($hidefids) {
                        foreach($hidefids as $hidefid) {
                                if($leavemod) {
                                        if($fid == $hidefid) {
                                                $unallowed = 1;
                                        } else {
                                                $allowhide = 1;
                                        }
                                } else {
                                        if($fid == $hidefid) {
                                                $allowhide = 1;
                                        }
                                }
                        }
                } elseif($fid) {
                        $allowhide = 1;
                }
                if($hidemsg && $allowhide && !$unallowed) {
                        global $language;
                        include_once language('misc');
                        $hidefirst = $hidemsg == 1 ? $first : ($hidemsg == 2 ? 1 : ($hidemsg == 3 ? ($first ? '' : 1) : ''));
                        if($hidefirst) {
                                if($hidecut                                         $query = $db->query("SELECT pid FROM {$tablepre}posts WHERE tid='$tid' AND authorid='$discuz_uid' LIMIT 1");
                                        if($GLOBALS['forum']['ismoderator'] || $db->result($query, 0)) {
                                                $message = ''.$language['post_hide_reply'].'
'.
                                                '==============================

'.
                                                $message.'

'.
                                                '==============================';
                                        } else {
                                                $message = $hidecut ? ($hidecut >= strlen($message) ? $message : dhtmlspecialchars(cutstr($message, $hidecut)).'

'.$language['post_hide_reply_hidden'].'') : ''.$language['post_hide_reply_hidden'].'';
                                        }
                                }
                        } elseif(!$discuz_uid && $hidemsg == 4 && $hidecut) {
                                $message = $hidecut >= strlen($message) ? $message : dhtmlspecialchars(cutstr($message, $hidecut)).'

'.$language['post_hide_limit'];
                        }
                } elseif(!in_array($parsetype, array(1, 2)) && preg_match("/\[hide=?\d*\].+?\[\/hide\]/is", $message)) {DZ5.5 继续找到:
if($parsetype != 1 && preg_match("/\[hide=?\d*\].+?\[\/hide\]/is", $message)) {替换为:
//hidemsg by KaijuanStudio
                if($hidefids) {
                        foreach($hidefids as $hidefid) {
                                if($leavemod) {
                                        if($fid == $hidefid) {
                                                $unallowed = 1;
                                        } else {
                                                $allowhide = 1;
                                        }
                                } else {
                                        if($fid == $hidefid) {
                                                $allowhide = 1;
                                        }
                                }
                        }
                } elseif($fid) {
                        $allowhide = 1;
                }
                if($hidemsg && $allowhide && !$unallowed) {
                        global $language;
                        include_once language('misc');
                        $hidefirst = $hidemsg == 1 ? $first : ($hidemsg == 2 ? 1 : ($hidemsg == 3 ? ($first ? '' : 1) : ''));
                        if($hidefirst) {
                                if($hidecut                                         $query = $db->query("SELECT pid FROM {$tablepre}posts WHERE tid='$tid' AND authorid='$discuz_uid' LIMIT 1");
                                        if($GLOBALS['forum']['ismoderator'] || $db->result($query, 0)) {
                                                $message = ''.$language['post_hide_reply'].'
'.
                                                '==============================

'.
                                                $message.'

'.
                                                '==============================';
                                        } else {
                                                $message = $hidecut ? ($hidecut >= strlen($message) ? $message : dhtmlspecialchars(cutstr($message, $hidecut)).'

'.$language['post_hide_reply_hidden'].'') : ''.$language['post_hide_reply_hidden'].'';
                                        }
                                }
                        } elseif(!$discuz_uid && $hidemsg == 4 && $hidecut) {
                                $message = $hidecut >= strlen($message) ? $message : dhtmlspecialchars(cutstr($message, $hidecut)).'

'.$language['post_hide_limit'];
                        }
                } elseif($parsetype != 1 && preg_match("/\[hide=?\d*\].+?\[\/hide\]/is", $message)) {
解决文本截断后代码错乱问题 (DZ4.1/DZ5.0/DZ5.5 相同)
解决方法一(推荐):
将上面已修改好的代码,选择从:
//hidemsg by KaijuanStudio开头,一直到:
                        $message = preg_replace("/\[hide=(\d+)\]\s*(.+?)\s*\[\/hide\]/ies", "creditshide(\\1,'\\2')", $message);
                }结尾的所有代码,然后将这一大段代码移动到:
if(!$bbcodeoff && $allowbbcode) {的下面一行里。
  这一方法最为简单,适用于没有启用 HTML 代码的论坛,对于文本截断末尾出现诸如没有闭合的代码,例如缺少:[/quote]、[/url]、[/img] 的内容,将以代码的方式显示。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/318108.htmlTechArticle前言 应一位网友要求开卷工作室制作了这个自动隐藏帖子的插件,主要用途是无需手动添加[hide]代码,则自动隐藏所有发布的帖子内容,会...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

WeChatの友達をブロックしたり削除したりせずに非表示にする方法は? WeChatの友達をブロックしたり削除せずに非表示にする方法 WeChatの友達をブロックしたり削除したりせずに非表示にする方法は? WeChatの友達をブロックしたり削除せずに非表示にする方法 Mar 13, 2024 pm 07:19 PM

WeChatの友達をブロックしたり削除したりせずに非表示にする方法は?友達を非表示にしたいが、その方法がわからないユーザーが多いため、このサイトでは、WeChat の友達をブロックしたり削除したりせずに非表示にする方法をユーザーに丁寧に紹介します。ブロックや削除せずに WeChat の友達を非表示にする方法 方法 1: 1. まず WeChat ソフトウェアを開き、WeChat ページでアドレス帳を見つけて、「マイ」をクリックします。 2. 次に、設定ページに入ります。 3. 「プライバシー」オプションを見つけてクリックします。 4. 次に、「彼に見せない」をクリックします。 5. [彼女に表示させない] ページに移動し、[+] をクリックして非表示にしたい友達にチェックを入れます。

Douyinショートビデオの作品を非表示にする方法 個人的なビデオ作品を非表示にする方法 Douyinショートビデオの作品を非表示にする方法 個人的なビデオ作品を非表示にする方法 Mar 12, 2024 pm 12:49 PM

Douyinショートビデオアプリソフトには多数のショートビデオ作品が用意されており、好きなだけ視聴することができ、全て永久無料で提供されています。さまざまなタイプのライブビデオチャンネルがオープンしており、ビデオコンテンツはすべてオリジナルです。誰もが最も満足できる視聴方法を提供します。アカウントを入力してオンラインにログインすると、誰もが毎日視聴している動画に基づいて正確に推奨される、さまざまな刺激的なショートビデオがプッシュされます。また、生放送ルームに入ってアンカーと対話したりチャットしたりすることもできます。もっと幸せに。個人がアップロードした作品も非表示にすることができます。設定はワンクリックで非常に簡単です。スワイプするとどこからでも見ることができます。上下にスワイプすると、無数のネチズンのリアルタイムのコメントが表示されます。日常生活のダイナミクスを共有することもできます。編集者は詳細なオンライン Douyin ショート ビデオを公開しており、ユーザーは個人のビデオ作品を非表示にする方法を求めています。最初に公開された Douyin のショートビデオ

Edge ブラウザがこのプラグインをサポートしない理由に対する 3 つの解決策を共有します Edge ブラウザがこのプラグインをサポートしない理由に対する 3 つの解決策を共有します Mar 13, 2024 pm 04:34 PM

ユーザーが Edge ブラウザを使用する場合、より多くのニーズを満たすためにいくつかのプラグインを追加する場合があります。しかし、プラグインを追加すると、このプラグインはサポートされていないと表示されます。この問題を解決するにはどうすればよいですか?今日は編集者が 3 つの解決策を紹介しますので、ぜひ試してみてください。方法 1: 別のブラウザを使用してみてください。方法 2: ブラウザ上の Flash Player が古いか見つからないため、プラグインがサポートされていない可能性があり、公式 Web サイトから最新バージョンをダウンロードできます。方法3:「Ctrl+Shift+Delete」キーを同時に押します。 「データを消去」をクリックしてブラウザを再度開きます。

Xiaomi Mi 14でスマートアイランドを非表示にする方法は? Xiaomi Mi 14でスマートアイランドを非表示にする方法は? Mar 18, 2024 pm 03:40 PM

Xiaomi Mi 14は、驚くべきハードウェア構成と優れた機能に加えて、スマートアイランドという魅力的な場所も隠しています。ここでは、ユーザーはパーソナライズされたカスタマイズと無制限のクリエイティブな携帯電話体験を楽しむことができます。しかし、誰もがこの機能を好むわけではないので、Xiaomi Mi 14はどうやってスマートアイランドを隠すのでしょうか?一緒に調べてみましょう。 Xiaomi Mi 14でスマートアイランドを非表示にする方法は? 1. Xiaomi 14 携帯電話の設定アプリケーションを開きます。 2. スクロールして「機能」オプションを見つけ、クリックして入力します。 3. 機能ページで「スマートアイランドを非表示」オプションを見つけてオンにします。 4. スマート アイランドの非表示がオンになっていることを確認した後、デスクトップに戻ると、スマート アイランドが非表示になっていることがわかります。

Douyin での作品の非表示に関する詳細なチュートリアル Douyin での作品の非表示に関する詳細なチュートリアル Mar 25, 2024 pm 03:11 PM

1.まず[+]をクリックして撮影します。 2. 右下のチェックマークをクリックして撮影完了を確認します。 [次へ]をクリックし、3. [閲覧できるユーザー]をクリックします。 [プライベート] を選択するだけです シナリオ 2: 作品が取得されました 1. [自分] をクリックし、[仕事] を選択します。 2. 右側の[3 点]のロゴをクリックします。 3. 左にスワイプして [権限設定] を見つけます。 4. [非公開に設定] をクリックします。

Discuz ユーザーの必需品です。プロップの名前変更を徹底分析! Discuz ユーザーの必需品です。プロップの名前変更を徹底分析! Mar 12, 2024 pm 10:15 PM

Discuz ユーザーの必需品です。プロップの名前変更を徹底分析! Discuz フォーラムでは、名前変更機能が常にユーザーから大きな注目と要望を集めてきました。名前を変更する必要がある一部のユーザーにとって、名前変更プロップを使用するとユーザー名を簡単に変更でき、これも興味深い対話方法です。 Discuz の名前変更プロパティについて、入手方法、使用方法、一般的な問題の解決策などを詳しく見てみましょう。 1. Discuz で名前変更用小道具を入手します。名前変更用小道具は通常、ポイントまたは管理者を通じて購入します。

携帯電話に隠されたジャンクを徹底的にクリーンアップする方法 (携帯電話のメモリからジャンクを完全に削除します) 携帯電話に隠されたジャンクを徹底的にクリーンアップする方法 (携帯電話のメモリからジャンクを完全に削除します) Jun 01, 2024 am 09:29 AM

テクノロジーの進化とスマートフォンの普及により、携帯電話は私たちの日常生活に欠かせないものになりました。ただし、これらのジャンク ファイルは貴重なストレージ スペースを占有し、時間が経つにつれて、大量の隠れたジャンクが電話機内に蓄積され、電話機のパフォーマンス低下の原因となります。携帯電話に隠されたジャンクを徹底的にクリーンアップする方法を知ることは、すべての携帯電話ユーザーにとって必須の知識となっています。 1. 不要なアプリケーション キャッシュを見つけてクリアする 2. 使用しなくなったアプリケーションを削除する 3. 写真とビデオのキャッシュをクリーンアップする 4. 一時ファイルとダウンロード フォルダーを徹底的にクリーンアップする 5. 連絡先とテキスト メッセージの記録を整理してクリーンアップする 6. システム キャッシュをクリーンアップする 7.不要なシステム アプリケーションをアンインストールします。 8. ブラウザのキャッシュと履歴を削除します。 9. 無効な音楽およびオーディオ ファイルを削除します。 10. 携帯電話のファイル システムを最適化します。

Linux でのドライブの自動マウント Linux でのドライブの自動マウント Mar 20, 2024 am 11:30 AM

Linux オペレーティング システムを使用していて、システムが起動時にドライブを自動的にマウントするようにしたい場合は、デバイスの一意の識別子 (UID) とマウント ポイントのパスを fstab 構成ファイルに追加することでこれを行うことができます。 fstab は、/etc ディレクトリにあるファイル システム テーブル ファイルで、システムの起動時にマウントする必要があるファイル システムに関する情報が含まれています。 fstab ファイルを編集すると、システムを起動するたびに必要なドライブが正しくロードされるようになり、システムの安定した動作が保証されます。ドライバーの自動マウントはさまざまな場面で便利に使えます。たとえば、システムを外部ストレージ デバイスにバックアップする予定です。自動化を実現するには、起動時であってもデバイスがシステムに接続されたままであることを確認してください。同様に、多くのアプリケーションは直接

See all articles