投票のアップ/ダウンとユーザーカルマ(新しいDrupalistの楽しい感情)の直感的な改良

画像 Drupal 6のカルマ計算アルゴリズムとユーザー評価を改善するために、今日行われた成功した作業(直感的なレベル)の喜びを共有したいと思います。 私のような初心者にとって有用であり、Drupalの開発における最初の困難を克服する助けになることを願っています。 すぐに記事の一番下に行き、「待望の成績とカルマ」という見出しまでスクロールしたい人。







WebプログラミングとCMSの最初の紹介





1年以上の間、私はCMSのような概念に精通しています。 Joomlaにいくつかの通常の(機能的で、多様で、ユーザーに人気のある)サイトを作成しました。最初は1.10、次に1.5(まだ1.6に到達していませんでした)。 さらに、私は常に標準的なメカニズムのみを使用しました。 プラグインのもの(モジュール、プラグイン、コンポーネント)は、元のバージョンでのみ設定されます。 彼は、テンプレート(テーマ)とCSSのプローブのみを許可しました。 私はこれ以上どこにも行かなかった。



私はOOPの基本を非常によく知っていますが、これらの原則のWebベースのアプリケーションに出会ったことはありません。 原則は非常に似ており、明確です。 ほとんどの問題は、おそらく用語の違いによるものです。 「Drupal APIを教える」というフレーズは、長い間私を怖がらせました。 または、フックという言葉-「トラップ、フック」。 しかし、フックが本質的にイベントハンドラーであることが明らかになったとき、すぐに簡単で理解しやすくなりました。



実行可能コードの特殊なインクルード<?php ..... ?>



htmlページの内部もまた、私にとってこの新しい言語の構文と同様に、珍しいものです。 頭脳の地理的な断片化は珍しいことです。スクリプトとテーマは1か所でそのままで、サイトの基本情報を作成するデータベースはまったく別の国にある可能性があります。 そして、そこから文字列を引き出してページを編む必要があります。 ほとんどのコースは自動的に行われますが、それでも...



なぜJumlaをcheしたのか





脳の怠から、そしてアヒルの子の原則に従って、私はJumla以外には一切関わらないように最善を尽くしました。 しかし、優れた投票オプションを備えた集合的なブログを作成することになると、Drupalの方が優れているという結論に達しました。 むしろ、理想的ですが、Jumlaはまったく適合しません(少なくとも、これら2つのCMSに接続されたコンポーネントの多数の比較と説明を研究した後、私は確信しました)。



完全にゼロ、取るに足りない、処理され、トピックに入力する必要がある多くの不明瞭な情報によって殺され、押しつぶされたと感じるとき、根本的に新しいものと知り合いになります。 私のアドレナリンはすでに、私が夜眠ることができない私の血に注いでいます。 (しかし、私はこれを効果的に行っていると自負していませんが、感情的にのみです)。



Drupalの学習と並行して、PHPを学び、jQueryに精通し始め、SQLのレッスンを思い出しました。 最初は、さまざまなモジュールの説明を読んで、それらを1つずつ接続してテストしていました。 そして、APIの調査を開始し、モジュールを作成しました(最初のレッスンで、現在は元のモジュールを完成させています)。





待望のグレードとカルマ





すぐに投票アップ/ダウンをインストールしました。 ああ、それは私が必要としていたものです! ノード、コメント、タグ(分類のセクション)に投票できます。



その後、タスクは評価を蓄積し、それらをユーザー評価の1桁にマージすることでした。 選択はユーザーKarmaに委ねられました 。 このモジュールにより、ユーザーのアクションに応じて特定のアルゴリズムに従ってスコアを設定し、設定された有意係数を介して投票するというアイデアを完全に実現することができました。



たとえば、私のアルゴリズムによれば、評価ブーケは次のような花で構成されています。



評価(評判)= VoicesZaNodes * 3 + VoicesZaComment * 1 + AdditionNode * 1 +左の評価* 0.2



自分で合計金額を選択し、ペンでその重要度の係数を指定します。 また、推定値が消えるまでの日数を設定することもできます(ただし、実際の生活で苦しめられた格付けとインフレには申し訳ありませんでした)。



しかし、最近Habréに登録したので、ここにあるカルマメカニズムを繰り返したいと思いました。 コミュニティのサポートの尺度です。 何人の人があなたに賛成し、何人があなたに反対しています。 一部の素材の声ではなく、あなたの個性の声。 誰でも1つのプラスまたはマイナスを与えることができます。 そして一度だけ。



Runetを少しグーグルで動かしてみたところ、(投票のアップ/ダウンを決定する)望ましい解決策が見つからなかったため、トレーニングの目的でモジュールがどのように機能するかを理解することにしました。 そして、私はすぐに、すべての種類の投票について、フォルダーvud_node、vud_comment、vud_termにサブモジュールがあることに気付きました。 Googleでvud_userと入力すると、必要なものが見つかりました。



今年の1月に、1人のユーザーがユーザーへの投票の問題を提起しました。VoteUpDownの開発者は、Drupal 6にはこの機会を実装しないと答え、7番目のバージョンでは、任意の分野のマテリアルに投票する予定です(私は理解していますが、私の英語を信頼してください。)。



2月に、コメントの1人がサブモジュールvud_userを投稿しました。彼が言うように、vud_commentモジュールから作成しました。 私はそれをダウンロードし、Habréのカルマと同じように私から獲得しました。



しかし、その後、私の喜びは深い思考に取って代わりました。 確かに、考えられた評判の論理によると、ユーザーの声もそれに影響を与え、非常に重くなります。 そのためには、ユーザーKarmaを改良する必要があります。



私の内なる本能は、(小さな自家製のものの)そのような洗練を見つける可能性は低いと私に告げたので、直感だけに頼って、私にとって奇妙な動きをしました。



ユーザーKarmaモジュールは4つのサブモジュールで構成されていました。

user_karma_receive_vote_node //-ノードに投票するときのポイント

user_karma_receive_vote_comment-コメントに投票してください

user_karma_insert_node-記事の追加

user_karma_give_vote-材料の評価



最初の1つを取得し、論理的に_receive_vote_nodeに適しており、このサブモジュールに関連するすべてのファイルをコピーしました。 また、名前の単語ノードはユーザーに置き換えられました。



これらのファイルを入力したら、「検索-置換」ノード--->ユーザーを作成しました。



そして、それらをサイトにインストールしました。 新しいサブモジュール_receive_vote_nodeがモジュール(管理者)セクションに登場しました。 オンにしました。 また、ユーザーKarmaの設定では、「ユーザー投票」という新しい用語が登場しました。 私は彼に10の係数を与えました。私はすぐにランダムなユーザーのプロファイルに入り、彼の評価を以前に覚えていました。 私は彼に賛成票を投じ、更新しました。評判が10上昇するのを見越して。



SQLは、テーブル{user}が存在せず、nidフィールドが存在しないことをDrupalに誓い始めました。 それぞれ{users}とuidで修正しました。



そしてそれは私のために働いた! ちょうど私が望んだ方法! 現在、ユーザーのプロフィールに投票する価値があります。ユーザーの評価が+10になります(または-10になります)。



だから、私のカルマ博士を要約する...実験。



Vote Up / Downは、Ajaxを介したカオスツールを介して効果的に機能し、ユーザーの前で評価を変更する投票ボタンを記事、コメント、および分類用語に追加します。 賛成票/反対票も、評価を棚にきちんとデータベースに入れます(user1から、この記事の午前7時から30時などのコメントusera2を差し引いたものなど)。 次に、この情報を使用して、たとえば、匿名のマイナス未成年者、不適切なプラスの男性、普通の人を計算したり、カルマで激しくカルマをした多くの人々に投票結果を売ったり、彼らは知りたいと思っています。 」



ユーザーKarmaは、すべての評価を1つの数値に集約します。これはユーザーに固定されます。 これは国のGDPについてです。 ワシャおじさんはジャガイモ3袋を掘り、アブラモビッチはダイヤモンド50トンを掘り、VAZは10万カリンを集め、メガホンはスカイプのために200万ドルを失いました-それは非常に多くの異なる数字のように見えますが、最終的に私たちはすべての合計を取得します共同の努力。 2010年のロシアのGDP 10億ルーブルに達しました。 そして、ノード、コメント、ジャガイモ、ダイアモンドに関するこれらの長所と短所はすべて、結果としてロシアに起因し、その成功の指標としてさまざまなレポートに表示されます。



なぜなら モジュールをやり直そうとする最初の試みでしたが、ほんの数回のキーストロークで、本格的な構成オプションを備えたサブモジュール全体を作成したことが何よりも印象的でした。 これらの問題に私がどれほど新しいかを考えると、私も共有したかった幸福感に直接打ち勝たれました。



この話の教訓は、「これが、関数名と適切に設計されたAPIの普遍化がもたらすものだ」と私は思う。 Drupalでは、すべてが非常に厳格で思慮深いものです。 初心者の方は恐れず、APIロジックを習得してください。そうすれば、すぐにWebプログラミングで驚異的な仕事をすることができます。



私自身もDrupalとHabréの両方の初心者であると考えると、ここで書く機会を逃すことができなければ嬉しいですし、まだ理解していないいくつかのことを理解するためのヒントもあります。 ご清聴ありがとうございました。



まあ、何よりも、Drupalを学ぶのを手伝ってくれる経験豊富な友人を作ることを夢見ています。



All Articles