Liferay reference resources

About

 A compendium of reference resources found online.

Contents


Liferay on Twitter

Liferay on IRC

Liferay Community Forums

Community Forums

Liferay source code

Liferay's main source code resides in two repositories, Liferay Portal and Liferay Plugins, as expanded below. Please note that I have only expanded upon what I have personally referenced. Please expand the index as you reference useful and undocumented areas in the code base.

Liferay maintains several other repositories related to features and supporting documentation.

If you wish to build core Liferay or its plugins, read the CONTRIBUTING guide. It includes details on using the repositories and building the software.

On GitHub...


Liferay Developer Network - User & Admin > User Guide

What is Liferay Portal?


Building a Site with Liferay Web Experience



Using Liferay Portal as a collaborative platform

Using Liferay as a web platform



Extending and customizing Liferay for your own needs



Summary


Web Experience Management


Starting Site Development


Creating Sites



Creating and Managing Pages



Displaying Pages on Mobile Devices



Building Sites from Templates



Creating Pages from Templates



Importing/Exporting Pages and Content



Creating Teams for Advanced Site Membership Management


Creating Web Content


Publishing Basic Web Content



Designing Uniform Content


Staging Content for Publication


Enabling Staging



Using the Staging Environment



Scheduling Web Content Publication


Publishing Content Dynamically


Organizing Content with Tags and Categories



Defining Content Relationships



Geolocating Assets



Searching for Content



Publishing Assets



Publishing RSS Feeds


Restoring Deleted Assets

Configuring Applications


Look and Feel Configuration



Exporting/Importing App Data



Communication Between Apps



Sharing Applications with Other Sites



Application Permissions



Application Scope



Configuration Templates


Styling Apps with Application Display Templates


Collaboration



Managing Documents and Media



Collaborating



Creating A Social Network


Business Productivity


Collecting Information from Users


Basic Forms



Creating Advanced Forms


Creating Simple Applications


Creating Data Definitions



Creating Data Lists



Using Templates to Display Forms and Lists


Using Workflow


Enabling Workflow

User Management


Adding and Managing Users



Adding and Managing Organizations



User Groups



Roles and Permissions



Password Policies


Managing Apps


Managing and Configuring Apps



Using the Liferay Marketplace



Installing Apps Manually



Liferay App Types


Configuring Liferay Portal


Setting Up a Liferay Portal Instance



System Wide Settings



Using Liferay’s Script Engine



Using Web Services for Remote Portlets (WSRP)



Custom Fields



Liferay Developer Network - User & Admin > Development


Liferay Developer Network - User & Admin Reference

Liferay Developer Network - User & Admin > Social Office


Liferay Developer Network - Developer > Tutorials

Introduction to Liferay Development




Fundamentals




Liferay as a Development Platform




Introduction to Front-End Development





JavaScript in Liferay Portal




Metal.js



Starting Module Development




Configuring Dependencies




Finding Extension Points



From Liferay Portal 6 to 7



What Hasn’t Changed and What Has




Benefits of Liferay Portal CE 7.0 for Liferay Portal 6 Developers




OSGi and Modularity for Liferay Portal 6 Developers




Improved Developer Tooling: Liferay Workspace, Maven Plugins and More




Planning Plugin Upgrades and Optimizations




Upgrading Plugins to Liferay Portal CE 7.0





Adapting to Liferay Portal CE 7.0’s API with the Code Upgrade Tool




Resolving a Plugin’s Dependencies




Upgrading the Liferay Maven Build




Upgrading Your Theme from Liferay Portal 6.1 to 7.0




Upgrading Your Theme from Liferay Portal 6.2 to 7.0




Upgrading Portlet Plugins




Upgrading Hook Plugins




Upgrading Layout Templates







Optimizing Plugins for Liferay Portal CE 7.0





Migrating Traditional Plugins to Workspace Web Applications




Modularizing Plugins




Migrating a Theme from the Plugins SDK to the Liferay Theme Generator




Migrating a Theme from the Plugins SDK to Workspace



Customization with Ext Plugins



Liferay Portal Comparison 6.2 vs 7.0 vs 7.1 Overview


Developing a Web Application



Development Setup Overview




Creating a Working Prototype





Writing Your First Liferay Portal Application




Creating an Add Entry Button




Generating Portlet URLs




Linking to Another Page




Triggering Portlet Actions




Creating a Form




Implementing Portlet Actions




Displaying Guestbook Entries



Generating the Back-end





What is Service Builder?




Generating Model, Service, and Persistence Layers




Implementing Service Methods



Refactoring the Prototype





Organizing Folders for Larger Applications




Defining the Component Metadata Properties




Creating Portlet Keys




Integrating the New Back-end




Updating the View




Fitting it All Together



Writing an Administrative Portlet





Creating the Classes




Adding Metadata




Updating Your Service Layer




Defining Portlet Actions




Creating a User Interface







Using Resources and Permissions





Configuring Your Permissions Scheme




Permissions in the Service Layer




Creating Permissions Helper Classes




Permissions in JSPs



Displaying Messages and Errors





Creating Language Keys




Adding Failure and Success Messages




Adding Messages to JSPs







Leveraging Search





Enabling Search and Indexing for Guestbooks




Enabling Search and Indexing for Guestbook Entries




Updating Your User Interface For Search







Assets: Integrating with Liferay’s Framework





Enabling Assets at the Service Layer




Implementing Asset Renderers




Adding Asset Features to Your User Interface



Generating Web Services





Creating Remote Services with Service Builder




Implementing Permission Checks


Writing an Android App for Liferay Portal





Beginning Android Development for Your Liferay Portal Instance





Setting up the Guestbook Portlet




Building the Guestbook Mobile SDK




Creating the Android Project




Installing the Guestbook Mobile SDK and Liferay Screens for Android




Designing Your App




Using Login Screenlet for Authentication







Creating Guestbook List Screenlet





Getting Started with Guestbook List Screenlet




Creating Guestbook List Screenlet’s UI




Creating Guestbook List Screenlet’s Interactor




Creating Guestbook List Screenlet’s Screenlet Class



Creating Entry List Screenlet





Getting Started with Entry List Screenlet




Creating Entry List Screenlet’s UI




Creating Entry List Screenlet’s Interactor




Creating Entry List Screenlet’s Screenlet Class



Using the Guestbook List and Entry List Screenlets





Understanding GuestbooksActivity’s UI




Preparing GuestbooksActivity for Guestbook List Screenlet




Using Guestbook List Screenlet




Creating a Fragment for Entry List Screenlet




Using Entry List Screenlet


Tooling



Liferay IDE





Installing Liferay IDE




Creating a Liferay Workspace with Liferay IDE




Setting Proxy Requirements for Liferay IDE




Updating Liferay IDE




Creating Modules with Liferay IDE




Creating Themes with Liferay IDE




Deploying Modules with Liferay IDE




Managing Module Projects with Liferay IDE




Installing a Server in Liferay IDE




Using Gradle in Liferay IDE




Using Maven in Liferay IDE




Enabling Code Assist Features in Your Project




Using Front-End Code Assist Features in IDE



Blade CLI





Installing Blade CLI




Installing Blade CLI with Proxy Requirements




Creating a Liferay Workspace with Blade CLI




Creating Modules with Blade CLI




Deploying Modules with Blade CLI




Managing Your Liferay Server with Blade CLI




Updating Blade CLI



Liferay Workspace





Installing Liferay Workspace




Configuring a Liferay Workspace




Setting Proxy Requirements for Liferay Workspace




Development Lifecycle for a Liferay Workspace




Updating Liferay Workspace



Maven





Installing Liferay Maven Artifacts




Generating New Projects Using Archetypes




Creating a Module JAR Using Maven




Deploying a Module Built with Maven to Liferay Portal




Creating a Maven Repository




Deploying Liferay Maven Artifacts to a Repository




Using Service Builder in a Maven Project




Compiling Sass Files in a Maven Project




Building Themes in a Maven Project




Maven Workspace



Liferay Sample Modules



Portlets



Liferay MVC Portlet





Creating an MVC Portlet




MVC Action Command




MVC Render Command




MVC Resource Command



Liferay Soy Portlet





Creating a Soy Portlet



Spring MVC




JSF Portlets with Liferay Faces





Generating a JSF Project from the Command Line




Generating a JSF Project Using IDE




Creating a JSF Project Manually




Services in JSF



Making URLs Friendlier




Preparing Your JavaScript Files for ES2015





Using ES2015 Modules in your Portlet



Applying Lexicon Styles to your App




Automatic Single Page Applications




Creating Layouts inside Custom Portlets



Customizing



Overriding Core JSPs




Overriding App JSPs




Overriding Liferay Services (Service Wrappers)




Overriding Language Keys




Overriding MVC Commands




Overriding lpkg files




Creating Model Listeners



Application Display Templates



Implementing Application Display Templates



Mobile



Android Apps with Liferay Screens





Preparing Android Projects for Liferay Screens




Using Screenlets in Android Apps




Using Views in Android Screenlets




Using Offline Mode in Android




Architecture of Liferay Screens for Android




Architecture of Offline Mode in Liferay Screens




Creating Android Screenlets




Creating Android List Screenlets




Creating Android Views




Packaging Your Android Screenlets




Using Liferay Push in Android Apps




Accessing the Liferay Session in Android




Adding Custom Interactors to Android Screenlets




Rendering Web Content in Your Android App




Adding Offline Mode Support to Your Android Screenlet




Android Best Practices




Liferay Screens for Android Troubleshooting and FAQs



iOS Apps with Liferay Screens







Mobile SDK






Service Builder



What is Service Builder?




Service Builder Persistence







Business Logic with Service Builder






Data Access



Data Scopes



Web Services





JAX-WS and JAX-RS




Service Builder Web Services







Liferay WebSocket Whiteboard



Asset Framework



Adding, Updating, and Deleting Assets for Custom Entities




Implementing Asset Categorization and Tagging




Relating Assets




Implementing Asset Priority




Rendering an Asset



Liferay’s Workflow Framework


Export/Import and Staging





Decision to Implement Staging




Understanding Staged Models




Generating Staged Models Using Service Builder




Creating Staged Models Manually




Understanding Data Handlers




Developing Data Handlers




Initiating New Processes with ExportImportConfiguration Objects




Using the Export/Import Lifecycle Listener Framework



Configuration



Making Your Applications Configurable




Implementing Configuration Actions




Transitioning from Portlet Preferences to the Configuration API



Social



Applying Social Bookmarks




Adding Comments to your App




Rating Assets




Implementing Ratings Type Selection and Value Transformation



Item Selector



Selecting Entities Using the Item Selector




Creating Custom Item Selector Entities




Creating Custom Item Selector Views



Liferay Forms



Form Field Types





Creating Form Field Types




Adding Settings to Form Field Types


Introduction to Liferay Search



Customizing Liferay Search



Application Security



Adding Permissions to Resources




Authentication Pipelines







Service Access Policies



Internationalization



Localizing Your Application




Automatically Generating Language Files




Using Liferay’s Language Settings



WYSIWYG Editors



Adding a WYSIWYG Editor to a Portlet




Modifying an Editor’s Configuration




Adding New Behavior to an Editor




AlloyEditor





Creating and Contributing new Buttons to AlloyEditor


JavaScript Module Loaders



Configuring Modules for Liferay Portal’s Loaders




Using External Libraries




Liferay AMD Module Loader




Loading Modules with AUI Script in Liferay Portal



Liferay JavaScript API’s



Liferay ThemeDisplay (star)(star)(star)(star)(star)




Working with URLs in JavaScript




Liferay Portal JavaScript Utilities




Invoking Liferay Services



Front-End Taglibs



Using the Liferay UI Taglib




Using the Liferay Util Taglib



HTML Forms



Forms and Validation




Creating Forms with Liferay’s Taglibs




Form Navigator Extensions




Creating Form Navigator Contexts



Themes and Layout Templates



Themes





Liferay Theme Generator




Themelets




Importing Resources with a Theme




Using Developer Mode with Themes




Theme Contributors




Context Contributors




Macros




Theme Builder




Creating a Theme Thumbnail




Specifying Color Schemes in your Theme



Layout Templates





Layout Templates with the Liferay Theme Generator




Creating Layout Templates Manually







Portlets and Themes





Theming Portlets




Embedding Portlets in Themes and Layout Templates




Portlet Decorators







Lexicon CSS and Themes





Importing Lexicon CSS into a Theme


Product Navigation





Customizing the Product Menu




Customizing the Control Menu




Extending the Simulation Menu




Providing the User Personal Bar



Testing





Unit Testing with JUnit




Liferay Slim Runtime




Arquillian Extension for Liferay Example





Arquillian Example Sample Portlet




Arquillian Integration Test Example




Arquillian Functional Test Example




JaCoCo Code Coverage Example




Running the Arquillian Example



Injecting Service Components into Tests



OSGi Basics for Liferay Development





Adding Third Party Libraries to a Module




Using the WAB Generator




Overriding Reluctant Service References



Troubleshooting



Resolving Bundle Requirements




Resolving Bundle-SymbolicName Syntax Issues




Why Aren’t my Module’s JavaScript and CSS Changes Showing?




Resolving ClassNotFoundException and NoClassDefFoundError in OSGi Bundles




Why Aren’t JSP overrides I Made Using Fragments Showing?




Connecting to Data Sources Using JNDI




Detecting Unresolved OSGi Components




Adjusting Module Logging




Implementing Logging




Using OSGi Services from EXT Plugins




Calling Non-OSGi Code that Uses OSGi Services




Identifying Liferay Artifact Versions for Dependencies




Declaring Optional Import Package Requirements



Data Upgrades





Creating Data Upgrade Processes for Modules




Upgrading Data Schemas in Development



Customizable Web Applications





Providing Portlets to Manage Requests




Liferay Developer Network - Developer > Reference

Development Reference


Liferay API Modules


Portlet Descriptor to OSGi Service Property Map


Classes Moved from portal-service.jar


Theme Gulp Tasks


Theme Reference Guide


Screenlets in Liferay Screens for Android



Screenlets in Liferay Screens for iOS



Liferay Faces



Liferay Faces Version Scheme


Understanding Liferay Faces Bridge


Understanding Liferay Faces Alloy


Understanding Liferay Faces Portal

Gradle



Maven



Service Builder Plugin


Source Formatter Plugin


Theme Builder Plugin

Project Templates



Activator Template


API Template


Control Menu Entry Template


Form Field Template


Fragment Template


FreeMarker Portlet Template


Layout Template


MVC Portlet Template


Panel App Template


Portlet Configuration Icon


Portlet Template


Portlet Provider Template


Portlet Toolbar Contributor Template


REST Template


Service Template


Service Builder Template


Service Wrapper Template


Simulation Panel Entry Template


Soy Portlet Template


Spring MVC Portlet Template


Template Context Contributor Template


Theme Template


Theme Contributor Template

Sample Modules



Apps


Extensions


Overrides


Themes

Item Selector Criterion and Return Types


Felix Gogo Shell


Breaking Changes



Liferay Developer Network - Developer > Liferaypedia

Liferaypedia is a community driven effort that attempts to describe all terms that are related to Liferay either directly or indirectly.


docs.liferay.com


Various other Liferay resources

Click column headings to sort column...

Title Author Published or
last known update
Parent, Source Site
or Collection
Topic 1 Topic 2

Tutorial: Advanced Navigation in Liferay Themes

kl Hamilton

2013-06-06


Tutorial: Advanced Navigation in Liferay Themes – Part 2 kl Hamilton 2013-06-06


Tutorial: Advanced Navigation in Liferay Themes – Part 3 kl Hamilton 2013-06-06


Top 5 DevOps Features in Liferay DXP

Keith O'Connell

2016-09-01


Introducing Speedray Architecture Pattern for Liferay DXP

Don Davis

2016-10-28


The Top 10 New Features in Liferay DXP 7

Vivek Agarwal

2016-08-12


Global Scope






How to use the new Global Scope






http://localhost:8080/api/jsonws/

localhost REST API
Non-official Liferay Portal CE images on DockerHub! Manuel de la Peña 2017-09-20 Company Blogs

A Checkbox Named Cacheable

Javeed Chida 2017-06-12 JAVEED CHIDA Blog

Crafting document download links in a velocity asset publisher ADT

Javeed Chida 2017-01-19 JAVEED CHIDA Blog Application Display Templates (ADTs)

Stopping By Abou Shousha's On A Snowy Evening

Javeed Chida 2016-12-08 JAVEED CHIDA Blog Categories Tags

Content SEO Title - Putty In Your Hand

Javeed Chida 2016-11-11 JAVEED CHIDA Blog SEO Page Titles

My 27th of September at LSNA2016

Javeed Chida 2016-09-27 JAVEED CHIDA Blog Liferay Symposium 2016

My 26th of September at LSNA2016

Javeed Chida 2016-09-26 JAVEED CHIDA Blog Liferay Symposium 2016

Content SEO - Hidden In Plain Sight

Javeed Chida 2016-09-15 JAVEED CHIDA Blog SEO Metadata

The Glorious Simplicity of Structure Inheritance

Javeed Chida 2016-08-13 JAVEED CHIDA Blog Structures

Fun with Generic Content Templates

Javeed Chida 2016-07-01 JAVEED CHIDA Blog Templates

Smart content using category properties

Javeed Chida 2016-05-18

JAVEED CHIDA Blog

Categories

Liferay Portal CMS Concepts for Non-Technical Users

Javeed Chida 2016-05-12 JAVEED CHIDA Blog Liferay Content Management

Content-driven applications: A Marriage Between CMS Templates and RESTful services

Javeed Chida 2016-04-15 JAVEED CHIDA Blog Templates REST

Oh How I Love Asset Publisher, And Making Peace With Content Friendly URLs

Javeed Chida 2016-02-19 JAVEED CHIDA Blog

Crafting Content Friendly URLs

Javeed Chida 2016-01-22 JAVEED CHIDA Blog

Search-backed and content-driven Megamenus

Javeed Chida 2015-12-28 JAVEED CHIDA Blog

Customizing Liferay search results with a JSP hook & a content template

Javeed Chida 2015-11-30 JAVEED CHIDA Blog

LRNAS2015 left me cautiously craving a 7.0 upgrade

Javeed Chida 2015-11-25 JAVEED CHIDA Blog Liferay Symposium 2015

Necessary SiteMinder Configuration..

David H Nebinger 2017-09-08

DAVID H NEBINGER Blog

SiteMinder

Building JS Portlets Part 2

David H Nebinger 2017-06-27 DAVID H NEBINGER Blog

Building JS Portlets Part 1

David H Nebinger 2017-06-27 DAVID H NEBINGER Blog

Responsive Responsibility

David H Nebinger 2017-06-26 DAVID H NEBINGER Blog

Disabling LPKG Index Validation

David H Nebinger 2017-06-21 DAVID H NEBINGER Blog

Fixing Module Package Access Modifiers

David H Nebinger 2017-06-17 DAVID H NEBINGER Blog

REST Custom Context Providers

David H Nebinger 2017-06-16 DAVID H NEBINGER Blog

Resolving Missing Components

David H Nebinger 2017-06-15 DAVID H NEBINGER Blog

Securing The /api/jsonws UI

David H Nebinger 2017-06-12 DAVID H NEBINGER Blog

ServiceBuilder and Upgrade Processes

David H Nebinger 2017-05-17 DAVID H NEBINGER Blog

Getting Started with Building Liferay from Source

Minhchau Dang 2017-05-18

MINHCHAU DANG Blog



Divide and Conquer: Rendering Structured Web Content with the Asset Publisher

Eduardo P. Garcia 2017-07-19

EDUARDO P. GARCIA Blog

Application Display Templates (ADT)

Fantastic Extension Points - And Where to Find Them

Eduardo P. Garcia 2016-12-02 EDUARDO P. GARCIA Blog

Integrating Audience Targeting with your Apps – Part II: Rules

Eduardo P. Garcia 2015-10-18 EDUARDO P. GARCIA Blog

Reach the Right Audience: Integrating Audience Targeting with your Apps

Eduardo P. Garcia 2015-10-04 EDUARDO P. GARCIA Blog

Implementing custom authentication in DXP

ANKIT SRIVASTAVA 2017-07-03

ANKIT SRIVASTAVA Blog



Forms in DXP

ANKIT SRIVASTAVA 2017-05-18 ANKIT SRIVASTAVA Blog

Liferay DXP and machine learning; Liferay as an integration platform

Carlos Hernandez 2017-07-03

CARLOS HERNANDEZ Blog



Soy Cheat Sheet






Liferay Themes and Jenkins Auto build Christian Klein
Das Blog

Using the Audience Targeting Appplications (Liferay 6.2)




Debugging Liferay 7 In Intellij David H Nebinger 2016-09-16 DAVID H NEBINGER Blog

Working with JSON in Freemarker ALLEN ZIEGENFUS 2017-04-07 ALLEN ZIEGENFUS Blog Templates JSON
Introducing Liferay DXP Cloud (webinar)
2018-11-01
Cloud
Liferay Commerce
2018-11-02 Github Repository Commerce