1

私は、Magento コミュニティ内に、Adminhtml の [注文] タブを書き換えて、製品がいつ出荷されるかのイベントを表示するフルカレンダー (arshaw.com のもの) に置き換えるカスタム ブロックを持っています。

カスタムモジュールコントローラーに依存してデータを入力および保存する JSON フィードを実装しました。これはうまく機能し、Month / Today / Prev / Next をクリックすると商品が表示されます。ただし、これは機能する方法ではありません。私が見るのはボタンだけであることを除いて、ページが読み込まれるときにレンダリングする必要があります。

たとえば、javascript でタブを参照しようとしました。

jQuery('#diagram_tab_orders_content').tabs({
    show: function(event, ui) {
        jQuery('#dashCalendar').fullCalendar('render');
}

#dashCalendar はタグの ID / クラスです。

これを除いて、カレンダーはレンダリングされません。これは、diagram_tab_orders_content の CSS を変更するだけです。

Stackoverflow で同様のトピックを見たことがあります。カレンダーを適切にレンダリングするには、カレンダーがあるタブを明示的に参照する必要があります。これは、ドキュメントの準備ができたときにカレンダーをレンダリングするために達成しようとしていることです。

ドキュメントの準備ができたときにこのカレンダーをレンダリングする方法についての提案は大歓迎です。

4

1 に答える 1

0

そのため、カレンダーの問題を把握しました。これは、Magento 内のタブに関連しています。Javascript 内で明示的にタブを参照するとレンダリングに問題が発生するため、Dashboard ブロックを書き直す必要がありました。

ModuleName/etc フォルダーの Config.xml:

<global>
        <!-- Blocks -->
        <blocks>
            <adminhtml>
                <rewrite>
                    <dashboard>ModuleName_Block_Adminhtml_Calendar</dashboard>
                </rewrite>
            </adminhtml>
        </blocks>
</global>

次に、 ModuleName/Block/Calendar.php ファイル内でテンプレートを設定します。

public function __construct()
    {   //this creates the template block for the calendar
        parent::__construct();
        $this->setId('Calendar');
        $this->setTemplate('moduleName/calendar/calendar.phtml');
    }

提供されている fullcalendar の JSON サンプル ページをコピーして貼り付け、events: タグを .php ファイルに設定します。このファイルは、JSON を使用してデータベースからデータを生成/要求します。提供された CSS を使用したい場合は、テーマをカスタマイズします。Adminhtml にログインすると、カレンダーがイベントとともにレンダリングされます。その下に「Populate」が表示されます。データを取得し、JSON フィードをカレンダーにエコーするコントローラー内のアクションです。

events: {
           url: "<? echo $this->getUrl('moduleName/adminhtml_calendar/populate') ?>"
        },

カレンダーがイベントで適切にレンダリングされるようになりました。

于 2013-02-08T09:24:03.270 に答える