RosYamaのbitrixフリーフォークを開発するためのヒント

RosYamaのソースを開いたとき、私は公共のinりの1つのトピックを期待していました-Bitrixでそれをやったことです。 2番目の、予想外の大衆の怒りのトピックは、Greensightの開発者がgitではなくmercurialを使用することです。 私が言ったように、これには特定の組織的な困難があります。 私は小屋から汚れたリネンを取り出して詳細に入りませんが、遅かれ早かれこれらの問題はすべて解決され、すべてがニシュタクになることを明確にします。 RosYamaにはgithub.comに1つの公式リポジトリがあり、そこからコミュニティによって提案された変更は、すべてのテストと承認の厄介な道を通り、産業用サーバーに送られます。 いつかそうなるでしょう。



そして、最初のポイントであるBitrixについて、詳しく説明します。 RosYamaはBitrixモジュールとして作成され、さらに、Rosyamコンポーネントとテンプレートがまだあります。 さらに、RosYamaはBitrix管理パネルにもはんだ付けされています。 一般的に、それはそこで非常に緊密に統合されており、すでに述べたように、他のプラットフォームに転送するためにBitrixからルート化するのは容易ではありません。 しかし、それは可能です。 誰でもプロジェクトのBitrixフリーフォークを作成し、RosYamaを別のプラットフォームに移行することができます。 そして、いくつかの困難に直面します。



最初の困難は根こそぎです。 RosYamaの機能の一部は、Bitrixに非常に密接に関連付けられており、それなしでは機能しません。これらの部分は完全に書き換える必要があります。 2番目の問題は、プロジェクトのメインブランチからの変更とフォークの変更をマージすることです。 コードの一部が書き直されるため、変更の一部が耐えられなくなる可能性があります。 実際、この理由から、RosYamaを最初に書き直そうとせず、Bitrixをエミュレートするが、実際には選択されたプラットフォームのインターフェースで動作する何らかのアダプターを書くことを愛好家に勧めることができます。 確かにこのアダプターは他の誰かにとって有用です。 私は喜んで開発のあらゆる支援をします-私に電話してください。



RosYamaモジュールは、ほぼすべての場所でデータベースからの「穴」を抽象化する静的関数を使用してクラスを記述します(Greensight開発者の誰もが誘惑に抵抗できず、どこかで電話をかけられなかったからです。 mysql_query())は、ピットのリストの取得、追加、削除などを行っています。 API関数もあります。 ピットの変更に関連するすべて-更新、ステータスの変更、削除などは、内部API呼び出しによって行われます。 これは、1箇所で修正する必要があるように行われます。 内部API呼び出しは、それほど高品質ではなく、ガタガタするフェンスのクソの柱として実装されましたが、歴史的に起こりました。 モジュールに記述されている関数は、コンポーネントから呼び出されます。 コンポーネント内部では、取得したデータがわずかに消化され、テンプレートにアップロードされます。



モジュールが正常に機能するようにするには、少なくとも$ DBオブジェクト(少なくともQuery、StartTransaction、Rollback、Commit、LastID関数)および$ USER(少なくともLogin、Logout、IsAdmin、Authorize、GetID、GetByID関​​数)の偽クラスを実装する必要があります)、CModule :: IncludeModule()のスタブ、および$ DB-> Query()を返すオブジェクトのFetch関数。 「少なくとも」と言うのは、他に何もする必要がないかどうかわからないからです。



コンポーネントは、Bitrixにより深く統合されています。 ユーザープロファイルのコンポーネントを完全に書き換えて、ターゲットプラットフォームと同じような意味で基本的に残りのコンポーネントを部分的に書き換えることをお勧めしますが、私の意見では、あまり強くはありませんが、いくつかの場所では。 公開部分はそれほど重要ではないので、より強力にやり直すことができます(news、faq)が、ここでは$ APPLICATION-> IncludeCompoment()のバージョンを実装する必要があります。 テンプレートの統合に問題はありません。ヘッダー、フッター、スクリプトとcssのみがあります。コンポーネントテンプレートにも問題はありません。Bitrixにはテンプレートフォルダーのscript.jsファイルとstyle.cssファイルが自動的に含まれることに注意してくださいコンポーネント。 まあ、管理パネル(ホールのリストを編集する)は、必要な場合は完全に書き換える必要があります-管理者は、パブリック部分から直接バッチでホールを削除できます。



うーん、私はほとんど忘れていました。 ロシア連邦の構成事業体の交通警察署長と検察庁のフルネームのディレクトリは情報ブロックに保存されています。つまり、それらを別の保管場所に転送する必要があり、テーブルを分離し、コード内の対応する場所を修正し、パーサーをやり直し、政府機関のウェブサイトから適切な情報を選択し、ディレクトリを更新する必要があります。



すべてが一見超自然的に見えるように見えますが、実際はこれはドフィガです。



All Articles