Dear Miguel,
I'm not sure if there is a guide, but it is possible to create a new course format by copying the existing topics / weeks formats. To make it work:
1. Copy the topics format and rename the folder - say 'newformat' - which I will use as an example below.
2. Edit lib.php and change all of the function names to the new format's name, i.e. callback_topics_get_section_name -> callback_newformat_get_section_name.
3. In lib.php change anything that references 'topics', i.e.
line 47
return $navigation->load_generic_course_sections($course, $coursenode, 'topics');
to
return $navigation->load_generic_course_sections($course, $coursenode, 'newformat');
line 57
return get_string('topic');
to
return get_string('sectionname','format_newformat');
line 67
return 'topic';
to
return 'newformat';
line 75
return get_string('section0name', 'format_topics');
to
return get_string('section0name', 'format_newformat');
line 77
return get_string('topic').' '.$section->section;
to
return get_string('sectionname', 'format_newformat').' '.$section->section;
4. Change lang/en/format_topics.php to lang/en/format_newformat.php.
5. Edit format_newformat.php and change to what is appropriate, i.e:
$string['sectionname'] = 'Topic';
to
$string['sectionname'] = 'New Format';
$string['pluginname'] = 'Topics format';
to
$string['pluginname'] = 'New Format format';
6. In format you may wish to change lines 33 and 284 to be a different parameter, i.e.:
$topic = optional_param('topic', -1, PARAM_INT);
to
$topic = optional_param('newformat', -1, PARAM_INT);
and
$select = new single_select(new moodle_url('/course/view.php', array('id'=>$course->id)), 'topic', $sectionmenu);
to
$select = new single_select(new moodle_url('/course/view.php', array('id'=>$course->id)), 'newformat', $sectionmenu);
That should get you started! I've done this from memory and comparing topics with my collapsed topics format so might be incomplete but should get you most if not all of the way there.
Cheers,
Gareth