テーマにおけるレイアウトファイル(活動モジュールのページなど)

テーマにおけるレイアウトファイル(活動モジュールのページなど)

- Shinji Kawano の投稿
返信数: 2

Moodle3.3にて自作のテーマの作成を試みております。

cleanテーマをコピーして、また他のテーマを参考に作成しております。


layoutフォルダの直下に、columns1〜3のようなphpファイルを作成し、それぞれを目的別に適用させるため

config.phpにて、

 $THEME->layouts = array(
    'mydashboard' => array(
        'file' => 'columns2.php',
        'regions' => array('side-pre', 'side-post'),
        'defaultregion' => 'side-pre',
    ), ...

このように指定しておりました(bootstrapbaseテーマを参考)。


上記のようなダッシュボードのレイアウトなどはmydashboard要素に指定すればいいことは分かり

現在も上手くいっておりますが

「活動モジュールを表示するページ」にはどのようにしてレイアウトファイルを指定すればよろしいでしょうか?

具体的には、

 http://LCMサイト/mod/page/view.php?id=8

などで表示される各コースのレッスンや課題を表示したページです。

blockなどのblock-region-side-pre(htmlで表示した際のdivの領域ID)領域はとくになかったため

columns1.phpがあたっているかと思っておりましたが、そうでも無さそうで

$THEME->layouts にてどのように指定していいか分かりません。


先日、libフォルダのoutputlib.phpにて$THEME変数の活用方法を教えていただいたばかりで

大変恐縮ですが、活動モジュールのページへの応用の方法がわからず、苦心しております。


アドバイスいただけませんでしょうか?

何卒よろしくお願いいたします。

Shinji Kawano への返信

Re: テーマにおけるレイアウトファイル(活動モジュールのページなど)

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

lib/pagelib.phpファイル内のset_pagelayout()関数をお使いください。

例えば、レッスンモジュールでしたらmod/lesson/index.phpの39行目で下記のようにレイアウトを指定してあります。

/** Include required files */
require_once("../../config.php");
require_once($CFG->dirroot.'/mod/lesson/locallib.php');

$id = required_param('id', PARAM_INT);   // course

$PAGE->set_url('/mod/lesson/index.php', array('id'=>$id));

if (!$course = $DB->get_record("course", array("id" => $id))) {
    print_error('invalidcourseid');
}

require_login($course);
$PAGE->set_pagelayout('incourse');

// Trigger instances list viewed event.
$params = array(
    'context' => context_course::instance($course->id)
);


各モジュール内で指定されるレイアウトを変更された後、恐らく、ご自分で作成されたテーマ内のconfig.phpに下記のような記述を追加されれば宜しいかと思います。

$THEME->layouts = array(
    'sample' => array(
        'file' => 'sample.php',
        'regions' => array(),
    ),

参考資料:
[Page API - MoodleDocs]
https://docs.moodle.org/dev/Page_API#Page_layout

評点平均: お役立ち度: ★★★★★★★ (1)
Mitsuhiro Yoshida への返信

Re: テーマにおけるレイアウトファイル(活動モジュールのページなど)

- Shinji Kawano の投稿

いつも早急なご回答、本当にありがとうございます。


「set_pagelayout()関数」という的確なアドバイスですぐに解決できました。

その関数で指定してあるレイアウトに合わせて、

ご指摘にありますようにテーマのconfig.phpファイルを修正することで実現しております。


引き続き、libフォルダの中を調べれるようになることが重要であることを勉強できました。


大変助かりました。

ありがとうございます。

評点平均: お役立ち度: ★★★★★★★ (1)