Shop-Script 5の例を使用してYii 1.1.15をアプリケーションとしてCMSに接続するプロセス

タスクは、長い間2つのプロジェクトを1つにまとめることでした。 ShopScript 5プラットフォームにショップがあり、Yiiに小さなアプリケーションがありました。 一般的な承認、個人アカウントを作成し、一般に、これら2つのプロジェクトを1つにまとめる必要がありました。

最後に、私たちは回避し、Yiiを別のアプリケーションとしてShopScriptにフックすることにしました。 アプリはトラッカーと呼ばれます。



何が行われたかについて-順番:



1.空のShopScriptアプリケーションを作成します



空のアプリケーションの作成については、 ShopScript Webサイトのマニュアルに詳しく説明されてます。



原則として、超自然的なことは何もありません。 アプリケーションは、2つのアクションのみで構成されます。





アプリケーションの場合、構成ファイル、いくつかのアイコン、およびビューも作成する必要があります。 これについては、ShopScript Webサイトのマニュアルで詳細に説明されているため、ここで説明するのは意味がありません。



2. Yiiでアプリケーションを作成する



新しいものはありません。

サイトのルートにあるapptrackersフォルダーのYiiにアプリケーションを配置します。

完成したアプリケーションをフォルダーにドロップするか、新しいアプリケーションをすぐに作成します。 違いはありません。 要するに、Yiiのアプリはapptrackersフォルダーにあります。

アプリケーションのインストール方法は、 公式Webサイトにも記載されています



それは準備でした。 その後、楽しみが始まります。



3. ShopScriptを使用してYiiアプリケーションを起動します



ShopScriptアプリケーションでYiiの制御を完全に転送するために、「構造」タブの管理パネルのトラッカー/ *でアプリケーションの呼び出しを設定します。アプリケーションでは、1つのFrontendActionを残します。 。

FrontendAction自体で、プロジェクトロジックを実装するexecuteメソッドで、次の1行を記述します。



require_once($_SERVER["DOCUMENT_ROOT"]."/apptrackers/index.php");
      
      





つまり、アドレスバーにyoursite / trackers *というフォームのアドレスを入力すると、ShopScriptはそれをアプリケーションに送信して実行します。 そして以来 アプリケーションにはデフォルトで1つのアクションのみが記述されており、常に呼び出されます。



その結果、Yiiアプリケーションを呼び出しました。 Yiiアプリケーションを設定するために残っています。



4. Yiiの設定



これで、アプリケーションが既に実行されていることがわかったので、必要な構成を登録する必要があります。



  1. UrlManagerを構成して、アドレスをパスの形式で表示し、実行可能なスクリプトを表示しないようにします。 URLが美しく、同じタイプである必要があります。
  2. 次に、アプリケーションのURLがトラッカーで始まることを示します。



      'request' => array( 'baseUrl' => '/trackers', ),
          
          





  3. なぜなら Yiiアプリケーションは誰も知らないフォルダーにあるため、サイトのルートにある別のフォルダーにあるスタイルとアセットを取り出します。 それをtracksと呼びましょう。 内部では、すぐに資産フォルダーを作成します。 ここで、すべてのスタイルファイル、jsスクリプト、その他の悪霊を追加します。
  4. 次に、AssetsManagerを構成して、ファイルの保存場所を指定します。



      'assetManager' => array( 'basePath' => dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'tracks'.DIRECTORY_SEPARATOR.'assets', 'baseUrl' => '../../tracks/assets', ),
          
          





  5. また、メインレイアウトを少し調整して、プラグインスクリプトでフォルダーだけを示します。



      <link rel="stylesheet" type="text/css" href="/tracks/css/screen.css" media="screen, projection" /> <link rel="stylesheet" type="text/css" href="/tracks/css/print.css" media="print" /> <!--[if lt IE 8]> <link rel="stylesheet" type="text/css" href="tracks/css/ie.css" media="screen, projection" /> <![endif]--> <link rel="stylesheet" type="text/css" href="/tracks/css/main.css" /> <link rel="stylesheet" type="text/css" href="/tracks/css/form.css" />
          
          









これで、 yoursite / trackersでアプリケーションを呼び出すと、Yiiアプリケーションが表示されます。

いいね! やった! しかし、GIIに入ると1つの警告がありました。

Giiはすべてのリソースをデフォルトでアプリケーションフォルダーのアセットに公開します。 このパスを再定義する必要があります。

これを行うには、gii構成でリソースへのパスを指定します。



  'gii'=>array( 'class'=>'system.gii.GiiModule', 'password'=>'******', 'assetsUrl'=>'/tracks/assets/gii', // If removed, Gii defaults to localhost only. Edit carefully to taste. 'ipFilters'=>array('xxx.xxx.xxx.xxx','::1'), ),
      
      







モジュール/ apptrackers / framework / gii / asset / *のディレクトリからgiiのすべてのファイルをファイル/ track / asset / gii / *のフォルダにコピーすると、完全に機能するプロジェクトが得られます。



もちろん、すべてを簡単にすることができます。 yiiを呼び出す別のディレクトリにyiiアプリケーションを置くだけです。 追加設定なし。 しかし、上記のソリューションの議論の余地のないプラスは、Yiiアプリケーションでは、既製の承認、ユーザー管理、ショッピングカートなどを備えたすべてのShopScript機能を備えているということです...



ユーザーモジュールの例でこれを示します。



5. Yiiへのユーザーモジュールの追加



実際、ShopScriptには既にユーザーがいます。彼らのバスケットと、私が残したい機能の一部があります。

次のように進めます。



Yiiにモジュールフォルダーを作成し、その中にユーザーモジュールのディレクトリを作成します。

モジュールファイルUserModule.phpを追加します。このモジュールには、初期化のための標準機能を残し、静的メソッドisAdminを追加します。



  public static function isAdmin() { wa()->getUser()->isAdmin(); }
      
      







このコードは、既存のShopScriptアプリケーションを参照していることを示しており、そこからユーザーと管理者のステータスを取得します。



また、SSUser.phpユーザーの作業を担当するコンポーネントフォルダーにクラスを追加します。このクラスでは、いくつかの標準メソッドについて説明します。



 class SSUser extends CWebUser { public function getId() { return wa()->getUser()->getId(); } public function isAdmin() { return wa()->getUser()->isAdmin(); } public function getIsGuest() { if(wa()->getUser()->getId()) { return false; } return true; } public function getName() { return wa()->getUser()->get('name'); } }
      
      







このコードは、すでに実行中のShopScriptアプリケーションからユーザーのすべてのデータを取得することを示しています。



構成では、ユーザーを担当するクラスを修正します。



  'user'=>array( 'class' => 'SSUser', ),
      
      







さて、ユーザーのチェックがあるlayouts / main.phpの標準コード:



 $this->widget('zii.widgets.CMenu',array( 'items'=>array( array('label'=>'Home', 'url'=>array('/site/index')), array('label'=>'About', 'url'=>array('/site/page', 'view'=>'about')), array('label'=>'Contact', 'url'=>array('/site/contact')), array('label'=>'Login', 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest), array('label'=>'Logout ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest) ),
      
      





最後の2つの段落では、ユーザーがShopScriptアプリケーションで承認されているかどうかに応じてリンクが表示され、承認されている場合は同じアプリケーションのユーザー名が表示されます。



将来、モジュールは必要な機能に拡張できます。



もちろん、この2つのアプリケーションの共生の方法は理想的とは言えませんが、多くの問題を解決するためには、それが必要だと思います。



All Articles