/o//commerce-media/accounts/-1/images/18486137?download=true

Newsletter plugin by zylk.net
DXP App
Data Modeling, Process & Business Logic
18485390
This is a plugin for Liferay that allows for a fully integrated newsletters system in the portal. The generated newsletters can include any content hosted on the portal (forum, blog, articles ...) and its appearance can be fully customized. It is also possible to schedule mailing so this process is performed automatically.

Features
------------
- Powefull template engine. The template engine is integrated with Liferay's journal template system, so it's possible to:
-- Completely customize the appearance of the newsletters.
-- Include any portal content (blog post, forum, ...) in the newsletters.
- Subscription / Unsubscription system (with email confirmation). Users can subscribe themselves to the newsletters from one page set up for this purpose in the portal. And is also possible to manage subscribers from the plugin admin panel.
- I18n. The plugin is translated into multiple languages, and provides support for the translation of the newsletters.
- Multi-Site support. Each Site can manage their own newsletters, and management can be performed independently on each Site.
- Scheduler. The newsletters can be scheduled (daily, weekly, monthly …) to be sent automatically.
- Category management. You can manage different categories so that users can subscribe to different topics.
- Import users from CSV. So that you can import existing users in external systems.
- Mailing history. From the Mailing section (history) you can check all the information of emails already sent.

Road map
--------------
- Advanced integration with portal users.
- Email tracking and analytics.

Note
--------

- The plugin has been developped by zylk.net in collaboration with Izfe (www.izfe.net)


More info at:
http://www.zylk.net/web/guest/web-2-0/wiki/-/wiki/Main/NewsletterLiferayPlugin
DEVELOPER
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> product.publisherName  [in template "3192443#3192485#null" at line 28, column 23]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: publisherName = product.publisherName  [in template "3192443#3192485#null" at line 28, column 9]
----
1<#if themeDisplay?has_content> 
2	<#assign scopeGroupId = themeDisplay.getScopeGroupId() /> 
3</#if> 
4 
5<#if currentURL?has_content> 
6	<#if currentURL?contains('web')> 
7		<#assign 
8			index = 2 
9			partsUrl = currentURL?split('/') 
10			siteName = partsUrl[index..index]?join('/') 
11		/> 
12	</#if> 
13</#if> 
14 
15<#assign channel = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels?accountId=-1&filter=name eq 'Marketplace Channel' and siteGroupId eq '${scopeGroupId}'") /> 
16 
17<#if channel?has_content> 
18	<#assign channelId = channel.items[0].id /> 
19</#if> 
20 
21<#if (CPDefinition_cProductId.getData())??> 
22	<#assign productId = CPDefinition_cProductId.getData() /> 
23</#if> 
24 
25<#assign 
26	product = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/"+ channelId +"/products/"+ productId +"?accountId=-1&nestedFields=productSpecifications") 
27	productSpecifications = product.productSpecifications![] 
28	publisherName=product.publisherName 
29/> 
30 
31<#if publisherName?has_content> 
32	<#assign publisePages=restClient.get("/c/publisherdetailses?filter=catalogName eq '${publisherName}'" ) /> 
33	<#assign redirectPath="https://marketplace-uat.liferay.com/e/publisher-details/29282497"/> 
34	 
35	<#if publisePages?has_content> 
36		<#assign publisePage=publisePages.items /> 
37			<#if publisePage?has_content> 
38						<#assign publisherDetail=publisePage[0]/> 
39			</#if> 
40	</#if> 
41</#if> 
42 
43<div> 
44	<#if productSpecifications?has_content> 
45		<#assign developerNames = productSpecifications?filter(item -> stringUtil.equals(item.specificationKey, "developer-name")) /> 
46 
47		<#if developerNames?has_content> 
48			<#list developerNames as developerName> 
49				<#if publisherDetail?has_content> 
50					<a class="bg-neutral-8" href="${redirectPath}/${publisherDetail.id}"> 
51						${developerName.value} 
52					</a> 
53				<#else> 
54					<a class="bg-neutral-8" 	href="/?developer-name=${developerName.value}"> 
55						${developerName.value} 
56					</a> 
57				</#if> 
58			</#list> 
59		</#if> 
60	</#if> 
61</div> 
DEVELOPER
21/11/24 17:54
Published date
21/11/24 17:54
Published Date
21/11/24 17:54
SUPPORTED OFFERINGS
Liferay PaaS, Liferay Self-Hosted
Supported Versions
6.2
Resource Requirements
Edition
CE
PRICE
Free
help & support
SHARE LINK
Copy & Share

HTML Example

A paragraph is a self-contained unit of a discourse in writing dealing with a particular point or idea. Paragraphs are usually an expected part of formal writing, used to organize longer prose.