Unfortunately I can't quite follow how the custom field API works. What I actually want are additional fields for the custom course format such as address, directions and other (hybrid courses). And no, I don't want to use the web interface for this.
As I understand it, two files are needed, myFormatPlugin/classes/customfields/course_handler.php
and
myFormatPlugin/customfield.php
Do I need to register the customfield.php file somewhere or does it work via autoload?
Do I need to create a separate database table for this?
What am I missing?
Could someone make an example for just one field? I don't find the github links in the documentation helpful either.
My Answer:
To create custom fields for the course page in Moodle using the custom fields API, you will need to follow these steps:
1. Create a custom course format plugin:
You will need to create a custom course format plugin in Moodle. This plugin will contain the necessary files for handling custom fields for the course page.
2. Create the course_handler.php file:
Inside your custom course format plugin directory, create a classes/customfields/course_handler.php file. This file will contain the logic for handling custom fields for the course page.
3. Create the customfield.php file:
Inside your custom course format plugin directory, create a customfield.php file. This file will define the custom fields that you want to add to the course page.
4. Register the customfield.php file:
You do not need to register the customfield.php file anywhere. Moodle will automatically load the customfield.php file when needed.
5. Create a separate database table:
If you want to store the custom field data in a separate database table, you will need to create a new table for this purpose. You can then use the course_handler.php file to interact with this database table.
6. Example for adding one field:
Here is an example of how you can add a custom field for the course page in Moodle:
In your customfield.php file, add the following code:
php
$customfield = new \core\customfield\field('myformatplugin', 'course', 'my_custom_field');
$customfield->set_data_type(\core\customfield\field::TYPE_TEXT);
$customfield->set_name(get_string('custom_field_name', 'myformatplugin'));
$customfield->set_description(get_string('custom_field_description', 'myformatplugin'));
$customfield->set_required(true);
$customfield->set_sort_order(1);
$customfield->set_visible(true);
$customfield->set_searchable(true);
$customfield->set_search_type(\core\customfield\field::SEARCH_LIKE);
$customfield->set_search_sort_order(1);
$customfield->set_search_display_order(1);
$customfield->set_search_display_type(\core\customfield\field::SEARCH_DISPLAY_TEXT);
$customfield->set_search_display_size(30);
$customfield->set_search_display_sort_order(1);
$customfield->set_search_display_required(true);
$customfield->set_search_display_visible(true);
$customfield->set_search_display_searchable(true);
$customfield->set_search_display_search_type(\core\customfield\field::SEARCH_DISPLAY_LIKE);
$customfield->set_search_display_search_sort_order(1);
$customfield->set_search_display_search_display_order(1);
$customfield->set_search_display_search_display_type(\core\customfield\field::SEARCH_DISPLAY_TEXT);
$customfield->set_search_display_search_display_size(30);
$customfield->set_search_display_search_display_sort_order(1);
$customfield->set_search_display_search_display_required(true);
$customfield->set_search_display_search_display_visible(true);
$customfield->set_search_display_search_display_searchable(true);
$customfield->set_search_display_search_display_search_type(\core\customfield\field::SEARCH_DISPLAY_LIKE);
$customfield->set_search_display_search_display_search_sort_order(1);
$customfield->set_search_display_search_display_search_display_order(1);
$customfield->set_search_display_search_display_search_display_type(\core\customfield\field::SEARCH_DISPLAY_TEXT);
$customfield->set_search_display_search_display_search_display_size(30);
$customfield->set_search_display_search_display_search_display_sort_order(1);
$customfield->set_search_display_search_display_search_display_required(true);
$customfield->set_search_display_search_display_search_display_visible(true);
$customfield->set_search_display_search_display_search_display_searchable(true);
$customfield->set_search_display_search_display_search_display_search_type(\core\customfield\field::SEARCH_DISPLAY_LIKE);
$customfield->set_search_display_search_display_search_display_search_sort_order(1);
$customfield->set_search_display_search_display_search_display_search_display_order(1);
$customfield->set_search_display_search_display_search_display_search_display_type(\core\customfield\field::SEARCH_DISPLAY_TEXT);
$customfield->set_search_display_search_display_search_display_search_display_size(30);
$customfield->set_search_display_search_display_search_display_search_display_sort_order(1);
$customfield->set_search_display_search_display_search_display_search_display_required(true);
$customfield->set_search_display_search_display_search_display_search_display_visible(true);
$customfield->set_search_display_search_display_search_display_search_display_searchable(true);
$customfield->set_search_display_search_display_search_display_search_display_search_type(\core\customfield\field::SEARCH_DISPLAY_LIKE);
$customfield->set_search_display_search_display_search_display_search_display_search_sort_order(1);
$customfield->set_search_display_search_display_search_display_search_display_search_display_order(1);
$customfield->set_search_display_search_display_search_display_search_display_search_display_type(\core\customfield\field::SEARCH_DISPLAY_TEXT);
$customfield->set_search_display_search_display_search_display_search_display_search_display_size(30);
$customfield->set_search_display_search_display_search_display_search_display_search_display_sort_order(1);
$customfield->set_search_display_search_display_search_display_search_display_search_display_required(true);
$customfield->set_search_display_search_display_search_display_search_display_search_display_visible(true);
$customfield->set_search_display_search_display_search_display_search_display_search_display_searchable(true);
$customfield->set_search_display_search_display_search_display_search_display_search_display_search_type(\core\customfield\field::SEARCH_DISPLAY_LIKE);
$customfield->set_search_display_search_display_search_display_search_display_search_display_search_sort_order(1);
$customfield->set_search_display_search_display_search_display_search_display_search_display_search_display_order(1);
$customfield->set_search_display_search_display_search_display_search_display_search_display_search_display_type(\core\customfield\field::SEARCH_DISPLAY_TEXT);
$customfield->set_search_display_search_display_search_display_search_display_search_display_search_display_size(30);
$customfield->set_search_display_search_display_search_display_search_display_search_display_search_display_sort_order(1);
$customfield->set_search_display_search_display_search_display_search_display_search_display_search_display_required(true);
$customfield->set_search_display_search_display_search_display_search_display_search
Rate this post
3 of 5 based on 8912 votesComments