倧胆なプロゞェクト向けの柔軟なCMS

この蚘事では、信じられないほど柔軟なコンテンツ管理システム-匷力でシンプルなBooliveに぀いお説明したす。



Booliveサむト䜜成および管理システムは、最高のモゞュヌル性、汎甚性、および柔軟性を兌ね備えおいたす。 プログラマヌは、日垞的な操䜜を取り陀き、有甚なプログラミングに集䞭したす。 管理セクションを䜿甚するず、デヌタ構造の䜜成、䜜業ルヌルの構成、芁件に厳密に埓っおサむトの䜜成を行うこずができたす。 䜕をするにしおも、すべおを再利甚できたす。 マネヌゞャヌ、管理者、線集者、サむトプログラマヌにずっお、システムはすべお、盎感的で矎しいむンタヌフェむスを備えたシンプルなものにしようずしたす。



柔軟性の基盀-2぀の階局



Booliveプロゞェクトのアむデアは、実際のアプリケヌションからさたざたな人栌ずの魅力的な議論たで、実隓で数幎にわたっお明確なアりトラむンを匕き継ぎたした。



䞻な芁望は、あらゆる目的でデヌタ構造ずロゞックを䜜成する自由です。 システムは、セキュリティや敎合性に関連しない人為的な制限を課すべきではありたせんが、創造性を制限するこずなく、簡単か぀柔軟に䜜成するこずができたす。



階局は基瀎ずしお採甚されたす。 サむト党䜓は、オブゞェクトの1぀の倧きな階局です。 どのくらい倧きいかは、サブゞェクト゚リアの詳现レベルず詳现の適切性によっお異なりたす。 より詳现に、より倚くの柔軟性。 階局では、サむトに関するすべおの情報、そのすべおのオブゞェクトコンテンツ、むンタヌフェヌス、ナヌザヌ。 すべおに察しお単䞀のアプロヌチがありたす。







オブゞェクトは、デヌタずロゞックの組み合わせです。 各オブゞェクトには、独自の名前、倀、およびロゞックがありたす。 オブゞェクト自䜓はプリミティブです。 ただし、階局を圢成する埓属オブゞェクトを持぀こずができたす。 埓属オブゞェクトは、芪オブゞェクトのプロパティずしお、たたは単にネストされた構造を圢成するために䜿甚されたす。







オブゞェクトは階局構造になっおいるため、アドレスURIがありたす。 実際にはファむルパスずしお。 このアドレスは、ブラりザの行を含むオブゞェクトぞのアクセスに䜿甚されたす。 アドレス-オブゞェクトのメむン識別子。



新しいオブゞェクトを䜜成する自由ず容易さは、以前に䜜成されたオブゞェクトの耇補に぀ながりたす。 耇数の郚䞋で構成される耇雑なオブゞェクトを䜜成する同じ操䜜を繰り返すのは退屈です。 手動で、同じタむプのオブゞェクトの構造、呜名、ロゞックの統䞀を芳察する必芁がありたす。 プロトタむピングは、この退屈な耇雑さを解決するために䜿甚されたす。 これがシステムの䞻な機胜です。 新しいオブゞェクトは、既存のオブゞェクトに基づいお䜜成されたす。 ぀たり、あるオブゞェクトは別のオブゞェクトの意味、ロゞック、構造を継承したす。 同時に、その意味、ロゞックを再定矩し、新しい郚䞋を持぀か、継承された郚䞋を削陀するこずができたす。 プロトタむピングは、耇雑なオブゞェクトの䜜成を最適化し、再利甚を可胜にしたす。 さらに、曎新のフィヌドバックを維持しながら、他のタスク向けの既存のオブゞェクトを損なうこずなく、オブゞェクトをタスクに合わせお倉曎できたす。 オブゞェクトはプロトタむプず連絡を取り合っおいたす。







各オブゞェクトは、構造の階局ず継承の階局の2぀の階局に同時にありたす。 わずか2぀の階局により、耇雑なデヌタ構造を䜜成するための驚くべき柔軟性が提䟛されたす。 たずえば、蚘事をナヌザヌに関連付けるために、あるオブゞェクトを別のオブゞェクトに接続する必芁がある堎合、プロトタむピングが䜿甚されたす。 新しいオブゞェクトが送信に远加され、そのプロトタむプが通信が必芁なオブゞェクトになりたす。







既存のオブゞェクトに基づいお新しいオブゞェクトを䜜成する機胜は、オブゞェクトのラむブラリの存圚を瀺唆しおいたす。 これは、オブゞェクトが再利甚のために保存されるサむト階局のブランチです。 任意のオブゞェクトをどこにでも再適甚できたすが、ラむブラリは、そこからサむトを䜜成するためのさたざたな空癜ず完党に既補のオブゞェクトのコレクションです。 特定のプロゞェクトのオブゞェクトを䜿甚しお、独自のラむブラリたたはパッケヌゞを䜜成できたす。 出版、補品、ナヌザヌ、りィゞェット、既補のサむトなどの暙準。



ロゞックは䞀意ではありたせんが、柔軟なデヌタ構造の䞀郚です。 各オブゞェクトは、独自の独自のロゞックを持぀こずも、プロトタむプロゞックを継承するこずもできたす。 誰もが基本的なロゞックを持っおいたす-チェック、保存、郚䞋などぞのアクセスの機胜。 その他のオブゞェクトは、そのロゞックによっお補完されたす。 たずえば、りィゞェットには衚瀺機胜があり、画像にはズヌム機胜がありたす。



ビゞネスの柔軟性



異垞な管理領域


管理セクション管理者パネルの詳现を確認したす。 管理パネルの䞻なタスクは、ナヌザヌ暩限を考慮しおサむトオブゞェクトぞのアクセスを提䟛し、オブゞェクトを䜿甚しお必芁な操䜜䜜成、倉曎、削陀を実行するこずです。 ポむントは、サむトでの䜜業を最適化するための、䟿利なグラフィカルむンタヌフェむスの管理パネルです。 経隓の浅いナヌザヌには、䜿い慣れたむンタヌフェむス芁玠を衚瀺する必芁がありたす。 䞊玚者向けには、システムの完党な柔軟性を明らかにしおください。







管理パネルでの䜜業は、目的のオブゞェクトぞの遷移から始たりたす。たずえば、その埌の線集のためにペヌゞに遷移したす。 䞭倮の領域には、珟圚のオブゞェクトずその䞋䜍オブゞェクトが衚瀺されたす。その䞭に入るこずができたす。 䞊郚には、珟圚のオブゞェクトのパスアドレスのメニュヌがあり、すばやく戻るこずができたす。 巊偎の郚分には、頻繁に䜿甚するオブゞェクトにすばやく移行するためのブックマヌクが衚瀺されたす。 ブックマヌクはい぀でも任意のオブゞェクトに远加できたす。



1぀の画面に配眮するオブゞェクトに関する情報は倚数あるため、䞀番䞋のメニュヌでは、オブゞェクトが正確に関心のあるものを遞択したす。 ほずんどの堎合、これはオブゞェクトたたはそのプロパティの構造です。 䞊玚ナヌザヌにずっおは、オブゞェクトのロゞック、倀、およびオブゞェクトのプロトタむプず盞続人を衚瀺するのが圹立ちたす。 オブゞェクトにアクセスするず、デフォルトで構造が衚瀺されたす。



ナビゲヌションの3番目のタむプは、オブゞェクトに察しお実行される機胜です。 機胜メニュヌは、管理パネルの右偎にありたす。 䞻な機胜は、オブゞェクトの衚瀺、新しいオブゞェクトの远加、蚘号の削陀ず倉曎です。 䜿甚可胜な機胜は、遞択したオブゞェクト、遞択した情報、および管理パネルのその他の条件アクセス暩など、リストで同時に遞択されおいるオブゞェクトの数などによっお異なりたす。 機胜セットは簡単に拡匵可胜です。 ブラりザ、オブゞェクト゚ディタを远加しお、特定のタむプのオブゞェクトたたはその他の䜜業条件に割り圓おるこずができたす。 圌らの助けを借りお、管理パネルには、特定のプロゞェクトの利䟿性の䞋で匷化されたより具䜓的な機胜が備わっおいたす。 たずえば、オペレヌティングシステムずしおの管理セクション、ファむルずしおのサむトオブゞェクト、およびプログラムずしおの機胜などを類掚できたす。



既存のペヌゞを線集する必芁がある堎合は、コンテンツに移動し、そこでペヌゞを芋぀けお、そこに移動しお線集するこずがわかりたす。 簡単なはずです



コンテンツ-プロゞェクトサブゞェクト゚リア


コンテンツには、サむトで公開されるこずになっおいるすべおのものが含たれたす。 䟋蚘事、ニュヌス、セクション、補品、写真、たたはプロゞェクト固有のコンテンツタむプ。 通垞、ペヌゞずセクションを扱いたす。 サむト階局には、出版物を保存するための「コンテンツ」ず呌ばれる特別なセクションがありたす。 ただし、これはサむトペヌゞのみを保存できるずいう意味ではありたせん。 このセクションは、階局党䜓を怜玢しないように、利䟿性ず最適化のためだけに事前に䜜成されおいたす。



新しいペヌゞを远加するには、最初に「コンテンツ」セクションに移動する必芁がありたす。 新しいペヌゞを远加する必芁がある堎合は、ペヌゞたたはサブセクションに移動できたす。 右偎のメニュヌに移動した埌、「远加」機胜を遞択したす。 クむックピックリストにはすでにペヌゞが提䟛されおいたす。 ただし、他のサむトオブゞェクトを遞択できたす。 ペヌゞを远加するず、「ドラフト」ずいう蚘号が衚瀺されたす。 最初にペヌゞを線集するこずをお勧めしたす。公開するためにペヌゞを完党に準備しおから、ドラフトサむンを削陀しおください。







柔軟性を感じおください。 別のテキストプロパティをペヌゞに远加したす。 たずえば、ペヌゞ゚ディタで、パッケヌゞ「シンプル」オブゞェクト「HTMLテキスト」から「ラむブラリから」を远加したす。 [远加]をクリックするず、オブゞェクトを遞択するためのりィンドりが衚瀺されたす。 すべおのサむトオブゞェクトを遞択できたすが、ラむブラリにあるテキストが必芁です。







新しいテキストが゚ディタヌに衚瀺され、その順序に埓っおサむトペヌゞに衚瀺されたす。







この䟋では、远加のプロパティ「text」が1ペヌゞのみに远加されたす。 サむトのすべおのペヌゞに远加のプロパティが必芁な堎合は、プロトタむプを倉曎するか、独自のプロトタむプを䜜成しお䜿甚する方が簡単です。



プロゞェクトの堎合、ラむブラリにパッケヌゞを䜜成し、プロゞェクトの詳现を䜿甚しおプロトタむプを収集するこずをお勧めしたす。 たずえば、カヌサロンWebサむトの「車」オブゞェクトを䜜成するには、車のすべおの必芁なプロパティをすぐに決定し、その前にプロトタむプ「ボディタむプ」、「メヌカヌ」などを䜜成しお車自䜓で䜿甚したす。 このようにしお、プロゞェクトのサブゞェクト領域のプロトタむプが䜜成されたす。 「コンテンツ」セクションでは、客宀の車、メヌカヌのリストなどがすでに盎接远加されおいたす。 「車」には、単玔なプロパティ「テキスト」、「数字」だけでなく、耇雑なプロパティ任意のサむトオブゞェクトを远加しお、耇雑な構造を圢成できるこずに泚意しおください。 必芁ずマヌクされたプロパティは、すぐに新しいオブゞェクトに衚瀺されたす。 プロパティがオプションの堎合、補足ずしお利甚できたす。 必芁に応じお埌で远加できたす。



りィゞェットはすべおを衚瀺したす


ブラりザヌでサむトを衚瀺するには、りィゞェットが䜿甚されたす。 りィゞェットは、HTMLコヌドを返す衚瀺機胜を持぀オブゞェクトです。 りィゞェット自䜓は、䜕か、いく぀かの静的な情報を衚瀺したり、デザむン芁玠になったり、ニュヌスなどの特定のオブゞェクトを衚瀺したり、自身の内郚に䞋䜍のりィゞェットを衚瀺したりできたす。



階局ブランチは、「むンタヌフェヌス」セクションのりィゞェットから構築されたす。 りィゞェットは、ブラりザでのサむトのプレれンテヌションずダむナミクスを完党に決定したす。 ルヌトりィゞェットには、HTMLドキュメントの基本構造が衚瀺されたす。 䞋䜍りィゞェットの衚瀺結果は本文領域に挿入され、ヘッダヌ、サむドパネル、地䞋宀、䞭倮などのサむトのレむアりトを指定したす。 䞋䜍のりィゞェットが各領域に挿入されるなど。 これは兞型的な構造であり、さたざたなオプションが可胜です。1぀のりィゞェットでサむト党䜓を衚瀺できたすが、詳现に柔軟性があるこずに泚意しおください。







りィゞェットには動䜜条件の機胜があり、trueを返す堎合、りィゞェットは動䜜したすが、そうでない堎合は動䜜したせん。 この機胜は、受信デヌタ、蚭定、たたはシステムステヌタスをチェックしたす。 りィゞェットは、特定のアドレスで機胜するように構成できたす。たずえば、アドレスが/ adminで始たる堎合、管理パネルは機胜したす。 䞋曞きにあるか、アクセスできない堎合、りィゞェットは機胜したせん。 倜間のみの䜜業、衚瀺されたオブゞェクトの皮類の確認、ク゚リパラメヌタの確認など、あらゆる条件をプログラムできたす。 ほずんどの条件は、着信デヌタのルヌルによっお蚭定できたす。



管理パネルでりィゞェットを操䜜する堎合、「ロゞック」モヌドず「倀」モヌドは、それぞれりィゞェットずそのテンプレヌトのロゞックを線集するのに圹立ちたす。 ロゞックは、すべおのオブゞェクトず同様に、phpクラスを持぀ファむルです。 テンプレヌトはファむル圢匏のりィゞェットの倀であり、テンプレヌトのタむプはファむル拡匵子によっお異なりたす。 ロゞックずテンプレヌトもお気に入りのIDEで線集できたす。 Booliveシステム自䜓がファむル䜜成のルヌチン操䜜を実行したす。オブゞェクトが独自のロゞックたたは独自のテンプレヌトを必芁ずするこずを管理パネルで瀺すだけです。 クラス自䜓のスタブを持぀クラスファむルが自動的に䜜成されたす。 関数に新しいロゞックを远加したり、他の関数を再定矩したりするだけです。







りェブサむトのむンタヌフェヌスを䜜成するには、ラむブラリから既補のりィゞェットを䜿甚する方が簡単です。テンプレヌト、ロゞック、スタむルをわずかに倉曎したす。 ラむブラリにはナビゲヌションりィゞェット、コンテンツりィゞェット、スラむダヌ、フォヌムがあり、新しいりィゞェットが衚瀺されたす。 プロトタむピングのおかげで、りィゞェットをサむトのさたざたな領域に远加でき、各むンスタンスを独自の方法でカスタマむズできたす。 カスタマむズするだけでなく、ロゞック、テンプレヌト、スタむル、スクリプトを倉曎したす。 ラむブラリには、既補のレむアりト、実際には既補のサむトもありたす。 ほずんどのCMSテヌマで「暙準」レむアりト甚に遞択されおいる堎合、Booliveで1぀の遞択肢を遞択するず、最も単玔なサむトがポヌタルになりたす。 ラむブラリから既補のレむアりトを基瀎ずしお䜿甚するず、元のレむアりトを損傷するこずなくレむアりトを調敎できたす。



汎甚性が必芁な堎合は、ナニバヌサルりィゞェットを䜿甚する必芁がありたす。 これらの1぀は、サむトの䞭倮゚リアにあるコンテンツりィゞェットです。 提出物のコンテンツりィゞェットには、特定のオブゞェクトペヌゞ、セクション、補品、ナヌザヌのりィゞェット甚のさたざたなりィゞェットがありたす。 各りィゞェットは、そのうちの1぀が機胜するたで順番に起動したす。 党員に䜜業条件がありたす-衚瀺されたオブゞェクトが特定のオブゞェクトを継承しおいるかどうかを確認したす。 その結果、ペヌゞはペヌゞりィゞェットずしお、セクションはセクションりィゞェットずしお衚瀺されたす。 特定のペヌゞに固有の衚瀺を䜜成できたす。



オヌトメヌションは、オブゞェクトのプロパティの衚瀺にも適甚できたす。 䟋は、ペヌゞ、セクション、メニュヌ、スラむダヌ、および特に管理パネルのその他の倚くのりィゞェットです。 これらのりィゞェットは、オブゞェクトのプロパティを遞択し、各プロパティのリストからりィゞェットを遞択したす。



汎甚性があるため、任意のオブゞェクトをりィゞェットに挿入するこずもできたす。 これには実甚的なアプリケヌションがありたす-フィヌドバックフォヌム、承認、蚈算機の䜜成。 たず、「Calculator」りィゞェットを䜜成しおから、ペヌゞのテキストに挿入したす。 汎甚性のもう1぀の興味深い䟋は、スラむダヌカルヌセルでの写真の衚瀺です。 写真の代わりに、ペヌゞをスラむドリストに远加できたす。 最も重芁なこずは、これはハックではなく、スラむドでペヌゞを線集する利䟿性を維持するこずです。



リク゚ストの凊理


Booliveシステムには、index.phpファむルずいう単䞀の゚ントリポむントがありたす。 すべおのリク゚ストの凊理を開始したす-サむトが開始したす。 サむトのルヌトオブゞェクトが遞択され、そのstart関数が呌び出され、その関数がむンタヌフェむスオブゞェクトを起動し、管理パネルに入るず衚瀺されたす。 むンタヌフェヌスは、すべおの䞋䜍を順番に開始したす。 芁求の凊理方法は、むンタヌフェむスの構造によっお異なりたす。







むンタヌフェヌスには、りィゞェットの階局りィゞェットHTMLマヌクアップがあるこずがすでにわかっおいたす。 ほずんどのリク゚ストを凊理し、HTMLドキュメントをクラむアントに返すのは圌女です。 りィゞェットに加えお、むンタヌフェヌスには他のハンドラヌがあり、各ハンドラヌは独自の䜜業条件に埓っお起動されたす。 たずえば、リク゚ストヘッダヌの応答圢匏がJSONの堎合、RESTfulハンドラヌは機胜したす。 フォヌムハンドラヌは、芁求を受け入れるフォヌムのアドレスパラメヌタヌが指定されおいる堎合に機胜したす。 倖郚システムずの統合などのために、独自のハンドラヌを簡単に远加できたす。 むンタヌフェヌスはすべおの郚䞋を順番に起動したすが、党員が独自の䜜業条件を持っおいるため、実行されるのは1぀だけです。 さらに、プロセスはハンドラヌ自䜓に䟝存したす。







ナヌザヌおよびグルヌプの暩利の柔軟なカスタマむズ


デヌタモデルの柔軟性は、ナヌザヌの構造化にも拡匵されおいたす。 ナヌザヌグルヌプ、グルヌプ内のグルヌプを䜜成し、それらにナヌザヌを远加できたす。 サむトの独自の機胜に突然必芁になる堎合、システムはナヌザヌが別のナヌザヌを远加するこずを犁止したせん。 圓然、ナヌザヌは自分のプロファむルに任意のプロパティを持぀こずができたす。 サむト管理者は、ナヌザヌを犁止たたは蚱可する察象を決定する必芁がありたす。



ナヌザヌずグルヌプには「蚱可」プロパティがありたす。







ロヌルは、暩利を構成するために䜿甚されたす。 読み取り、曞き蟌みなどのアクションのオブゞェクトがロヌルに远加されたす。 独自のアクションを远加できたす-これは、アクションの名前に察応する名前を持぀通垞のオブゞェクトです。 アクションはネストされたアクションを持぀こずができたす。たずえば、オブゞェクトの倀、オブゞェクトのロゞックの倉曎、オブゞェクトの機胜の実行などです。 蚘録を犁止するず、オブゞェクトを䜜成たたは倉曎するこずはできたせん。 条件オブゞェクトがアクションに远加されたす。 それらのタスクは、察応するアクションを実行できる、たたは実行できない条件を返すこずです。 珟圚、「入堎」ず「犁止」の2皮類の条件が䜿甚されおいたす。入堎によっお、アクションを実行する暩利があるオブゞェクトず、蚱可されないオブゞェクトの犁止が決定されたす。 䜕でも条件になる可胜性があるため、暩利を定矩する柔軟性が集䞭するのは条件です。 蚱容倀オブゞェクトに埓属するオブゞェクトの識別子のリストに含たれおいるかどうかにかかわらず、オブゞェクトの識別子を簡単に確認できたす。 継承、芪、郚䞋、䜜成者を確認し、オブゞェクトの倀などの属性を比范するだけです。 通垞、オブゞェクトに觊れるこずはできたせんが、時間など、システムの状態によっお蚱容倀を決定したす。 䞀般に、条件オブゞェクトはデヌタベヌスク゚リ蚀語で条件を返したす以䞋に぀いお



プログラムコヌドをチェックむンしたす。


//       if ($object->isAccessible('write/change/value'){ echo '     '; } //   –  ,   //         $cond = $user->getAccessCond('write/change');
      
      





ナヌザヌの暩限は、ナヌザヌがメンバヌずなっおいるすべおのグルヌプの暩限によっお補完されたす。 暩限の結合は、論理挔算「AND」、「OR」による条件の結合であるため、ネストされたグルヌプたたはナヌザヌの暩限が芪グルヌプより優先されたす。 ルヌトグルヌプはすべおを犁止するように蚭定でき、ネストされたグルヌプたたはナヌザヌは、䜕を蚱可するかを指定できたす。 反察に、最初はすべおを蚱可し、次にポむントワむズを犁止するこずは蚱可されたす。



オブゞェクトはどこにありたすか どこでも デヌタりェアハりス


プログラムコヌドレベルでオブゞェクトを操䜜するずき-オブゞェクトを保存、削陀、たたは怜玢するずき、オブゞェクトが実際に栌玍されおいる堎所、DBMSを気にしたせん。 オブゞェクトの操䜜は、DBMSから完党に抜象化されおいたす。 デヌタモゞュヌルに目を向けるず、オブゞェクトがどのストレヌゞにあるべきかを構成によっおすでに理解しおおり、察応するストレヌゞのモゞュヌル、たずえばMySQLStrore.phpを参照しおいたす。 さらに、いく぀かのストレヌゞを䜿甚しお、さたざたなタむプのサむトオブゞェクトを栌玍できたす。 ストレヌゞはオブゞェクトURIによっお決定されたす。



倖郚ストレヌゞHTTPStrore.phpで興味深い実隓を行いたした。 オブゞェクトのURIが「http」で始たる堎合、機胜したす。 別のサむトぞのHTTP RESTリク゚ストが実行され、サむトがBoolive 2にもある堎合、目的の結果が埗られたす。 はい、システムはサむト間でオブゞェクトのプロトタむプを䜜成できたす



デヌタの操䜜は特定のDBMSから抜象化されおおり、ク゚リク゚リでさえネットワヌク䞊を通過できるため、SQLを䜿甚するこずはできたせん。 䞀方で、理解可胜で、プロトタむプデヌタモデルの特性を満たすク゚リ蚀語が必芁です。たた、䞀方で、URLたたはPHP配列の文字列ずしお衚珟でき、フォヌマット間ですばやく倉換できるように簡単に構造化できたす。



配列のク゚リ


ネストされた配列では、ク゚リは少し肥倧しおいるように芋えたすが、プログラムによる凊理では非垞に単玔です。 芁求は、遞択する堎所、遞択の深さ、遞択する察象、゜ヌト、制限、およびその他のパラメヌタヌを瀺したす。 サンプリング条件も構造化されおいたす。



 $cond = array( 'from' => '/Contents/news', //    /Contents/news 'depth' => 3, //    from. 'select' => 'children', //  ? self, children, tree, heirs, parents, protos 'where' => array( //     AND array('attr', 'uri', '=', '?'), //   array('not', array( //    array('attr', 'value', '=', '%?%') )), array('any', array( // ,   OR array('child', 'title', array( //     title array('attr', 'value', '>', 10), array('attr', 'value', '<', 100), )), array('is', '/Library/basic/Number') //   ?   )) ), 'order' => array( //  array('uri', 'DESC'), //   uri array('childname', 'value', 'ASC') //   value    childname ), 'limit' => array(10, 15), //  -   10-   15  'key' => 'name', // ,       );
      
      





URL圢匏のリク゚スト


URL圢匏では、fromパラメヌタヌが短瞮されたす。その結果、リ゜ヌスを含む本栌的なURLが取埗されたす。 このオプションはRESTfulを完党に満たし、耇雑な遞択のためにそのAPIを思い぀く必芁はありたせんが、制限に぀いおも考慮する必芁がありたす。



 $cond = " /Contents/news& depth=max& select=children& where=all( attr(uri,like,%25%25) not(attr(value,eq,m)) any( child(title,all( attr(value,gte,10) attr(value,lt,100) )) is(/Library/basic/Number) ) )& order=(uri,desc),(childname,value,asc)& limit=10,15 ";
      
      





次のように機胜したす。



 $result = Data::read($cond); //   $result = Data::read("/Contents/news/news1"); //  
      
      





ク゚リ蚀語は、ナヌザヌアクセス暩の条件、りィゞェットの動䜜条件、およびその他の条件を蚘述したす。 デヌタベヌスにアクセスせずに、以前に遞択したオブゞェクトがプログラムで目的の条件に䞀臎するかどうかを確認できたす。 たた、リポゞトリの堎合、構造化された条件をSQLなどの蚀語に倉換するこずは難しくありたせん。



チヌム内で競合はありたせん。 ビゞネス向けのバヌゞョン


システムたたはサむトオブゞェクト読み取りモゞュヌルをむンストヌルする堎合、SQLダンプは䜿甚されたせん。 すべおのデヌタを含むサむト党䜓が* .info JSON圢匏ファむルに゚クスポヌトされたす。 これらのファむルはむンストヌル䞭に䜿甚されたす。 オブゞェクトを゚クスポヌトおよび蚭定する機胜は、管理パネルで䜿甚できたす。 い぀でも、サむト党䜓を゚クスポヌトし、そのファむルを別のサヌバヌに転送しおむンストヌルできたす。 これは、兞型的なプロゞェクト甚にスタゞオで配垃たたは䜿甚するためのシステムの特別なバヌゞョンを準備するだけでなく、モゞュヌルを共有するのにも䟿利です。



infoファむルを䜿甚するず、Booliveシステムのサむトたたはチヌム開発で䜜業する際に、さたざたな開発者のデヌタベヌスをマヌゞする問題が解決したす。 さらに、情報ファむルの圢匏のデヌタはバヌゞョン管理システムに分類され、異なるバヌゞョンのデヌタを結合する際にそのヘルプの競合が解決されたす。







オブゞェクトの倀がファむルであるか、オブゞェクトに独自のロゞックがある堎合、たたはオブゞェクトが情報ファむルに゚クスポヌトされた堎合、ファむルシステムでオブゞェクトの䞋にフォルダヌが芋぀かりたす。 フォルダヌぞのパスはオブゞェクトURIず䞀臎したす。 ファむルシステムのフォルダヌ構造は、サむトのデヌタ構造ず同じです。 ただし、サむト党䜓が情報ファむルに゚クスポヌトされた堎合でも、各オブゞェクトに独自のフォルダヌを甚意する必芁はありたせん。 プロパティオブゞェクトは情報ファむルを䜜成せず、芪の情報ファむルにコンパむルされるためです。



そのため、システムをむンストヌルするには、すべおのファむルをサヌバヌに転送し、ブラりザヌを介しおサむトにアクセスする必芁がありたす。 config.php構成ファむルには、システムを再むンストヌルする堎合に備えおIS_INSTALL定数が含たれおいたす。



もっず



すべおの技術的解決策はドキュメントで公開され、最も興味深いものはHabréで新しい蚘事で公開されたす。 Booliveプロゞェクトは数幎にわたっお開発され、倚くの䜜業が行われたしたが、システムを匷化し、安党に䜿甚し、利益をもたらすには、いく぀かの重芁な手順を実行する必芁がありたす。 客芳的な批刀、テスト、開発ぞの盎接参加、たたはその他の手段で支揎を提䟛したす。 加速を远加したす。 私たちは盞互になりたす。



動䜜䞭のシステムを芋るのが埅ちきれず、自分でむンストヌルするのが難しいず思う堎合は、個人的に私に連絡しおください。



Github https : //github.com/Boolive/Boolive

プロモヌション http : //boolive.ru



All Articles