Fork me on GitHub
2sxc 9.33 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

Now you can easily get all Categories with App.Data["Category"] or all questions with App.Data["Question"]. You can also use this as the input for further filtering, sorting and more. (added 06.01.00)
Tags: Apps, Content Types, Data and Data Sources, Database, Entities, For experts, Lists, Multi-Language, new in 6.x,

Since 2sxc 8.4 you can create content-blocks inside other content blocks. This allows you to create list/details scenarios and still use designed 2sxc-content block or even gallery apps inside the details-page. (added 08.04.00)
Tags: Content Types, Design, DNN/DotNetNuke, for designers, For experts, Lists, Lists with Details, new in 8.x,

A content-type defines the structure of an information-set. A news-item has a title, body and date, whereas a person also needs first/last names, birthday, etc. (added 01.00.00)
Tags: Field Configuration, Entities, Content Types, For beginners,

Sometimes you just want to add piece of HTML to your page that will always be the same - like a decorative line. Since you're not adding any data, there is no content-type to choose from. This is where the Design-Element is used. (added 01.00.00)
Tags: Content Types, Design, for designers, HTML and CSS, Images,

Export/Import is now available and handles a variety of complex scenarios. It can match languages, re-link files and much more. (added 05.04.00)
Tags: Import/Export, Content Types, Entities, Images, Linking, Multi-Language,

This input-type is for creating url-parts which are safe, lower-case and without special characters. It prevents bad input and can automatically be populated based on another field - like the title. Use it to define URLs for News, Blogs, Artices, Real-Estate-Items and more. (added 08.03.05)
Tags: Admin and Edit Dialogs, Content Types, Editing, Linking, Lists, new in 8.x, Field Configuration,

Each field type has special features and ways to use it. We try to keep all options/feature listed in our documentation. (added 01.00.00)
Tags: Field Configuration, Content Types, Relationships,

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,

The new quick-dialog shows preview-images for apps, views/templates and content-types. Here's how it works and how you can use it. (added 09.01)
Tags: Apps, Content Types, for designers, new in 9.x,

Now 2sxc offers a simple REST API so that you can access content like .../app-content/Feedback/342 to perform all kinds of actions using JavaScript. (added 07.01.00)
Tags: AngularJS, Content Types, Import/Export, JavaScript, New in 7.x, WebApi,

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,

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"]);
}