Bootcamp Développement

Durée 5 jours
Formats Privé sur site
Versions De Liferay 7.1

Développement intelligent

Apprenez à déterminer le meilleur moment pour utiliser les fonctionnalités prêtes à l'emploi ou pour personnaliser les fonctionnalités existantes.

Outils Liferay

Apprenez à utiliser Liferay pour personnaliser tous les aspects de la plate-forme.

OSGi & Modularité

Découvrez les avantages de la modularité et du développement OSGi, et comment continuer à développer avec WARs pour minimiser l'impact métier.

Au programme

  • Liferay et les utilisateurs

    • Travailler avec Liferay DXP

      • Créez des expériences digitales pour vos utilisateurs
      • Appliquez ce que vous apprenez à un cas d'utilisation réel
    • Intégration de vos utilisateurs existants

      • Importez vos utilisateurs dans Liferay
      • Importez des utilisateurs à partir de LDAP
    • Gestion des utilisateurs

      • Créez votre structure organisationnelle dans Liferay
      • Mapping automatique des groupes LDAP dans Liferay
      • Différences et stratégies pour l'organisation des utilisateurs
    • Gestion des accès utilisateurs

      • Définissez des permissions granulaires
      • Tirez parti de la gestion des rôles
  • Gestion de contenu grâce aux Sites

    • Attirez vos clients grâce aux Sites

      • Créez des sites web pour susciter l'engagement de vos clients
      • Créez des intranets pour favoriser la collaboration
      • Gestion des adhésions
    • Publication & Workflow

      • Découvrez comment utiliser le workflow et le staging pour vérifier le contenu avant sa publication
    • Ressources numériques

      • Création et partage de ressources dans un framework commun
      • Des outils puissants pour créer et gérer du contenu
      • Aperçu des fonctionnalités :
        Création moderne de sites (Nouveau !)
        Gestion des ressources
        Organisation avec des métadonnées
    • Pour aller plus loin :

      • Aperçu des fonctionnalités :
        Analytics Cloud
        Commerce
        Mobile
  • Développement d'applications

    • Configuration de l'environnement de développement

      • Préparez votre environnement au développement
    • Bases OSGi

      • Introduction à OSGi
      • Concepts OSGi
      • Que signifient les Bundles ?
      • Composants et Services
      • Partage des fonctionnalités
      • Architecture des frameworks
      • Avantages de l'OSGi
    • Le conteneur OSGi de Liferay

      • Qu'est-ce qu'un conteneur OSGi ?
      • Travailler avec Liferay Workspace
      • Introduction aux modules Liferay
      • Gestion des dépendances de module
    • Gestion des bundles OSGi

      • Gestion des bundles OSGi avec Gogo Shell
      • Utilisation de la console web Felix
    • Travailler avec les modules de portlets

      • Le portlet Java standard
    • Développer une application réelle

      • Création de la couche de service
      • Création de la couche de présentation
      • Utilisation du Framework de configuration de Liferay
      • Vérification des permissions
      • Asset Framework
      • Search Framework
      • Workflows
      • Utilisation des Web Services
      • Intégration et tests fonctionnels
      • Gestion des problèmes de déploiement
  • Personnalisation de votre plateforme

    • Présentation de l'architecture de la plateforme Liferay

      • Architecture de la plate-forme de Liferay
    • Personnalisation de l'interface utilisateur

      • Présentation des technologies UI de Liferay
      • Modification de l'interface utilisateur par défaut grâce aux modèles d'affichage d'application
      • Personnaliser les JSP d'application
    • Extension du schéma Liferay

      • Ajouter dynamiquement des champs personnalisés avec l'API Expando
    • Personnalisation de la couche de service

      • Remplacer et étendre les services Liferay avec le Service Wraper
      • Remplacer les références de service OSGi
    • Remplacer les actions du contrôleur

      • Remplacer les actions Struts
      • Remplacer les commandes Portal MVC
    • Détection d'événements

      • Détecter les événements de cycle de vie du portail
      • Intercepter des événements avec Model Listeners
    • Tirer parti des Message Bus de Liferay

      • Personnaliser l'audit du portail
    • Personnalisation de la recherche sur le portail

      • Personnaliser les résultats de l'indexation et de la recherche grâce aux processeurs
Une erreur s'est produite lors du traitement du gabarit.
Java method "com.sun.proxy.$Proxy617.getArticle(long, String)" threw an exception when invoked on com.sun.proxy.$Proxy617 object "[email protected]745b441b"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign article = journal_article_loc...  [in template "ARTICLE_UTILITIES" in macro "runtime_embed_journal_article_by_article_id" at line 117, column 9]
	- Reached through: @article_utilities.runtime_embed_jour...  [in template "10155#10195#LEGO" at line 39, column 96]
----
1<#import "${templatesPath}/article_utilities" as article_utilities> 
2 
3<div class="lego-article ${article_class.getData()}" id="article-${.vars['reserved-article-id'].getData()}"> 
4	<#list section.siblings as cur_section> 
5		<section class="block-container lego-section section-${cur_section_index + 1} ${cur_section.section_class.getData()}" ${cur_section.getData()}> 
6			<#list cur_section.block.siblings as cur_block> 
7				<div class="block block-${cur_block_index + 1} content-column lego-block w${cur_block.width.getData()} ${cur_block.block_class.getData()}" ${cur_block.getData()}> 
8					<#list cur_block.element.siblings as cur_element> 
9						<#assign cur_element_tag = cur_element.tag.getData()> 
10 
11						<#if !cur_element_tag?has_content> 
12							<#assign cur_element_tag = "div"> 
13						</#if> 
14 
15						<#assign cur_element_css_class = "lego-element " + cur_element.element_class.getData() /> 
16						<#assign button_attrs = cur_element.getData() /> 
17 
18						<#if article_utilities.has_update_permissions()> 
19							<#assign cur_element_css_class = cur_element_css_class + " live-edit" /> 
20							<#assign button_attrs = button_attrs + " 
21								data-article-id='${.vars[\"reserved-article-id\"].getData()}' 
22								data-level-path='${cur_section.name}::${cur_section_index},${cur_block.name}::${cur_block_index},${cur_element.name}::${cur_element_index},${cur_element.content.name}::0' 
23							" /> 
24						</#if> 
25 
26						<${cur_element_tag} class="${cur_element_css_class}" ${button_attrs}> 
27							${cur_element.content.getData()} 
28						</${cur_element_tag}> 
29					</#list> 
30 
31					<#if cur_block.article_url_title?has_content> 
32						<#list cur_block.article_url_title.siblings as article_url_title> 
33							<#if article_url_title.getData()?has_content> <@article_utilities.runtime_embed_journal_article_by_url_title article_url_title.getData() /> </#if> 
34						</#list> 
35					</#if> 
36 
37					<#if cur_block.article_id?has_content> 
38						<#list cur_block.article_id.siblings as article_id> 
39							<#if article_id.getData()?has_content> <@article_utilities.runtime_embed_journal_article_by_article_id article_id.getData() /> </#if> 
40						</#list> 
41					</#if> 
42				</div> 
43			</#list> 
44		</section> 
45	</#list> 
46</div> 
47 
48<#if css.getData()?has_content> 
49	<style type="text/css"> 
50		${css.getData()} 
51	</style> 
52</#if> 
53 
54<#if javascript?? && javascript.getData()?has_content> 
55	<script> 
56		${javascript.getData()} 
57	</script> 
58</#if> 

Didn’t find what you were looking for?

Contact us, and we'll work to find a training that meets your needs.