この記事を読むすべての人が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のコードが実行されます。