---
title: "OSCampus Structured Data - Google Structured Data"
description: "Google Structured Data integrates with OSCampus, the learning management system by Joomlashack, and adds structured data to your learning path, course"
url: "https://www.tassos.gr/docs/google-structured-data/integrations/oscampus"
date: "2026-09-28T19:08:38+00:00"
language: "en-GB"
---

[ Home ](https://www.tassos.gr/docs) / [ Google Structured Data ](https://www.tassos.gr/docs/google-structured-data) / [ Integrations ](https://www.tassos.gr/docs/google-structured-data/integrations)

#  OSCampus Structured Data

Google Structured Data integrates with OSCampus, the learning management system by Joomlashack, and adds structured data to your learning path, course and lesson pages. You create one Structured Data Item per page type. Every current and future learning path, course and lesson then gets its markup, and nothing is typed by hand.

The pages also point at each other. A learning path lists its courses, a course lists its modules and their lessons, and a lesson points back at its module and its course. Search engines read your whole curriculum as one connected structure.

## [Enable the integration](#enable)

1. Log into your Joomla backend.
2. Go to Components → Google Structured Data → Configuration.
3. Click the *Integrations* tab.
4. Find OSCampus in the list and make sure it's enabled.

![GSD Integrations Tab](https://www.tassos.gr/images/gsd_integrations_tab.png)

![Enable OSCampus Integration](https://www.tassos.gr/images/2026/09/gsd-oscampus-enable-integration.png)

## [Add structured data to OSCampus pages](#add)

OSCampus has 3 kinds of front end pages, and each one needs its own Structured Data Item. The *Integration View* option tells the item which kind of page it's for. These are the Content Types that fit each view best.

 | Integration View | Content Type | What the markup describes |
|---|---|---|
| Learning Path Page | [Educational Occupational Program](https://www.tassos.gr/docs/google-structured-data/schemas/educational-occupational-program) | The learning path and every course inside it. |
| Course Page | [Course](https://www.tassos.gr/docs/google-structured-data/schemas/course) | The course, its modules and the lessons of each module. |
| Lesson Page | [Learning Resource](https://www.tassos.gr/docs/google-structured-data/schemas/learning-resource) | The lesson, and the module and course it belongs to. |

Repeat these steps once for each row of the table.

1. Log into your Joomla backend.
2. Go to Components → Google Structured Data → Items.
3. Click *New*.
4. Enter a Title. It's for your own reference, so anything works.
5. Select the Content Type from the table above.
6. Select *OSCampus* in the *Integration* dropdown.
7. Select the matching page in the *Integration View* dropdown.
8. Click *Save*.

![OSCampus Learning Path Page item with the Educational Occupational Program Content Type](https://www.tassos.gr/images/2026/09/gsd-oscampus-item-general.png)

Once the item is saved, 2 new sections appear.

- **The Content Type section** maps each property to page data, such as the course title or the lesson length.
- **Publishing Rules** decide which learning paths, courses or lessons get the markup.

The defaults of the Educational Occupational Program and Learning Resource Content Types already point at the right OSCampus data, so those two items work as soon as you save them. The Course Content Type is shared with other integrations, so map its new properties yourself (see [Map the Course properties](#course) below). To learn how the mapping works, read [How to Add Structured Data to Pages](https://www.tassos.gr/docs/google-structured-data/start/structured-data-to-pages).

## [How the pages connect](#connections)

The integration builds the links between your pages from the OSCampus structure. You don't map anything for them.

 | Page | Property | What it holds |
|---|---|---|
| Learning path | `hasCourse` | Every course of the learning path, in the order OSCampus lists them. |
| Course | `syllabusSections` | Every module of the course, each one holding its lessons with their name, URL, length and type. |
| Lesson | `isPartOf` | The module and the course the lesson belongs to. |

Add a course to a learning path, or a lesson to a module, and the markup follows on the next page load.

## [Mapping options](#mapping-options)

On top of the standard options, such as Title, Text and Image, each Integration View adds its own options to the mapping dropdowns.

 | Name | Integration View | Description |
|---|---|---|
| Page URL | All | The URL of the learning path, course or lesson page, exactly as OSCampus builds it. |
| Length in Minutes | Course, Lesson | The length of the course or lesson, as entered in OSCampus. Time Required turns it into a duration, so 45 becomes `PT45M`. |
| Difficulty | Course | The difficulty of the course, such as Beginner, Intermediate or Advanced, in the language of the page. |
| Tags | Course, Lesson | The OSCampus tags of the course, separated by a comma. Lessons have no tags in OSCampus, so on a lesson this returns the tags of its course. |
| Teacher | Course, Lesson | The name of the teacher of the course. |
| Learning Path Title | Course | The title of the learning path the course belongs to. When the course is in more than one learning path, this is the first one. |
| Learning Paths | Course | The titles of every learning path the course belongs to, separated by a comma. |
| Lesson Type | Lesson | The lesson type as OSCampus stores it, for example `quiz` or `text`. |
| Learning Resource Type | Lesson | The lesson type translated for schema.org. Quizzes become Quiz, Wistia, Vimeo and embedded lessons become Video, and text lessons become Lesson. |
| Module Title | Lesson | The title of the module the lesson belongs to. |
| Course Title | Lesson | The title of the course the lesson belongs to. |
| Course URL | Lesson | The URL of that course. |
| Course Description | Lesson | The description of that course. |
| Course Image | Lesson | The image of that course. OSCampus lessons have no image of their own, so map the Image property to this option. |

## [Map the Course properties](#course)

These are the mappings that fit an OSCampus course. Set them in the Course section of the Course Page item.

![Course properties mapped to OSCampus options](https://www.tassos.gr/images/2026/09/gsd-course-new-properties.png)

 | Property | Mapping Option |
|---|---|
| Time Required | Length in Minutes |
| Educational Level | Difficulty, or Learning Path Title if your learning paths stand for levels |
| Learning Outcomes | CSS Selector (see [Learning outcomes](#learning-outcomes) below) |

| Subjects | Tags |
| Teacher | Teacher |

OSCampus has no price field. Offer Category is required, and when Price isn't mapped the markup carries a price of `0.00`. So set Offer Category to Free for a free course, or map Price for a paid one.

## [Learning outcomes](#learning-outcomes)

OSCampus has no field for learning outcomes, so read them from the page with a [CSS Selector](https://www.tassos.gr/docs/google-structured-data/functionality/css-selectors). Most course pages show the outcomes as a bulleted list, so wrap that list in an element with a class of your own.

 ```
<ul class="my-outcomes">
  <li>Feed and keep a sourdough starter</li>
  <li>Shape and score a loaf</li>
</ul>
```

Then set *Learning Outcomes* to CSS Selector, enter `.my-outcomes li` and keep *Return Node Text*. Keep the `li` in the selector. It makes every list item a separate outcome, and without it the whole list lands in the markup as one long string.

The same works for lessons. Use the Learning Outcomes property of the Lesson Page item.

## [Publishing rules](#publishing-rules)

Leave the publishing rules disabled and the item runs on every page of its Integration View. To target specific content, use the OSCampus publishing rules.

![OSCampus publishing rules on a Lesson Page item](https://www.tassos.gr/images/2026/09/gsd-oscampus-publishing-rules.png)

 | Name | Description |
|---|---|
| Learning Path | Target specific learning paths. The rule also covers every course in those paths and every lesson of those courses, including courses you add later. |
| Course | Target specific courses, and every lesson of those courses. |
| Lesson | Target specific lessons only. |

Each item only lists the rules that make sense for its view. A Learning Path Page item shows the Learning Path rule, a Course Page item adds the Course rule, and a Lesson Page item shows all 3.

To learn more, read the Publishing Rules part of [How to Add Structured Data to Pages](https://www.tassos.gr/docs/google-structured-data/start/structured-data-to-pages#step4).

## [Notes](#notes)

- Structured data is generated on single learning path, course and lesson pages. Course list and overview pages get none.
- Learning paths and courses get markup only when they're published and the visitor's access level can view them. A lesson needs to be published and to belong to a course the visitor can view. The Start Publishing and Finish Publishing dates count too.
- The `hasCourse` and `syllabusSections` lists skip unpublished courses and lessons. A module with no published lessons is left out.
- Every text lesson is marked up as a Lesson. The integration reads the lesson type only, so it can't tell a theory lesson from a practical assignment.

 Last updated on Sep 28th 2026 16:09
