Fork me on GitHub
2sxc 9.6 for DNN 7 to 9
Website Builder, Content Manager, App-System: open-source and amazing
You are here: Home  >  Docs

2sxc Documentation

We are currently re-working the documentation structure. The new structure will be:

  1. API documentation for Razor/C#, JavaScript (incl. $2sxc and $cms), WebServices, Edit-UIs etc. will be found on the 2sxc wiki.
  2. Features-documentation will be found on this page
  3. Learning tutorials and concepts will be in Learn
  4. Blogs, examples etc. are of course in Blog

Features of 2SexyContent with Details and How-To-Use

Filter by

Simple Apps allow quick deployment, installation, testing and clean removal without side effects. Install an app, adapt to your needs - simple and standardized, using tokens and razor. (added 06.00.00)
Tags: Entities, Lists, Linking, Razor, Token, Multi-Language, Apps,

With the new DataSource called App you can retrieve data from another App. For example, you can query a References-App from another Portal to show the same references again. (added 06.01.00)
Tags: Apps, Data and Data Sources, For experts, Razor, new in 6.x,

Using the App-Object you can access path information, settings and resources. (added 05.05.00)
Tags: Razor, Token, Apps, new in 6.x,

Now apps can use centralized settings and multilingual resources for their templates. Works with tokens and razor. (added 06.00.00)
Tags: Apps, For experts, Multi-Language, new in 6.x, Razor, Token,

Using simple server-side commands, you can create entities, edit and delete them in code. Thanks to this feature, you can create your own edit-dialogs or partial dialogs for workflows and similar. Also create simple or complex feedback forms and more. (added 06.05)
Tags: Apps, Entities, Razor, new in 6.x, Database, For experts, WebApi,

Supports placing all data in the module into the DNN-Search. This works for simple items (like title/text/image) as well as for lists. The special feature is that it allows you to change how the index works. You could specify an alternate (detail-page) url for each item. (added 06.02.00)
Tags: Apps, Data and Data Sources, Entities, For experts, Razor, new in 6.x, Lists, Lists with Details, Search,

Now you can easily add any kind of data to the pipeline with the DataTableDataSource. This is great for adding XML, RSS, NoSQL sources, Resx-files and much, much more. (added 06.00.06)
Tags: Apps, Data and Data Sources, Database, Entities, For experts, Import/Export, Lists, Lists with Details, new in 6.x, Razor,

Easily access backend data with a DataSource. Attach some filters and viola! you get a very powerfull, configuration based data query system. (added 04.00.00)
Tags: Apps, Lists, Lists with Details, Razor, For experts, Database, Data and Data Sources,

To keep things nice and separate data-preparation from data presentation we added a method called CustomizeData(). This is always called before the template is processed - for showing, for JSON delivery and for search-indexing. (added 06.01.00)
Tags: Data and Data Sources, Database, For experts, Razor, new in 6.x, Lists, Lists with Details, Search,

Need to know more about @Dnn.Portal, @Dnn.Module.Id, Dnn.User, Dnn.Tab or similar - this is your best starting point. (added 01.00)
Tags: Razor, DNN/DotNetNuke,

This can now be done in code. (added 06.01.00)
Tags: JavaScript, Razor, new in 6.x,

Awesome Image-Resizer with really neat features. (added 05.03.00)
Tags: Images, HTML and CSS, For beginners, Design, Token, Razor, Linking, Lightbox,

With InstancePurpose your code knows if it's running to be templated, for publishing JSON data or for search indexing. (added 06.01.00)
Tags: Apps, Search, new in 6.x, Razor,

Amazingly simple integration with knockoutJS. An amazingly simple data-backend using 2SexyContent, a cool JS-Framework to play with the output - all connected with the Data-Pipeline of 2SexyContent. (added 04.00.00)
Tags: JavaScript, Import/Export, Lists, Lists with Details, Razor, Token, Apps,

Once you apply a list to a template, you suddenly have multile items presented - maybe as a table or as a designed list. What you then often need is a way to add a title before that or create settings for the way the list is presented. (added 03.00.00)
Tags: Razor, Token, Lists, Lists with Details, For beginners,

You can use strongly typed data sources with safe configuration to supply your templates with any data you need. (added 05.00.00)
Tags: Apps, Content Types, Database, Entities, For experts, Razor, new in 5.x, new in 6.x, Data and Data Sources,

Designed content can be one item, or it can be an entire list of items. This is very easy to do. (added 03.00.00)
Tags: Razor, Token, Lists, Design, For beginners,

With the simple toolbar you can enhance the editing experience. (added 03.00.00)
Tags: Token, Razor, For beginners,

Use simple HTML-tags or javascript to create inline or hovering add and edit-buttons (added 06.00.00)
Tags: HTML and CSS, JavaScript, Token, Razor, Apps, new in 6.x, New in 7.x, new in 8.x,

Use 2SexyContent to create lists and then show cool detail pages in lightboxes or otherwise. All SEO-optimized. (added 04.00.00)
Tags: Razor, Lightbox, Linking, Lists, Lists with Details,

Now you can user @RenderPage to call other Razor-Scripts, and these scripts automatically receive the save Content, List, Presentation etc. variables to work with. This allows you to re-use partial templates. (added 06.00.00)
Tags: Apps, new in 6.x, Razor, Linking,

You can easily use PetaPoco in Razor Templates with DNN and 2SexyContent. (added 06.00.06)
Tags: Apps, Data and Data Sources, Database, For experts, Razor, new in 6.x, Import/Export,

Now you can connect entities (like authors and books) in awesome ways. Also extremely usefull for tagging and similar scenarios. (added 05.03.00)
Tags: Lists, Linking, Field Configuration, Entities, Razor, Relationships,

The new RelationshipFilter helps in list-pages to find all items with a category and similar scenarios. (added 06.01.00)
Tags: Data and Data Sources, Entities, Razor, Linking, Lists with Details,

You can create templates that allow configuration with the Presentation-Element. For example, you could configure image-size or placement, click-behavior or show/hide things in your template. (added 03.00.00)
Tags: Content Types, Lists, Razor, Token,

There are cases where certain parts of an app should be shared across multiple zones / portals. (added 02.00.00)
Tags: Admin and Edit Dialogs, Apps, For beginners, Razor, Token,

It was always possible to use SQL data before, but with the new data sources it actually is fun to use and fully integrated. (added 06.00.06)
Tags: Apps, Database, Data and Data Sources, Entities, For experts, Lists, Razor, new in 6.x,

Thanks to the fully automated WebAPI integration you can easily include and distribute your WebAPIs with you Apps. (added 06.05)
Tags: Apps, For experts, Import/Export, JavaScript, new in 6.x, WebApi, Razor, Token,

Look inside

Content Item

These are the values a content-editor can manage.
Name Type Value
Title System.String App Information - Object and Token
Teaser System.String Using the App-Object you can access path information, settings and resources.
AddedInVersion System.String 05.05.00
DescriptionLong System.String <p>This new variable / token was introduced to help templates become flexible.&nbsp;</p> <p>Usage Tokens</p> <ul> <li>[App:Path]/scripts/knockout.js</li> <li>[App:PhysicalPath]</li> <...
ImageTeaser System.String
Image System.String
DocumentedOnPage System.String Page:463
StatusDocumentation System.String 3
StatusDevelopment System.String 10
DesignedContent ToSic.Eav.Data.EntityRelationship
ReplacementDocs null
Tags ToSic.Eav.Data.EntityRelationship 1840,1841,1910,2440
RelatedFeatures ToSic.Eav.Data.EntityRelationship 1831
DemoAppGuid System.String
DemoPage System.String


Presentation Item

These are additional, optional presentation instructions a content-editor can manage. If none are entered, a default set (predefined by the designer) will be used.

No Presentation parameters specified, using default presentation for this item.


Template file

@using DotNetNuke.Entities.Modules
@using ToSic.SexyContent.Search
@using ToSic.Eav.DataSources
@functions
{
    public override void CustomizeData()
    {
        // Don't customize anything, nothing to customize in this case
        //throw new Exception("demo");
        var relationshipFilter = CreateSource<RelationshipFilter>(Data["Default"]);
        relationshipFilter.Relationship = "Tags";
        relationshipFilter.Filter = "[QueryString:Tag]";
        if (relationshipFilter["Default"].List.Count > 0)
        {
            Data.In["Default"] = relationshipFilter["Default"];
        }
    }

    /// <summary>
    /// Populate the search - ensure that each entity has an own url/page
    /// </summary>
    /// <param name="searchInfos"></param>
    /// <param name="moduleInfo"></param>
    /// <param name="startDate"></param>
    public override void CustomizeSearch(Dictionary<string, List<ISearchInfo>> searchInfos, ModuleInfo moduleInfo, DateTime startDate)
    {

        foreach (var si in searchInfos["Default"])
        {
            si.QueryString = "mid=" + moduleInfo.ModuleID + "&feature=" + si.Entity.EntityId;
        }
    }


}@if (Request.QueryString["feature"] == null)
{
    // Note: the code inside _List.cshtml could also be inserted right here
    // I just took it out to make everything a bit easier to read
    // The Render-Page will execute that CSHTML and include all data that is in the current view
	@RenderPage("_2SexyContent Feature - List.cshtml");
}
else
{
    // This one will also execute another CSHTML, but will add a variable with the URL-parameter
	@RenderPage("_2SexyContent Feature - Details.cshtml", Request.QueryString["Feature"]);
}
2serve . 2invent . 2create is 2be.