Mitra Kami. Inspirasi Kami. Kesuksesan Anda.
Lebih dari 80% penjualan Lenovo secara global dikirimkan oleh mitra saluran kami. Melalui Lenovo 360, kerangka kerja mitra kami yang terus berkembang, kami berkomitmen dan berinvestasi dalam kesuksesan mereka.
Selain mendapatkan akses ke portofolio end-to-end, pocket-to-cloud, Lenovo 360 menghadirkan pengalaman mitra yang lebih cerdas untuk semua. Melalui pemberdayaan penjualan dan pemasaran, insentif, inisiatif komunitas, dan banyak lagi, kami memberikan dukungan untuk meningkatkan ketangkasan Anda, memperkuat posisi kompetitif Anda, dan memperluas bidang keahlian Anda.
Klik tautan di bawah ini untuk mengunduh panduan pendaftaran mitra kami atau gunakan formulir di atas untuk mendaftar sebagai mitra Lenovo.
-
Apa yang menjadikan Lenovo mitra teknologi yang tepat untuk bisnis Anda?
Tonton video singkat ini untuk mengetahui manfaat menjadi mitra saluran Lenovo.
Mitra yang berinvestasi dalam kesuksesan Anda seperti Anda
Memenuhi kebutuhan pelanggan saat ini melalui fleksibilitas, kepercayaan, dan pengetahuan yang mendalam.
Tingkatkan pendapatan Anda dengan portofolio teknologi yang luas dan rabat mitra. Buka akses ke teknologi inovatif, mulai dari laptop dan workstation hingga solusi kolaborasi cerdas dan [...] Lihat lebih
Tingkatkan pendapatan Anda dengan portofolio teknologi yang luas dan rabat mitra. Buka akses ke teknologi inovatif, mulai dari laptop dan workstation hingga solusi kolaborasi cerdas dan infrastruktur yang kuat dan dapat diskalakan. Lihat sedikit
Bangun reputasi Anda sebagai penasihat tepercaya dengan mengembangkan pengetahuan khusus, menyediakan penjualan solusi, dan mendukung bidang minat pelanggan baru dengan kerangka Lenovo 360.
Pilih bagaimana Anda berkolaborasi dengan kami, mulai dari bertransaksi di perangkat hingga membangun solusi dan menyediakan layanan terkelola sambil memanfaatkan sumber daya, alat, insentif, [...] Lihat lebih
Pilih bagaimana Anda berkolaborasi dengan kami, mulai dari bertransaksi di perangkat hingga membangun solusi dan menyediakan layanan terkelola sambil memanfaatkan sumber daya, alat, insentif, dan dukungan yang kuat melalui Lenovo 360. Lihat sedikit
Mengapa Lenovo eBook
Dari akses ke teknologi inovatif terkemuka di dunia hingga insentif pemenang penghargaan serta dukungan dan pelatihan ahli, lihat bagaimana Anda bisa mendapatkan keuntungan dari bermitra dengan Lenovo.

Dari akses ke teknologi inovatif terkemuka di dunia hingga insentif pemenang penghargaan serta dukungan dan pelatihan ahli, lihat bagaimana Anda bisa mendapatkan keuntungan dari bermitra dengan Lenovo.
Lenovo 360 eBook

Lenovo 360 eBook
Panduan lengkap Anda untuk kerangka kerja saluran global Lenovo, mengeksplorasi secara rinci solusi, alat, dan materi pemasaran yang tersedia untuk mitra, serta insentif, kompetensi, dan akreditasi.
Portofolio saku ke cloud kami
Temukan produk dan solusi inovatif untuk memenuhi kebutuhan pelanggan modern
Portofolio perangkat keras, perangkat lunak, dan layanan Lenovo yang menyeluruh menggabungkan keamanan, kolaborasi, serta penerapan dan manajemen sederhana untuk memenuhi kebutuhan tenaga kerja modern dan fleksibel di seluruh organisasi dari semua ukuran.
Solusi Lenovo Hybrid Cloud memungkinkan CIO untuk mengambil pendekatan yang lebih cerdas dan lebih strategis untuk inovasi teknologi. Memberdayakan organisasi untuk memanfaatkan infrastruktur tradisional dan as-a-service, solusi kami yang kuat, andal, dan aman membuat pemenuhan kebutuhan bisnis yang berkembang menjadi lebih mudah.
Melalui perangkat keras, kontrol, dan kemudahan penggunaan terdepan di industri dari penyedia infrastruktur AI global terbesar ke-3, Anda dapat membantu pelanggan menskalakan, menerapkan, dan mengelola perangkat edge serta memanfaatkan potensi penuh data mereka.
Dengan layanan, perangkat, dan solusi infrastruktur keberlanjutan Lenovo yang disesuaikan, pelanggan Anda mendapat manfaat dari siklus hidup produk yang lebih sirkular, teknologi yang lebih hemat daya, dan rute baru untuk mempercepat inisiatif ESG organisasi mereka.
Lenovo TruScale menyederhanakan pengadaan, penerapan, dan pengelolaan inovasi TI yang andal. Disampaikan sebagai layanan dengan model pay-as-you-grow yang sederhana, terukur, memberikan akses ke solusi terintegrasi yang memberdayakan tim dan memicu strategi bisnis.
Java method "com.sun.proxy.$Proxy1163.fetchAssetAEM(Locale, com.liferay.document.library.kernel.model.DLFileEntry, com.liferay.portal.kernel.theme.ThemeDisplay)" threw an exception when invoked on com.sun.proxy.$Proxy1163 object "com.lenovo.velocity.company.service.service.impl.UserCustomAttributesLocalServiceImpl@1f8192e5"; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign assetRefernceId = customUserA... [in template "20099#20135#CONTENT_MULTIPLE IMAGES AND ASSETS_NEW" at line 1, column 8474]
----
1<#-- gets dl file service --> <#assign dlFileEntryService=serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryService")> <#assign assetMetaDataService=serviceLocator.findService("com.lenovo.velocity.company.service.service.AEMAssetMetadataLocalService")> <#assign customUserAttrService=serviceLocator.findService("com.lenovo.velocity.company.service.service.UserCustomAttributesLocalService")> <div class="lnv-general-solutions-container detail-listing-padding"> <div class="lnv-general-solutions-header"> <p> ${Title.getData()} </p> </div> <div class="lnv-general-solutions-data"> <p> ${Description.getData()} </p> </div> <div class="lnv-general-solutions-images"> <div class="lnv-multi-item-carousel"> <div class="row mx-auto my-auto"> <#assign itemCount=0> <#if Image3mjp.getSiblings()?has_content> <#-- loop for repeatable field--> <#list Image3mjp.getSiblings() as cur_Image3mjp> <#assign itemCount=itemCount+1> </#list> </#if> <#if itemCount gte 4> <div id="" class="recipeCarousel carousel w-100" data-ride="carousel" data-interval="false"> <div class="recipeCarousel-inner carousel-inner w-100" role="listbox"> <#-- checks if repeatable field has values --> <#if Image3mjp.getSiblings()?has_content> <#assign counter=0> <#-- loop for repeatable fields --> <#list Image3mjp.getSiblings() as cur_Image3mjp> <#assign aemAssetDetails=""> <#assign assetDetails=""> <#assign fileStr = ""/> <#assign extension = ""/> <#assign uuidStr = ""/> <#assign uuid = "0" /> <#assign groupId = "0" /> <#assign count = 0 /> <#-- get groupid, file, uuid of the attached file by splitting the url from / --> <#list "${cur_Image3mjp.Attachment.getData()}"?split("/") as url> <#-- get group id at 2nd place--> <#if count == 2> <#assign groupId = url /> </#if> <#-- get file name string at 4rth place--> <#if count == 4> <#assign fileStr = url /> </#if> <#-- get uuid string at 5th place--> <#if count == 5> <#assign uuidStr = url /> </#if> <#assign count = count+1 /> </#list> <#-- get file type of attachment --> <#if fileStr?? && fileStr != ""> <#list "${fileStr}"?split(".") as fileSplit> <#assign extension = fileSplit /> </#list> </#if> <#assign count = 0 /> <#-- split the uuid string to get the uuid --> <#if uuidStr?? && uuidStr != ""> <#list "${uuidStr}"?split("?") as uuidSplit> <#if count == 0> <#assign uuid = uuidSplit /> </#if> <#assign count = count+1 /> </#list> </#if> <#assign myGroupId=groupId?eval> <#-- get file from uuid and groupid --> <#if fileStr?? && fileStr != ""> <#assign file= dlFileEntryService.getFileEntryByUuidAndGroupId(uuid,myGroupId) > <#assign customUserAttrService=serviceLocator.findService("com.lenovo.velocity.company.service.service.UserCustomAttributesLocalService")> <!--Method to fetch the aem assetRefernceId from document and media --> <#assign assetRefernceId = customUserAttrService.fetchAssetAEM(themeDisplay.getLocale(),file,themeDisplay)> <#if assetRefernceId?? &&assetRefernceId?has_content > <#assign encryptedAssetId=customUserAttrService.encryptAssetString(assetRefernceId)/> <#assign aemAssetDetails = assetMetaDataService.getAEMAssetTitle(assetRefernceId)> </#if> <#if aemAssetDetails?? && aemAssetDetails?has_content> <#else> <!--Method to fetch url of the file uploaded using External link --> <#assign assetDetails = customUserAttrService.getExternalUrl(themeDisplay.getLocale(),file,themeDisplay)> <!--Method to fetch url of the file uploaded using Asset or Doucument and media in download field --> <#if (!assetDetails?? && !assetDetails?has_content) || (assetDetails?? && assetDetails?has_content && !assetDetails.getDownloadLink()??)> <!--Method to fetch url of the file uploaded using Asset or Doucument and media in download field --> <#assign file2 = customUserAttrService.fetchAssetUrl(themeDisplay.getLocale(),file,themeDisplay)> <!--Method to fetch details like file size,name and extension attached to the asset --> <#assign assetDetails = customUserAttrService.getAssetDetails(file2)> </#if> </#if></#if> <#-- active class for first member of carousel --> <#if counter==0> <div class="carousel-item active" > <#else> <div class="carousel-item" > </#if> <#assign counter=counter+1> <div class="col-xs-12 col-md-4 col-lg-4 col-xl-4 carousel-column"> <div class="card card-body carousel-item-block"> <div class="white-background-image-gradient"> <#-- check if image field has data --> <#if cur_Image3mjp.getData()?? && cur_Image3mjp.getData() != ""> <img data-fileentryid="${cur_Image3mjp.getAttribute("fileEntryId")}" class="img-fluid" alt="${cur_Image3mjp.getAttribute("alt")}" src='${cur_Image3mjp.getData()}' /> </#if> </div> <#if cur_Image3mjp.getData()?? && cur_Image3mjp.getData() != "" && cur_Image3mjp.Image_title.getData()?? && cur_Image3mjp.Image_title.getData() != ""> <span class="lnv-title1 contentMulipleFontResizing"> ${cur_Image3mjp.Image_title.getData()} <#if cur_Image3mjp.ImageBreif?? && cur_Image3mjp.ImageBreif.getData()?? && cur_Image3mjp.ImageBreif.getData() != "" > <div class= "image-brief"> ${cur_Image3mjp.ImageBreif.getData()} </div> </#if> </span> </#if> <#if cur_Image3mjp.WebContentName?? && cur_Image3mjp.WebContentName.GenericWebContent?? && cur_Image3mjp.WebContentName.getData()?? && cur_Image3mjp.WebContentName.getData()?has_content && cur_Image3mjp.WebContentName.GenericWebContent.getData()?? && cur_Image3mjp.WebContentName.GenericWebContent.getData()?has_content> <#assign articleURL=""> <#assign webContentData = jsonFactoryUtil.createJSONObject(cur_Image3mjp.WebContentName.GenericWebContent.getData())> <#if webContentData?? && webContentData?has_content> <#assign primaryKey=0/> <#assign wcprimaryKey = webContentData.getString("classPK")/> <#if wcprimaryKey?? && wcprimaryKey?has_content> <#assign primaryKey = wcprimaryKey?number/> <!-- Method for fetching detail page URL of campaign,promotions,etc --> <#if primaryKey?? && primaryKey?has_content> <#assign articleURL=customUserAttrService.retreiveWebContentUrl(themeDisplay,primaryKey)/> </#if> </#if> </#if> <a class="contentMultipleImageRedirectingLink btn" href="${articleURL}"> ${cur_Image3mjp.WebContentName.getData()} </a> <#elseif uuid?has_content && myGroupId > 0> <#if aemAssetDetails?? && aemAssetDetails?has_content> <#assign assetDummyValue = aemAssetDetails.getAssetTitle()> <#assign assetFilteredValue =assetDummyValue?replace("'", '&apos')/> <#if aemAssetDetails.getFileSize()?? && aemAssetDetails.getFileSize()!= "0KB" && aemAssetDetails.getFileSize()?has_content > <a class="lnv-download-size btn" href="javascript:void(0);" onclick="getAEMAssetDetails('${encryptedAssetId}','${assetFilteredValue}','${aemAssetDetails.getFileFormat()?lower_case}');setDownloadFileName('${assetFilteredValue}');"> ${aemAssetDetails.getFileFormat()} (${aemAssetDetails.getFileSize()})</a> <#else> ${languageUtil.get(locale,'no-files-selected')} </#if> <#elseif assetDetails?? && assetDetails?has_content> <#if assetDetails.getDownloadLink()?? &&assetDetails.isExternalLinkIsAEM()?? && assetDetails.isExternalLinkIsAEM() && assetDetails.getAssetTitle()?? && assetDetails.getAssetTitle()?has_content > <a class="lnv-download-size btn" href="/o/filedownload-rest/download?attachment=${assetDetails.getDownloadLink()}&title=${assetDetails.getAssetTitle()}" target="_blank" onclick="setDownloadFileName('${assetDetails.getAssetTitle()}')" > ${assetDetails.getButtonName()}</a> <#elseif assetDetails.getDownloadLink()?? &&assetDetails.isExternalLinkIsAEM()?? &&! assetDetails.isExternalLinkIsAEM() && assetDetails.getAssetTitle()?? && assetDetails.getAssetTitle()?has_content > <a class="lnv-download-size btn" href="${assetDetails.getDownloadLink()}" target="_blank" onclick="setDownloadFileName('${assetDetails.getAssetTitle()}')" > ${assetDetails.getButtonName()}</a> <#elseif assetDetails?? && assetDetails?has_content && assetDetails.getFileName()?? && assetDetails.getFileName()?has_content> <#if file2?has_content && assetDetails.getFileSize()?? && assetDetails.getFileSize()!= "0KB" && assetDetails.getFileSize()?has_content > <a class="lnv-download-size btn" href="${file2}?download=true" onclick="setDownloadFileName('${assetDetails.getFileName()}')"> ${assetDetails.getFileExtension()} (${assetDetails.getFileSize()}) </a> <#else>${languageUtil.get(locale,'no-files-selected')} </#if> </#if> </#if> <#elseif cur_Image3mjp.External_URL_Name?? && cur_Image3mjp.External_URL_Name.External_URL?? && cur_Image3mjp.External_URL_Name.getData()?? && cur_Image3mjp.External_URL_Name.getData()!="" && cur_Image3mjp.External_URL_Name.External_URL.getData()?? && cur_Image3mjp.External_URL_Name.External_URL.getData()!=""> <a class="contentMultipleImageRedirectingLink btn" href="${cur_Image3mjp.External_URL_Name.External_URL.getData()}" target="_blank" class="lnv-link-icon"> ${cur_Image3mjp.External_URL_Name.getData()} </a> </#if> </div> </div> </div> </#list> </#if> </div> <#assign counter=0> <#-- loop for repeatable field--> <#list Image3mjp.getSiblings() as cur_Image3mjp> <#-- check for previous and next values --> <#if counter==3> <a class="carousel-control-next" onclick="plusSlides(1, this)" role="button" data-slide="next"> <span class="sr-only">Next</span> </a> <a class="carousel-control-prev" onclick="plusSlides(-1, this)" role="button" data-slide="prev"> <span class="sr-only">Previuos</span> </a> </#if> <#assign counter=counter+1> </#list> </div> <#else> <div id="" class="no-carousel w-100" data-interval="false"> <div class="recipeCarousel-inner carousel-inner w-100" role="listbox"> <#-- checks if repeatable field has values --> <#if Image3mjp.getSiblings()?has_content> <#assign counter=0> <#-- loop for repeatable fields --> <#list Image3mjp.getSiblings() as cur_Image3mjp> <#assign aemAssetDetails=""> <#assign assetDetails=""> <#assign fileStr = ""/> <#assign extension = ""/> <#assign uuidStr = ""/> <#assign uuid = "0" /> <#assign groupId = "0" /> <#assign count = 0 /> <#-- get groupid, file, uuid of the attached file by splitting the url from / --> <#list "${cur_Image3mjp.Attachment.getData()}"?split("/") as url> <#-- get group id at 2nd place--> <#if count == 2> <#assign groupId = url /> </#if> <#-- get file name string at 4rth place--> <#if count == 4> <#assign fileStr = url /> </#if> <#-- get uuid string at 5th place--> <#if count == 5> <#assign uuidStr = url /> </#if> <#assign count = count+1 /> </#list> <#-- get file type of attachment --> <#if fileStr?? && fileStr != ""> <#list "${fileStr}"?split(".") as fileSplit> <#assign extension = fileSplit /> </#list> </#if> <#assign count = 0 /> <#-- split the uuid string to get the uuid --> <#if uuidStr?? && uuidStr != ""> <#list "${uuidStr}"?split("?") as uuidSplit> <#if count == 0> <#assign uuid = uuidSplit /> </#if> <#assign count = count+1 /> </#list> </#if> <#assign myGroupId=groupId?eval> <#-- get file from uuid and groupid --> <#if fileStr?? && fileStr != ""> <#assign file= dlFileEntryService.getFileEntryByUuidAndGroupId(uuid,myGroupId) > <#assign customUserAttrService=serviceLocator.findService("com.lenovo.velocity.company.service.service.UserCustomAttributesLocalService")> <!--Method to fetch the aem assetRefernceId from document and media --> <#assign assetRefernceId = customUserAttrService.fetchAssetAEM(themeDisplay.getLocale(),file,themeDisplay)> <#if assetRefernceId?? &&assetRefernceId?has_content > <#assign encryptedAssetId=customUserAttrService.encryptAssetString(assetRefernceId)/> <#assign aemAssetDetails = assetMetaDataService.getAEMAssetTitle(assetRefernceId)> </#if> <#if aemAssetDetails?? && aemAssetDetails?has_content> <#else> <!--Method to fetch url of the file uploaded using External link --> <#assign assetDetails = customUserAttrService.getExternalUrl(themeDisplay.getLocale(),file,themeDisplay)> <!--Method to fetch url of the file uploaded using Asset or Doucument and media in download field --> <#if (!assetDetails?? && !assetDetails?has_content) || (assetDetails?? && assetDetails?has_content && !assetDetails.getDownloadLink()??)> <!--Method to fetch url of the file uploaded using Asset or Doucument and media in download field --> <#assign file2 = customUserAttrService.fetchAssetUrl(themeDisplay.getLocale(),file,themeDisplay)> <!--Method to fetch details like file size,name and extension attached to the asset --> <#assign assetDetails = customUserAttrService.getAssetDetails(file2)> </#if> </#if></#if> <#-- active class for first member of carousel --> <#if counter==0> <div class="carousel-item active" > <#else> <div class="carousel-item" > </#if> <#assign counter=counter+1> <div class="col-sm-12 carousel-column"> <div class="card card-body carousel-item-block"> <div class="white-background-image-gradient"> <#-- check if image field has data --> <#if cur_Image3mjp.getData()?? && cur_Image3mjp.getData() != ""> <img data-fileentryid="${cur_Image3mjp.getAttribute("fileEntryId")}" class="img-fluid" alt="${cur_Image3mjp.getAttribute("alt")}" src='${cur_Image3mjp.getData()}' /> </#if> </div> <#if cur_Image3mjp.getData()?? && cur_Image3mjp.getData() != "" && cur_Image3mjp.Image_title.getData()?? && cur_Image3mjp.Image_title.getData() != ""> <span class="lnv-title1 contentMulipleFontResizing" > ${cur_Image3mjp.Image_title.getData()} <#if cur_Image3mjp.ImageBreif?? && cur_Image3mjp.ImageBreif.getData()?? && cur_Image3mjp.ImageBreif.getData() != "" > <div class= "image-brief"> ${cur_Image3mjp.ImageBreif.getData()} </div> </#if> </span> </#if> <#if cur_Image3mjp.WebContentName?? && cur_Image3mjp.WebContentName.GenericWebContent?? && cur_Image3mjp.WebContentName.getData()?? && cur_Image3mjp.WebContentName.getData()?has_content && cur_Image3mjp.WebContentName.GenericWebContent.getData()?? && cur_Image3mjp.WebContentName.GenericWebContent.getData()?has_content> <#assign articleURL=""> <#assign webContentData = jsonFactoryUtil.createJSONObject(cur_Image3mjp.WebContentName.GenericWebContent.getData())> <#if webContentData?? && webContentData?has_content> <#assign primaryKey=0/> <#assign wcprimaryKey = webContentData.getString("classPK")/> <#if wcprimaryKey?? && wcprimaryKey?has_content> <#assign primaryKey = wcprimaryKey?number/> <!-- Method for fetching detail page URL of campaign,promotions,etc --> <#if primaryKey?? && primaryKey?has_content> <#assign articleURL=customUserAttrService.retreiveWebContentUrl(themeDisplay,primaryKey)/> </#if> </#if> </#if> <a class="contentMultipleImageRedirectingLink btn" href="${articleURL}"> ${cur_Image3mjp.WebContentName.getData()}</a> <#elseif uuid?has_content && myGroupId > 0> <#if aemAssetDetails?? && aemAssetDetails?has_content> <#assign assetDummyValue = aemAssetDetails.getAssetTitle()> <#assign assetFilteredValue =assetDummyValue?replace("'", '&apos')/> <#if aemAssetDetails.getFileSize()?? && aemAssetDetails.getFileSize()!= "0KB" && aemAssetDetails.getFileSize()?has_content > <a class="lnv-download-size btn" href="javascript:void(0);" onclick="getAEMAssetDetails('${encryptedAssetId}','${assetFilteredValue}','${aemAssetDetails.getFileFormat()?lower_case}');setDownloadFileName('${assetFilteredValue}');"> ${aemAssetDetails.getFileFormat()} (${aemAssetDetails.getFileSize()})</a> <#else> ${languageUtil.get(locale,'no-files-selected')} </#if> <#elseif assetDetails?? && assetDetails?has_content> <#if assetDetails.getDownloadLink()?? &&assetDetails.isExternalLinkIsAEM()?? && assetDetails.isExternalLinkIsAEM() && assetDetails.getAssetTitle()?? && assetDetails.getAssetTitle()?has_content > <a class="lnv-download-size btn" href="/o/filedownload-rest/download?attachment=${assetDetails.getDownloadLink()}&title=${assetDetails.getAssetTitle()}" target="_blank" onclick="setDownloadFileName('${assetDetails.getAssetTitle()}')" > ${assetDetails.getButtonName()}</a> <#elseif assetDetails.getDownloadLink()?? &&assetDetails.isExternalLinkIsAEM()?? &&! assetDetails.isExternalLinkIsAEM() && assetDetails.getAssetTitle()?? && assetDetails.getAssetTitle()?has_content > <a class="lnv-download-size btn" href="${assetDetails.getDownloadLink()}" target="_blank" onclick="setDownloadFileName('${assetDetails.getAssetTitle()}')" > ${assetDetails.getButtonName()}</a> <#elseif assetDetails?? && assetDetails?has_content && assetDetails.getFileName()?? && assetDetails.getFileName()?has_content> <#if file2?has_content && assetDetails.getFileSize()?? && assetDetails.getFileSize()!= "0KB" && assetDetails.getFileSize()?has_content > <a class="lnv-download-size btn" href="${file2}?download=true" onclick="setDownloadFileName('${assetDetails.getFileName()}')"> ${assetDetails.getFileExtension()} (${assetDetails.getFileSize()}) </a> <#else>${languageUtil.get(locale,'no-files-selected')} </#if> </#if> </#if> <#elseif cur_Image3mjp.External_URL_Name?? && cur_Image3mjp.External_URL_Name.External_URL?? && cur_Image3mjp.External_URL_Name.getData()?? && cur_Image3mjp.External_URL_Name.getData()!="" && cur_Image3mjp.External_URL_Name.External_URL.getData()?? && cur_Image3mjp.External_URL_Name.External_URL.getData()!=""> <a class="contentMultipleImageRedirectingLink btn" href="${cur_Image3mjp.External_URL_Name.External_URL.getData()}" target="_blank" class="lnv-link-icon"> ${cur_Image3mjp.External_URL_Name.getData()} </a> </#if> </div> </div> </div> </#list> </#if> </div> <#assign counter=0> <#-- loop for repeatable field--> <#list Image3mjp.getSiblings() as cur_Image3mjp> <#-- check for previous and next values --> <#if counter==3> <a class="carousel-control-next" onclick="plusSlides(1, this)" role="button" data-slide="next"> <span class="sr-only">Next</span> </a> <a class="carousel-control-prev" onclick="plusSlides(-1, this)" role="button" data-slide="prev"> <span class="sr-only">Previuos</span> </a> </#if> <#assign counter=counter+1> </#list> </div> </#if> </div> </div> </div> </div> <@liferay.js file_name="${themeDisplay.getPathThemeJavaScript()}/Main/multi_multicarousel.js"/> <!--Added for AEM --> <@liferay_portlet["runtime"] portletName="lenovo_velocity_asset_file_download_LenovoVelocityAssetFileDownloadPortlet_INSTANCE_gvPLS60vSBEr"/> <script> function getAEMAssetDetails(url,title,fileFormat){ var urlToSend= assetResourceUrl+"&fileUrl="+url; var req = new XMLHttpRequest(); req.open("GET", urlToSend, true); req.responseType = "blob"; req.onload = function (event) { var blob = req.response; var link=document.createElement('a'); link.href=window.URL.createObjectURL(blob); link.download=title.replace("&apos","'")+"."+fileFormat; link.click(); }; req.send(); } </script>
Bermitra dengan kami
Tingkatkan pendapatan dan potensi penghasilan Anda dengan bergabung dengan pemimpin industri global yang berdedikasi pada saluran dan keberhasilan mitranya. Klik tautan di bawah ini untuk mengunduh panduan pendaftaran mitra kami dan mendaftar untuk menjadi mitra hari ini.