システム自体については何も書くことができません。なぜなら、管理パネルにも行かなかったからです。データベースでしか機能しませんでした。 ちなみに、これらはMODxの68に対して322テーブルです。
もちろん、すべてを完全に転送するという話はありませんでした。タスクは、特定の情報ブロック(記事とニュース)の内容を、著者といくつかのプロパティ(写真、公開日)とともにインポートすることでした。
そしてもちろん、すべてのURLを検索エンジンで適切にインデックス付けしてください。
熱意があれば、このスクリプトはJoomlaやDrupalなどの他のCMSで動作するように仕上げることができると思います。
トピックの最後にダウンロード用のアーカイブがありますが、今のところは、スクリプトの仕組みについて少し説明します。
3ファイル:
- config.inc.php-特定の構造を持つ配列。各情報ブロックの設定が含まれます
- import.class.php-メソッドを持つクラス
- process.php-実行するファイル、構成とクラスを接続します
構成
作業に必要なすべてのデータが配列に追加されます。
'table_prefix' => 'bitrix_' ,'blocks' => array( 'articles' => array( 'id' => 3 ,'cat_tpl' => 3 ,'tpl' => 3 ,'uri_override' => 1 ,'preview_picture' => 'preview_picture' ,'detail_picture' => 'detail_picture' )
ブロック配列には、特定の情報ブロックのインポート設定が含まれています。
- id-すべての情報ブロックページをインポートするための親リソース番号。 事前に作成する必要があります。
- cat_tpl-コンテナ(カテゴリ)のテンプレート識別子
- tpl-通常のリソースのテンプレート識別子
- uri_override -uriページをフリーズします。古いリンクを保存する必要があります。
- preview_picture-ページの小さな画像を保存するためのTVパラメーター、オプション
- detail_picture-大きい画像のTVパラメーター、オプション
設定は、Bitrixテーブルのプレフィックスも示します。 MODxテーブルと同じデータベースにあると思います。
利用可能な方法
ここで、proccess.phpファイルを調べる必要があります。
MODx自体が接続されており、インポートクラスとインポートに必要なメソッドが呼び出されます。
- truncateTable-リソースIDを取得し、その後のすべてのリソースを削除します。 実験に役立ちます。
- importBlock-インフォブロックを直接インポートし、その名前を取得します(そして構成配列で設定を探します)
- linkToAuthors-私の状況に個人的に必要な方法で、記事の著者のページを記事にリンクします。 例として役立ちます。
- getProps-インフォブロックセクションの名前を取得し、そのプロパティを返します(uriなどを構築するためのルール)
- getElements-セクションIDを受け取り、そのすべての子ページを表示します
- getSections- (セクションから)カテゴリのツリーを構築し、元のサイトと同様に、それらを相互に配置します。 getPropsおよびconfigからプロパティを受け入れます
- getFile-ファイルのIDを取得し 、そのプロパティ(アドレス、名前)を返します。 ファイルは、データベース内の別のテーブルを介してBitrexによって取得されます。
- makeURI-セクションプロパティのテンプレートに従ってMODxリソースのuriを作成します(保存する必要があります)
- getProperty -infoblock要素の追加要素。 MODxのテレビのようなもの。
一般に、ほとんどすべてのメソッドはimportBlockで動作するように記述されています。
起動すると、セクションプロパティが取得され、そのサブカテゴリが作成され、リソースがそれらにインポートされ、画像がTVボックスに保存されます。
ウリページ
最も重要なことは、もちろん次のプラグインを使用する場合、すべてのuriが機能することです。
<?php if ($modx->event->name == 'OnPageNotFound') { $uri = parse_url(substr($_SERVER['REQUEST_URI'],1)); $query = explode('&', $uri['query']); $num1 = count($query); $query = array_unique($query); $num2 = count($query); if ($num1 != $num2) { $modx->sendRedirect($modx->getOption('site_url').$uri['path'].'?'.implode('&', $query)); } else if ($res = $modx->getObject('modResource', array('uri' => $uri['path'].'?'.$query[0]))) { $modx->sendForward($res->get('id')); } }
Bitrixでは(常に、または私の場合のみわからない)アドレスはnews / detail.php?News = 6868であるため、Webサーバーにサイトのルートにあるindex.phpに送信するように強制する必要もあります。 つまり、そのようなフレンドリーなURLが出てくるようです。
プラグインは、ページネーションをgetPageで動作させます。 つまり、news / detail.php?News = 6868&page = 5-正しく動作します。
おわりに
私はスクリプトを可能な限り多目的に使用しようとしましたが、主な作業を犠牲にすることはしませんでした。 いずれにせよ、BitrixからMODxに移行したい人は、今から何かを始めることができます。
5000個のリソースをインポートし、TVパラメーターを介して相互にリンクするには、通常の家庭用コンピューターで約4〜5分かかります。 リンクは私の特定のタスクです。他の誰かが役に立つかどうかはわかりません。
このスクリプトを追加、変更、および開発しません。別のサイトをBitrixからRevoに転送するように求められた場合のみです。 一般に、私はそれをそのまま返します。
最後に、簡単に:
- MODx Revoをインストールします。
- インポート用のコンテナを作成し、写真にテレビを割り当てます。
- Bitrixデータベースのダンプを埋めます。
- アーカイブをダウンロードして 、サイトのルートに解凍します。
- config.inc.phpを設定し、情報ブロックのテーブルプレフィックスと設定を指定します。
- コンソールからprocess.phpの情報ブロックのインポートを開始します-任意の起動の可能性があります。
- 何かが間違っている場合-コードを掘り下げて自分で編集してください。
「世界最高のCMS」をテーマに定期的なホリバーを展開しないでください。
PS ウェブマスターエージェンシーのメンバーが注文、支払い、共有を許可されました
UPD。 役に立たないので、投稿やカルマで短所を得るのは良くありません。 誰かが退会する場合-あなたに合わないものは何ですか?