---
agentTools:
  projectIndex: https://opencontent.readme.io/v3.5/llms.txt
---

# Manifest

manifest.json

Manifest.json is where you specify some behavior of the template.
It is only required for multi items templates.

[block:code]
{
  "codes": [
    {
      "code": "{\n    \"editWitoutPostback\": true,\n    \"editRole\": \"OpenContentEditor\",\n    \"index\":  true, /* required for search */,\n    \"detailMetaTitle\": \"{{#if Seo.MetaTitle}}{{Seo.MetaTitle}}{{else}}{{Title}}{{/if}}\",\n    \"detailMetaDescription\": \"{{#if Seo.MetaDescription}}{{Seo.MetaDescription}}{{else}}{{Description}}{{/if}}\",\n    \"detailUrl\": \"{{Category.Title}}-{{#if Seo.Slug}}{{Seo.Slug}}{{else}}{{Title}}{{/if}}\",\n    \"detailMeta\": \"{{#if Image}}<meta property=\\\"og:image\\\" content=\\\"{{Image}}\\\" />{{/if}}<meta property=\\\"og:type\\\" content=\\\"article\\\" />\",\n    \"templates\": {\n        \"template\": {\n            \"type\": \"multiple\", /* single or multiple*/\n            \"title\": \"List\",     \n            \"clientSide\": true,\n            \"main\": {\n                \"template\": \"template.hbs\",\n                \"partialTemplates\": {\n                    \"item\": {\n                        \"template\": \"item.hbs\"\n                    }\n                },\n                \"schemaInTemplate\": true,\n                \"optionsInTemplate\": true,\n              \t\"dnnsearch\": true,\n                \"dnnSearchTitle\": \"{{Title}}\",\n                \"dnnSearchDescription\": \"{{Summary}}\",\n                \"dnnSearchText\": \"{{Text}}\"\n            },\n            \"detail\": {\n                \"template\": \"detail.hbs\",\n                \"partialTemplates\": {\n                    \"item\": {\n                        \"template\": \"item.hbs\",\n                        \"clientside\" :  true\n                    }\n                },\n                \"schemaInTemplate\": true,\n                \"optionsInTemplate\": true\n            }\n        },\n        \"categories\": {\n            \"type\": \"multiple\", /* single or multiple*/\n            \"title\": \"Categories\",\n            \"main\": {\n                \"template\": \"categories.hbs\",\n                \"schemaInTemplate\": true,\n                \"optionsInTemplate\": true,\n               \t\"dataInTemplate\": false,\n                \"additionalDataInTemplate\": true\n            }           \n        }\n    },\n   },\n   \"additionalData\": {\n        \"Intro\": {\n            \"title\": \"Introduction\",\n            \"scope\": \"tabmodule\" /* tabmodule, module, tab, portal */                    \n        },\n        \"Categories\": {\n            \"title\": \"Categories\"          \n        },\n        \"Tags\": {\n            \"title\": \"Tags\"\n        },\n        \"Customers\": {\n            \"title\": \"Customers\",\n            \"dataModuleId\": 123,\n            \"dataTabId\": 456\n        }\n    },\n   \"dataSource\": \"TrelloOpenContentDataProvider\",\n   \"dataSourceConfig\": {\n       \"username\":\"JohnDoe\",\n       \"password\":\"Mdd*951;\"\n   }\n}\n",
      "language": "json",
      "name": "manifest.json"
    }
  ]
}
[/block]

[block:api-header]
{
  "type": "basic",
  "title": "Manifest"
}
[/block]

[block:parameters]
{
  "data": {
    "h-0": "Name",
    "h-1": "Default Value",
    "h-2": "Remark",
    "0-0": "editWitoutPostback",
    "0-1": "false",
    "0-2": "in edit mode wrap the view control in an updatepanel to avoid full page postback",
    "1-0": "editRole",
    "1-2": "when specified, users with the editRole can add records and edit records created by them. (only applicable for multi items templates)",
    "7-0": "templates",
    "7-2": "list of templates included in the template folder",
    "7-1": "see Template",
    "2-0": "index",
    "2-1": "false",
    "2-2": "Content is indexed with Lucene for search, filtering & sorting.\n(new in v2.1)\n\nSee also [Search, Filter and Sort](https://opencontent.readme.io/docs/search)",
    "8-0": "additionalData",
    "8-1": "see additionalData",
    "8-2": "",
    "3-0": "detailMetaTitle",
    "4-0": "detailMetaDescription",
    "5-0": "detailUrl",
    "6-0": "detailMeta",
    "3-2": "handlebars template",
    "4-2": "handlebars template",
    "5-2": "handlebars template",
    "6-2": "handlebars template",
    "9-0": "dataSource",
    "9-2": "a string with the name of an OpenContent DataSourceProvider. \nSee also [External Datasources](https://opencontent.readme.io/docs/external-datasources)\noptional",
    "10-0": "dataSourceConfig",
    "10-2": "any valid json that will be given to the datasource provider via the DataSourceContext parameters in the interface calls. \nSee also [External Datasources](https://opencontent.readme.io/docs/external-datasources)\noptional",
    "9-1": "OpenContentProvider"
  },
  "cols": 3,
  "rows": 11
}
[/block]

[block:api-header]
{
  "type": "basic",
  "title": "Template"
}
[/block]

[block:parameters]
{
  "data": {
    "h-0": "Name",
    "h-1": "Default value",
    "h-2": "Remark",
    "0-0": "type",
    "0-2": "single or multiple",
    "1-0": "title",
    "1-2": "text listed in the templates dropdown lists",
    "3-0": "main",
    "3-2": "list template",
    "4-0": "detail",
    "4-2": "detail template",
    "3-1": "see Template File",
    "4-1": "see Template File",
    "2-0": "clientSideData",
    "2-1": "false",
    "2-2": "the content is served through webapi only (not available in the server side template)\n(new in v2.1)\n\nSee also [Search, Filter and Sort](https://opencontent.readme.io/docs/search)"
  },
  "cols": 3,
  "rows": 5
}
[/block]

[block:api-header]
{
  "type": "basic",
  "title": "Template File"
}
[/block]

[block:parameters]
{
  "data": {
    "0-0": "template",
    "h-0": "Name",
    "h-1": "Default Value",
    "h-2": "Remark",
    "0-2": "file name of the template file (.hbs or .cshtml)",
    "1-0": "partialTemplates",
    "1-2": "Only for handlebars templates. Load additional partial template files.",
    "2-0": "schemaInTemplate",
    "2-1": "false",
    "2-2": "Make the schema.json available as a variable schema (Model.Schema for razor) in template files",
    "3-0": "optionsInTemplate",
    "3-1": "false",
    "3-2": "Make the options.json available as a variable Options (Model.Options for razor) in template files",
    "4-0": "dataInTemplate",
    "5-0": "additionalDataInTemplate",
    "4-1": "true",
    "5-1": "false",
    "4-2": "Make the data available in the template",
    "5-2": "Make the additional  data available in the template",
    "6-0": "labelsInTemplate",
    "6-1": "false",
    "6-2": "Transform enum fields value to object with \"value\" (stored data from schema.json) and \"label\" (rendered value from options.json)",
    "7-0": "dnnsearch",
    "7-1": "false",
    "7-2": "Indicating whether integrate module content in DNN search",
    "8-0": "dnnSearchTitle",
    "8-2": "Template specifying the field(s) to use for document Title in DNN search results. (Handlebars template)",
    "9-0": "dnnSearchDescription",
    "9-2": "Template specifying the field(s) to use for document Description in DNN search results. (Handlebars template).  Search Text will be used if you leave this empty",
    "10-0": "dnnSearchText",
    "10-2": "Template specifying the field(s) to use for document indexing in DNN search. (Handlebars template)."
  },
  "cols": 3,
  "rows": 11
}
[/block]

[block:api-header]
{
  "type": "basic",
  "title": "Partial Templates"
}
[/block]

[block:parameters]
{
  "data": {
    "0-0": "template",
    "0-2": "file name of the partial template file",
    "1-0": "clientSide",
    "1-1": "false",
    "1-2": "File is rendered as i at the end of the module content. For example a handlebars client side template in a script tag. (new in v2.1)",
    "h-0": "Name",
    "h-1": "Default value",
    "h-2": "Remark"
  },
  "cols": 3,
  "rows": 2
}
[/block]

[block:api-header]
{
  "type": "basic",
  "title": "Additional Data"
}
[/block]

[block:parameters]
{
  "data": {
    "0-0": "title",
    "0-2": "Text shown in module actions menu",
    "h-0": "Name",
    "h-1": "Default value",
    "h-2": "Remark",
    "1-0": "scope",
    "1-2": "tabmodule, module, tab, portal\nnot applicable if dataModuleId is supplied.",
    "1-1": "module",
    "2-0": "storageKey",
    "3-0": "modelKey",
    "3-2": "deprecated",
    "3-1": "",
    "4-0": "dataModuleId\ndataTabId",
    "4-2": "If you want to relate to the (main) data of another module, then specify its ModuleId and TabId \n\nSee also [Relations](https://opencontent.readme.io/docs/relations)",
    "h-3": "Example",
    "4-3": "\"Customers\": {\n            \"title\": \"Customers\",\n            \"dataModuleId\": 123,\n            \"dataTabId\": 456\n}"
  },
  "cols": 4,
  "rows": 5
}
[/block]