Dolphin 8: Pages

AlexT posted 19th of January 2012 in Dolphin.pro News. 7 comments.

Updated API in Dolphin 8 - Pages. It allows to display pages which are built from studio. The main difference is that old system had column based pages, but the new one has layout based pages.

The new system has the following main features:

  • Layouts - page can have any structure, not just columns.
  • SEO - page can have own SEO options, like meta tags and meta keywords, as well as instructions for search bots.
  • Cache - page can be cached on the server.
  • Access control - page access can be controlled using member levels.

Creating the Page object

1. Add record to sys_objects_page table:

  • object - name of the page object, in the format: vendor prefix, underscore, module prefix, underscore, internal identifier or nothing; for example: bx_profiles_view - profile view page.
  • title - name to display as page title.
  • module - the module this page belongs to.
  • layout_id - page layout to use, this is id of the record from sys_pages_layouts table.
  • visibile_for_levels - bit field with set of member level ids. To use member level id in bit field - the level id minus 1 as power of 2 is used, for example:
    • user level id = 1 -> 2^(1-1) = 1
    • user level id = 2 -> 2^(2-1) = 2
    • user level id = 3 -> 2^(3-1) = 4
    • user level id = 4 -> 2^(4-1) = 8
  • visibile_for_levels_editable - it determines if visibile_for_levels field is editable from page builder, visibility options can be overriden by custom class and shouldn't be editable in this case.
  • url - the page url, if it is static page.
  • meta_description - meta description of the page.
  • meta_keywords - meta keywords of the page.
  • meta_robots - instructions for search bots.
  • cache_lifetime - number of seconds to store cache for.
  • cache_editable - it determines if cache can be edited from page builder.
  • deletable - it determines if page can be deleted from page builder.
  • override_class_name - user defined class name which is derived from BxTemplPage.
  • override_class_file - the location of the user defined class, leave it empty if class is located in system folders.

Page can select appropriate menu automatically if module and object fields in sys_objects_page table are matched with module and name fields in sys_menu_items table.

2. Add page blocks to sys_pages_blocks table:

  • object - page object name this block belongs to.
  • cell_id - cell number in page layout to place block to.
  • module - module name this block belongs to.
  • title - block title.
  • designbox_id - design box to use to diplay page block, it is id of the record from sys_pages_design_boxes table.
  • visibile_for_levels - bit field with set of member level ids. To use member level id in bit field - the level id minus 1 as power of 2 is used, for example:
    • user level id = 1 -> 2^(1-1) = 1
    • user level id = 2 -> 2^(2-1) = 2
    • user level id = 3 -> 2^(3-1) = 4
    • user level id = 4 -> 2^(4-1) = 8
  • type - block type:
    • raw - HTML block, displayed in page builder as HTML textarea.
    • html - HTML block, displayed in page builder as visual editor, like TinyMCE.
    • lang - translatable language string, displayed in page builder as editable language key.
    • image - just an image, displayed in page builder as HTML upload form.
    • rss - RSS block, displayed in page builder as editable URL to RSS resource, along with number of displayed items.
    • menu - menu block, displayed as menu selector.
    • service - to display block content, the provided service method is used.
  • content - depending on type field:
    • raw - HTML string.
    • html - HTML string.
    • lang - language key.
    • image - image id in the storage and alignment (left, center, right) for example: 36#center
    • rss - URL to RSS with number of displayed items, for example: http://www.example.com/rss#4
    • menu - menu object name.
    • service - serialized array of service call parameters: module - module name, method - service method name, params - array of parameters.
  • deletable - is block deletable from page builder.
  • copyable - is block can be copied to any other page from page builder.
  • order - block order in particular cell.

Block design boxes are stored in sys_pages_design_boxes table:

  • id - consistent id, there are the following defines can be used in the code for each system block style:
    • 0 - BX_DB_CONTENT_ONLY - design box with content only - no borders, no background, no caption.
    • 1 - BX_DB_DEF - default design box with content, borders and caption.
    • 2 - BX_DB_EMPTY - just empty design box, without anything.
    • 3 - BX_DB_NO_CAPTION - design box with content, like BX_DB_DEF but without caption.
    • 10 - BX_DB_PADDING_CONTENT_ONLY - design box with content only wrapped with default padding - no borders, no background, no caption; it can be used to just wrap content with default padding.
    • 11 - BX_DB_PADDING_DEF - default design box with content wrapped with default padding, borders and caption.
    • 13 - BX_DB_PADDING_NO_CAPTION - design box with content wrapped with default padding, like BX_DB_DEF but without caption.
  • title - block name which is displayed in studio, describes block styles.
  • template - template name to use to display page block.

3. Display the Page.

Use the following sample code to display page:

    bx_import('BxDolPage');
    $oPage = BxDolPage::getObjectInstance('sample'); // 'sample' is 'object' field from 'sys_objects_page' table, it automatically creates instance of default or custom class by object name
    if ($oPage)
        echo $oPage->getCode(); // print page


Changelog:
2012-01-25:
- typo - designbox_id field - sys_pages_blocks -> sys_pages_design_boxes
2012-02-03:
- alignment was added to the image block
2012-02-06:
- automatic menu selection paragraph was added
2012-02-17:
- cache_server was renamed to cache_lifetime
 
Recommended by
 
 
Comments
·Oldest
·Top
Please login to post a comment.
tomakali
this is super awesome...
so, can the members create their own pages? and selectively install the apps[mods] which they WANT?
sadel
it is disapointing... i'm still hopping that one day user will be able to create their own page within my site.
Andrew Boon
It is not so much technical as a design issue. There's very little evidence that there's actual use in allowing members to build their own pages. We just can't see use-cases to justify this.
mlquickel
whats the eta on d8 and if we have d7 do we have to buy a new d8 key?
 
 
Below is the legacy version of the Boonex site, maintained for Dolphin.Pro 7.x support.
The new Dolphin solution is powered by UNA Community Management System.
PET:0.17324495315552