Webasystの管理パネル用のネイティブモジュール

多くの場合、顧客は未知のものを要求するので、エンジンを尾とたてがみで遅らせる必要があります。 Webasystは、コードロジックの観点からは考えられず、神秘的であり、インターネット上には適切なマニュアルがほとんどありません。 したがって、私はここで、試行錯誤の苦い経験から学んだことを書きます。 webasystにはいくつかのタイプのモジュールがあり、それぞれについて書く予定ですが、直接プログラミングするのではなく、エンジンにモジュールを埋め込む方法についてのみ説明します。

この記事を読むすべての人がphpを所有していると想定されています。





まず、管理パネルの各要素には独自の要素があります。

たとえば、製品のブックマークは9でした



画像



この番号は、 SC_divisionsテーブルのxIDに対応しています。



adminモジュールの作成は、SC_divisionsテーブルに新しいレコードを埋め込むという事実から始まります。



INSERT INTO `SC_divisions` SET xName='pgn_mymodule', xParentID=9, xEnabled=1, xPriority=100;







xParentID = 9であることに注意してください。 つまり、このモジュールの親は製品になります。 つまり このモジュールは[製品]タブのタブになります。 xPriorityパラメーターは、タブ間の位置を担当します。

xIDが自動インクリメントを割り当てたものを確認し、それを覚えています。 この例では209であるとします。



次に、 SC_division_interfaceテーブルに移動します ここでは、一方ではすべてが明確になっていますが、もう一方ではそうではありません。 そして、ここに「そうではない」が最も重要です。



私たちにとって重要なフィールド:

xDivisionID-明らかに、これはモジュールの識別子です。 209であることに同意しました。

xInterface-モジュールの名前はこのフィールドに格納され、奇妙なことにモジュールへのパスが格納されます。



モジュール名の前にある数字の意味を理解するために、 SC_module_configsテーブルを見てみましょう。

ConfigKeyフィールドを見ると、 / published / SC / html / scripts / modulesフォルダー構造に従っていることがわかります

うん。 そして、 adminscreensにモジュールを入力したいと思います。 ModuleConfigIDが adminscreensに対して何であるかを調べます。 これは48です。

今、私たちにとって謎はありません、そして安全に書くことができます:



INSERT INTO SC_division_interface SET xDivisionID=209, xInterface=48_mymodule;







素晴らしい。 仕事の半分が完了しました。

/ published / SC / html / scripts / modules / adminscreens / _methodsに移動し 、そこにファイルを作成します:



mymodule.xml

 <?xml version="1.0" encoding="UTF-8"?> <interfaces> <interface> <name>My Module</name> <key>mymodule</key> </interface> </interfaces>
      
      







mymodule.php

 <?php /** * Created by JetBrains PhpStorm. * User: xilix * Date: 24.11.12 * Time: 23:32 */ /** * @package Modules * @subpackage AdministratorScreens */ class MymoduleController extends ActionsController { function mymodule(){ } function main(){ $Register = &Register::getInstance(); /*@var $Register Register*/ $smarty = &$Register->get(VAR_SMARTY); /*@var $smarty Smarty*/ //   ,     //           } } ActionsController::exec('MymoduleController'); ?>
      
      







テキストmymoduleがある mymodule.phpの場所に注意する必要があります。 モジュールの名前と一致する必要があります。 そうしないと、何も機能しません。



残りはほとんどありません。 つまり、管理者にこのモジュールを見る機会を与えます。 何らかの理由で、この瞬間はすべての同様の記事で省略されており、以前に推測することは容易ではありません。 通常、モジュールは機能しますが、表示されません。 これを見つけるために、webasystコードを徹底的にシャベルする必要がありました。 解決策は次のとおりです。



プレートU_ACCESSRIGHTSを見てください 。 次の行を追加します。



INSERT INTO U_ACCESSRIGHTS SET AR_ID='ADMIN', AR_PATH='/ROOT/SC/FUNCTIONS', AR_OBJECT_ID=SC__209, AR_VALUE=1;







この行の主なものは何ですか? 正解-SC__209 209はモジュールの番号です。



翻訳pgn_mymoduleを追加するために残ります



INSERT INTO `SC_local` (`id`, `lang_id`, `value`, `group`, `subgroup`) VALUES

('pgn_mymodule', 1, ' ', 'general', 'prd'),

('pgn_mymodule', 2, 'My module', 'general', 'prd');









そしてそれだけです。 ここで、 「製品」タブに移動すると、 「マイモジュール」タブ内に表示され、 mymodule.phpのコードが実行されます。



All Articles