Chapter 6: Using Digital Asset Management

In the previous chapter, you learned what a Pimcore class is and how to create object instances for defined classes.

In this chapter, we will focus on Digital Asset Management (DAM), which is one of the main Pimcore features. This feature doesn't just let you upload your images like a storage platform, but it also helps you to categorize, elaborate, and version images and, in general, any kind of file, and distribute them across different channels. The chapter is organized as follows:

  • What is a DAM?
  • Uploading and Relating Assets
  • Editing Images
  • How to Create Thumbnails

After starting with an explanation of what a DAM is, we will then introduce the Pimcore DAM features. Then, we will discover how to upload digital assets on Pimcore and how to relate them to objects. A specific focus on images will follow, to let you see how images can be edited or enhanced inside Pimcore, and then we'll explore how easy it is to create different thumbnails.

Technical requirements

As you have previously done in Chapter 5, Exploring Objects and Classes, all you need to run the demo connected with this chapter is to navigate to the 6. Using Digital Asset Management folder in the official book repository and start a Docker environment.

To do so, just follow these instructions:

  1. Run Docker with the following command:

    docker-compose up

  2. Then, to restore all the settings on your local machine, just open a new shell and type this:

    docker-compose exec php bash install.sh

  3. Navigate to http://localhost/admin and log in with your admin/pimcore credentials.

You can access the official book repository to get the source code using the following link:

https://github.com/PacktPublishing/Modernizing-Enterprise-CMS-using-Pimcore/tree/main/6.%20Using%20Digital%20Asset%20Management

Now you are ready to navigate the demo to discover all the aspects related to this chapter.

What is a DAM?

In this section, you will learn about the concepts of Digital Asset Management. DAM software is an integrated system designed for the centralized strategic management of media content. It is the software that allows you to create, organize, and distribute content across different channels such as websites and applications and increase the effectiveness of communication.

Now that we know the academic definition, let's see what DAM software is useful for and what its main features are. As the name suggests, DAM revolves around Digital Assets; this concept is not intended to be restricted to images or videos but involves all kinds of digital files, such as documents and audio recordings.

So, given the digital assets, let's now move on to the Management part of the definition. The management of digital assets is not just intended to organize assets in several folders like on the desktop of your PC; of course, in DAM systems, and thus also in Pimcore, we will always find the concept of folders, but this is just the starting point for structured organization. When it comes to management, DAM is all about being able to search for assets through indexes, share assets between users, and keep track of versioning, with the ability to define workflows to support the life cycle of an asset.

In this section, we will first look at the common characteristics of all DAM systems, then we will present the specific features of the Pimcore DAM system.

Characteristics of a DAM system

Let's see what characteristics must be present in every DAM system.

Organization

As we mentioned before, organization is one of the key aspects of asset management. The first thing that we must consider is creating folders and subfolders in a hierarchical structure. The folder paradigm has become a widespread concept in many different kinds of software and is crucial to organizing content.

However, this in itself is not enough, so it is required to have features to improve content organization, such as categorization through tags or other properties and advanced research methods for filtering and searching for content.

Content Enrichment

Every digital asset is, after all, a digital file. Every file has content that must be shown or downloaded, but there may be the need to provide some information to describe the asset or its content; we can think of these pieces of information as asset metadata.

In very common scenarios, metadata is used to provide an alternative view of a digital asset without showing its content. Let's take images, for example – it is good practice to use an alternative tag on websites to describe visual content with a short piece of text, in case there are connection problems or to improve accessibility for the visually impaired.

In addition to being used to improve accessibility, the correct design of metadata is useful to improve SEO, because it increases site indexing on search engines.

Sharing and Access Control

The use of a DAM system is important to centralize assets information and to share assets between all users that need a copy of an image. Sending and receiving assets through different kinds of distribution channels, such as emails or shared hosting services, is a heavy and dangerous operation because we risk losing files among the hundreds of other received emails or overriding someone else's changes if we upload a modified file in a shared folder.

In a DAM system, every user has its account, and appropriate rules can be defined for file sharing or to limit seeing or modifying assets for certain users or all users with a specific role. These rules could prevent, for example, accidental file deletions.

Versioning

Connected to the previous characteristic, it's important to maintain versioning for digital assets. Every user that has access to an asset in write mode can potentially update it to a new version. Versioning allows you to keep a history of asset changes over time, recording users who have made changes. This concept is useful to implement workflows and moderate the process of asset creation through different approval phases.

Assets Distribution

In modern scenarios, the same assets may be used in different contexts that require different specifications. Thinking about an image, it could be required to be shown on a website and maybe on the corresponding app, and also to be placed in a paper catalog. It seems clear that, for different targets, different image sizing could be required.

To serve this need, different croppings are usually manually created from the same original image. This practice leads to chaos because a lot of different versions must be maintained for the same image; if the original image changes, all croppings must be created again. Modern DAM systems circumvent this problem by letting you upload a high-quality version of the image and define rules to create croppings at runtime when they are needed.

To summarize, in this section, you learned the common characteristics of DAM systems. All these characteristics are implemented on the Pimcore DAM system, and in the next section, we will introduce the Pimcore DAM system, presenting its main features.

Introducing Pimcore DAM features

Previously, we presented the definition of DAM, introducing the main characteristics that a DAM system should have. In this section, we will introduce the Pimcore DAM component and briefly present its main features to discover Pimcore's DAM potential.

Asset Organization

As for object management, Pimcore's user-friendly interface helps users with asset organization. The use of a folder structure to store assets and the ability to search and filter through the grid component, combined with multi-tabbing navigation, makes asset management easy and fast. You can use the simple search options and work within an asset's tree structure, or utilize a grid view to filter by tags, metadata, and other properties that help you to organize the assets.

Pimcore offers a highly flexible and configurable metadata management system. It's possible to define metadata for each specific asset or, if needed, to define common metadata properties that will be attached to all assets automatically.

Pimcore's DAM software supports Office document formats, including Word, Excel, PowerPoint, and PDF. In addition to open source functionalities, enterprise features let you connect Pimcore to Adobe Creative Cloud applications and Microsoft Office software without leaving the application.

Image and Video Conversion

As we mentioned previously, one of the key aspects of DAM is the ability to distribute content among different channels. Those channels could be heterogeneous in terms of target size or media format, and this requires you to produce different versions of the same image or video.

Instead of uploading a bunch of different versions for the same asset, Pimcore gives the ability to upload just a high-definition version and to dynamically generate optimized versions for each target, through an integrated transformation pipeline to convert and transform your files. You will learn more about creating image thumbnails in the final section of this chapter.

The original and transformed images can be served as public links or eventually via content distribution networks or Pimcore integrated APIs. Pimcore's DAM software also provides transformations of images for offline and print channels in the right quality and format.

Users Rights and Permissions

One of the key aspects of DAM is the ability to share assets between different users, so it is important to define sharing rules. In Pimcore, there is the ability to create different users and roles. In the following figure, you will see how to configure rights for users and roles:

Figure 6.1: User rights and permissions

Figure 6.1: User rights and permissions

As you can see in the preceding figure, for each asset folder it's possible to let the user view a list of assets and open each of them. In the same way, the user can have the right to create, edit, or delete assets and alter their settings or properties. The same principle can be applied to documents and object folders. In Chapter 7, Administrating Pimcore Sites, you will learn more about users and role management.

To summarize, in this section, you learned about the main characteristics of DAM systems, with an introduction to Pimcore's DAM features. In the following sections, you will see some of these functionalities in action and discover how to use them. In the following section, we will see how to create assets and how to relate them to created objects.

Uploading and Relating Assets

In the previous section, we presented the characteristics of DAM systems, introducing some of Pimcore's specific features. In this section, we are going to see how to upload assets in Pimcore, and then we will see how assets are organized and how to relate assets to existing objects, introducing the various media components for object classes.

Uploading Assets

In this section, we will start discovering how to upload assets in Pimcore. To upload a file, you just need to right-click on an asset folder and hover over the Add Asset(s) option to expand the menu. As you can see in the following figure, assets can be uploaded from different kinds of sources:

Figure 6.2: Uploading Assets

Figure 6.2: Uploading Assets

Let's describe the different methods that are shown in the figure:

  • Upload Files: This is the standard file upload form, which allows uploading more than 200 file formats. Multiple files can be uploaded together, and they don't need to be of the same type. Images are the most common kind of assets, but also PDF and other Office documents are used. Pimcore can render preview images for most file types.
  • Upload File (Compatibility Mode): For older browsers, the previous functionality may not work. If that's the case, you must use this method to upload a single file.
  • Upload ZIP Archive: This method lets you upload a ZIP file containing your assets. The ZIP file will be automatically unpackaged during the import.
  • Import from Server: With the previous methods, files must be uploaded by your local filesystem. This functionality lets you select files that are stored within the Pimcore hosting server filesystem. This could be especially useful if files are shared through, for example, an SFTP folder.
  • Import from URL: Instead of uploading physical files, there's the ability to upload assets just by pasting an external URL. Here, the asset name is extracted by the URL itself.

For each uploaded asset, there is the ability to upload a new version at any time. Ensure that only the standard upload method can be used to upload new versions. Let's now have a look at how to organize uploaded assets.

Organizing Assets

In this section, we will see how assets are organized within a folder and how to list and filter them. Unlike the case with objects folders, for the assets folders, we have two different tabs: the Preview tab just shows, as the name suggests, the preview images of the various assets, alphabetically ordered. The List tab shows, in turn, a small preview image and the list of asset properties. In the following figure, you will see how this tab looks:

Figure 6.3: Assets list

Figure 6.3: Assets list

Looking at the figure, you will notice that, unlike what was shown for object grids in the Working with the grid component section of Chapter 3, Getting Started with Pimcore Admin UI, there are some extra functionalities. Above the grid, we can see the only unreferenced checkbox; if checked, only assets that are not related to objects or documents are shown. Nearby, you can see a button that lets you download the selected items as a ZIP file. Last but not least, to the left of the grid we can find a collapsible section that allows the filtering of assets by tags assigned to the assets. It's important to point out that only assets to which all the selected tags are linked will be shown in the grid.

Let's now have a look at how to relate assets, introducing the various kinds of media components.

Relating Assets to Data Objects

In this section, we will see how to practically relate assets to objects. Firstly, we will present the different kinds of media components that can be attached to classes, explaining the peculiarities of each one. Then, we will see how to upload, search, or drag assets directly on the object. In the following figure, you can see the various kinds of media components:

Figure 6.4: Media components in the Data Object Class Editor

Figure 6.4: Media components in the Data Object Class Editor

Let's describe each field that is shown in the figure:

  • Image: Allows you to attach an image to an object. As you can see in the previous figure, it's possible to set the component's width and height and to define an upload path for assets that are uploaded directly through the component. The defined path of folders and subfolders will be created at the first upload (if they were not previously created in the asset folders tree).
  • External Image: Lets you link an external image by providing the image URL, instead of linking a physical asset. In the component settings, you can set the width and height of the image preview.
  • Image Advanced: This is an extension of a simple Image component; this allows you to define and render hotspots, markers, and cropping on the uploaded image. For each hotspot or marker, we can set a name and eventually add one or more pieces of metadata, which could be textual information or relations with other assets, objects, or documents.
  • Image Gallery: As the name suggests, this component allows you to add an unlimited number of images to create an image gallery, which can be sorted at any time. There is no control over which images are already present in the gallery, so you can potentially add the same image to the gallery multiple times. For each image in the gallery, we can add hotspots and markers as for the previous component.
  • Video: This allows you to attach a video to the object. This video can be a physical asset previously uploaded on Pimcore, or an external video. For external videos, you must only attach the video ID; the allowed platforms are YouTube, Vimeo, and Dailymotion. For internal video assets, we can attach a poster image by dragging an existing image asset, and provide a title and the description.

Now that we have presented the various media components, let's see how to relate an image to an object. The different ways to make this operation are shown in the following figure:

Figure 6.5: Image relation

Figure 6.5: Image relation

As shown in the figure, there are three ways to relate an image in the component:

  • Direct upload: Upon clicking on the upload icon, the standard upload form will open, letting you upload a file from your filesystem.
  • Search: Upon clicking on the search icon, a search modal will open, letting you select an image from the previously uploaded ones.
  • Drag and drop: Just drag and drop an image from the asset tree to attach to the component.

Once the image is attached, you can open the asset directly from the component.

To summarize, in this section, you learned how to upload assets in Pimcore, with a particular focus on different upload methods. Then, you saw how to organize assets in folders and how to filter them to perform searching. In the last part of this section, you discovered the different kinds of media components and how to attach images to those components.

In the next section, we will have a look at the Pimcore internal image editor, and we will see how to enrich images by adding metadata.

Image Editing and Enrichment

In the previous section, you learned how to upload assets on Pimcore and how to relate them to objects. In this section, we will present the Pimcore-integrated image editor and how to perform product enrichment by creating metadata for images. After that, we will see how to set up a focal point for an image.

Exploring the Image Editor

Pimcore integrates a web-based component for image editing. Based on miniPaint, the image editor is essential for simple manipulation tasks such as color corrections and cropping. In the following figure, you can see how this editor looks:

Figure 6.6: Image Editor

Figure 6.6: Image Editor

As you can see in the figure, in the left menu we find all the common tools of image editors, such as pencil, eraser, text, and so on. Then, in the top toolbar, we can access other features:

  • Save: This lets you save changes to the image.
  • File: This lets you upload a new image to replace the current one.
  • Edit: Here you can find methods to copy and paste a selected area or to undo changes.
  • Image: Here you can find methods to zoom and resize the image and functions to flip and rotate it. Moreover, there are corrective functions to adjust color brightness and contrast and the tool to get the image palette and histogram.
  • Layers: Here you can find methods to create and manage different layers of the image.
  • Effects: Here you can add effects/filters to the image, for example, the Black & White filter.
  • Tools: In this menu, you can find some advanced functions for color replacement, border creation, and calculating key points on the image.

Now that we have explored the image editor, we will see how to define asset metadata.

Defining Assets Metadata

In this section, we will discover how to define metadata for assets. Typically, metadata is used to enhance asset information to describe content without showing it; this could be useful for scenarios in which the content cannot be shown due to poor connection or for accessibility reasons. With images, for example, it is good practice to use an alternative tag on websites to describe the visual content in a short bit of text.

In Pimcore, it's possible to create predefined metadata that could be applied to every asset. You can open the metadata definitions panel through Settings | Predefined Asset Metadata. The following figure shows the metadata properties and the different types of metadata that can be created:

Figure 6.7: Predefined Metadata Definitions

Figure 6.7: Predefined Metadata Definitions

Let's look at the various properties that we can see in the figure:

  • Name: The name of the metadata property (there are no unique constraints for this field).
  • Description: An optional description of the metadata.
  • Type: We can define simple metadata types such as Input, Textarea, Date, Checkbox, and Select. As a more complex option, there is the ability to link Object, Document, or another asset as metadata.
  • Value: For each metadata, it's possible to define a default value. The type of this value reflects the previously defined type.
  • Configuration: For select metadata, in this property, we must specify the options that could be selected for the metadata. These options must be comma-separated.
  • Language: This specifies the language of the metadata.
  • Target Type: We can specify whether certain metadata is restricted to a specific type of asset. If none is selected, the metadata can be applied to all kinds of assets.

To define new metadata, you just need to click on the Add button; all changes are autosaved without the need to click a button.

The predefined metadata can be attached to assets. You can do this by clicking on the Custom Metadata tab in the asset window, as you can see in the following figure:

Figure 6.8: Asset Metadata

Figure 6.8: Asset Metadata

As you can see in the figure, for each asset, it's possible to create custom metadata. For each bit of metadata, we can define the value and specify the language. The previously created metadata can be attached to the asset by clicking on the Add predefined definitions button.

Now that you have learned how to create asset metadata, let's see how to set up focal points in Pimcore images.

Setting up Focal Points

In this section, you will learn how to set up focal points for images. This property can be configured in the image editor by clicking the Set Focal Point button, which you can see in the following figure:

Figure 6.9: Setting up a focal point

Figure 6.9: Setting up a focal point

As you can see in the previous figure, clicking the previously mentioned button will add a marker to the image. The focal point is placed in the middle of the image by default, but you can drag it to move it to the desired place.

As you will learn in the next section, the focal point can be used to dynamically create image thumbnails to ensure that the focus of the image is on the focal point.

To summarize, in this section, you learned how to edit images through the integrated editor. Then, you learned how to create predefined metadata and how to attach metadata to assets to enrich them, and how to set up focal points on images. In the next section, you will learn how to create images and video thumbnails and how they can be used to distribute assets across different mediums.

Defining and Using Thumbnails

In the previous section, you discovered how to edit images using the internal editor and how to create metadata for assets. In this section, you will learn how to define thumbnails for images and videos in order to distribute them across different platforms.

In a lot of scenarios, the same images must be shown both on a website and a mobile app, and this requires different resizing due to different spatial content organization and the different shapes and sizes of various devices' screens. Uploading different versions of the image as different assets is not the best solution, because if we want to make a change to the original image, we must resize all the images again.

To avoid this problem, Pimcore provides the ability to define transformation rules to dynamically create different thumbnails both for images and videos. We can therefore upload a high-definition version of the assets and define rules to create smaller resizing.

In this section, we will first see how to define rules for thumbnail creation. Then, we will discover how to practically require them on templates and how to dynamically generate public URLs. The physical thumbnail file will be automatically created by Pimcore when a certain thumbnail is requested for the first time.

Defining thumbnails

To define thumbnail generation rules for images, just go to Settings | Thumbnails | Image Thumbnails. In the tab that opens, click on the Add button, fill in the thumbnail name, and click Ok to create a new thumbnail definition.

In the following figure, you can see how the thumbnail definition panel appears:

Figure 6.10: Image thumbnail

Figure 6.10: Image thumbnail

As you can see in the previous figure, the thumbnail definition name is the one that was defined on creation; this name acts as a unique identifier within the thumbnail definitions, and it's not possible to rename a thumbnail definition. Thus, we can add a description for the thumbnail and group multiple thumbnails in a folder.

The first relevant property is the output format. We can choose to keep the original image format, to produce a web-optimized image, or we can force the output format to be PNG, JPG, GIF, or TIFF. In the Advanced settings, we can set extra properties to define the image quality and resolution for JPEG and print formats.

At the bottom of the screen, you can see the Transformations definitions pipeline. For each thumbnail, we can define one or more transformations, which will be performed in the defined order from top to bottom. You can choose from a large set of transformations to perform cropping, resizing, rotating, or color filtering. In the previous image, for example, we have defined a transformation to scale the image by width, giving the maximum width in pixels and maintaining the image ratio. If we enable the Force resize checkbox, we force the generation of a thumbnail with the desired width; this also works when the original image is smaller than this width. Besides, it's possible to apply different transformations for different media queries, to dynamically adapt the image aspect based on screen size.

Once you have defined the transformation pipeline, just click on Save to persist the thumbnail definition.

What has been said for image thumbnails is also valid for video thumbnails. In the following figure, you can see how a video thumbnail definition appears:

Figure 6.11: Video Thumbnails

Figure 6.11: Video Thumbnails

As you can see in the figure, there are a limited number of possible settings for videos compared to images. Basically, for video thumbnails, we can define bitrates and scaling operations.

Now that you have learned how to create thumbnail definitions, let's have a look at how to define a thumbnail that uses an image's focal point.

Focal point on thumbnails

In the Setting up focal points subsection of the Image Editing and Enrichment section, you learned how to set up focal points for images.

As mentioned in that subsection, focal points can be used to define a particular kind of thumbnail transformation. In the following figure, you can see how to set up this transformation:

Figure 6.12: Thumbnail Cover Transformation

Figure 6.12: Thumbnail Cover Transformation

As you can see in the previous figure, you can add a Cover transformation, which supports the usage of the focal points. This kind of transformation will create a cropped image centered by the focal point. The size of this thumbnail is defined through the Width and Height parameters.

If no focal points are set for the image, the Default Positioning parameter will let you create a cropped image placed in the defined position.

In the next section, we will see how to invoke thumbnails on templates and how to dynamically generate a public thumbnail URL.

Using Thumbnails

In the previous section, you learned how to define thumbnails for images and videos. In this section, we will see how these thumbnails can be used in template and backend development. Then, we will show you how to dynamically generate public URLs to retrieve thumbnails in external applications.

Usage Examples

Let's show some code tips to explain how to use thumbnails. First of all, you need to get an instance of an asset; this lets you call the getThumbnail method, as we will show you here:

<?php

    use PimcoreModelAssetImage;

   $image = Image::getByPath("/Path/To/The/Image.jpg");

   $myThumbnail= $image->getThumbnail("my-thumbnail");

?>

In the previous code snippet, we can see how to retrieve an image thumbnail given the name of a previously created thumbnail definition. This method also permits the creation of a custom thumbnail definition on the fly, passing the thumbnail configuration as an input, as we can see in the following snippet:

<?php

    use PimcoreModelAssetImage;

   $image = Image::getByPath("/Path/To/The/Image.jpg");

   $customThumbnail = $image->getThumbnail(["width" => 500,      "format" => "png"]);

?>

As we can see, we can create a custom thumbnail by setting basic configuration options like width and format.

The retrieved thumbnail can be placed in HTML templates. As we can see in the following snippet, one option is to set the source property for an image tag:

<img src="{{ image.thumbnail('my-thumbnail').path }}" />

The getPath method retrieves the filesystem path and can be used to set the image tag source; this method is called automatically if omitted because it's called by the implicit __toString function.

As an alternative, we have the option to let the thumbnail generate the HTML tag itself:

{{ image.thumbnail('my-thumbnail').html({'class' => 'my-css-class', 'alt' => 'The image alt text'}) }}

The getHtml method returns the image HTML tag; as an input of this method, we can pass an array of properties that will be applied to the tag. This could be useful to dynamically add a CSS class or data properties such as alternate text.

If you are using media queries in your thumbnail configuration, the getHtml method will return a picture HTML tag instead. If you want to require the image tag for a specific format, you can use the getMedia function, as you can see in the following code snippet:

{{ image.thumbnail('my-thumbnail').getMedia("(min-width: 576px)").html}}

The defined image thumbnail definitions can also be used to show a preview image of a video when we need to insert a video asset in a template. In the following snippet, we can see how to acquire these snapshots:

<?php

    use PimcoreModelAssetVideo;

$asset = Video::getById(123);

    echo $asset->getImageThumbnail("my-thumbnail");

    echo $asset->getImageThumbnail(["width" => 250], 20);

?>

As we can see in the code, the getImageThumbnail method accepts a thumbnail definition name or an inline configuration as an input. As a second parameter, we can specify which second of the video we want to take a snapshot of.

All these examples show how to use assets internally, but every asset in Pimcore has also a public URL, and the same goes for thumbnails. Let's see how to dynamically generate a thumbnail URL given asset information.

Downloading Thumbnails

Pimcore thumbnails are dynamically generated the first time they are requested for download or when they have to be shown on a page. To make a thumbnail downloadable from the asset details panel, you must check the List as option in download section on image detail view flag on the thumbnail definition. As we can see in the following figure, all thumbnails with this option enabled are listed in the Download Thumbnail dropdown on the detail view of an asset:

Figure 6.13: Download Thumbnail

Figure 6.13: Download Thumbnail

To download a thumbnail, you just need to select the desired thumbnail definition from the dropdown that you can see in the figure and click the Download button.

Thumbnails can be also accessed and downloaded through a web browser by their public URLs. These URLs come with a fixed rule to define them. Let's look at the following example URL:

https://your-pimcore-url.com/Path/To/The/image-thumb__123__my-thumbnail/Image.jpg

Let's explain all the parts that compose the previous URL:

  • https://your-pimcore-url.com: This is the base URL of your Pimcore installation.
  • Path/To/The: This is the path of folders and subfolders in which the image is contained.
  • image-thumb: This is a fixed part of the URL to specify that you require a thumbnail.
  • 123: The ID of the asset. It's preceded and followed by two underscores.
  • my-thumbnail: The name of the thumbnail definition.
  • Image.jpg: The name of the image.

Using this pattern, you can dynamically generate public URLs for all the thumbnail definitions starting from the image path and ID.

To summarize, in this section, you learned how to define different thumbnails for images and videos by defining a pipeline of transformation rules. Then, you saw some code examples showing how to practically use thumbnails during development. In the last part, you discovered how to dynamically generate the public URL for a thumbnail to make it downloadable.

Summary

In this chapter, we introduced Pimcore's Digital Asset Management (DAM) feature. After defining the common characteristics of all DAM systems, we presented how these characteristics are implemented in Pimcore.

We then learned how to upload assets in Pimcore, selecting various formats of files from different kinds of sources, which could be offline or online. Then, we learned how to organize assets using folders and tags and how to relate assets to objects. In particular, we presented the different data components that can be used to attach assets to objects.

After that, we saw how to edit images through the integrated editor and how to enhance image content by defining metadata for them. In particular, we learned how to create predefined metadata definitions and how to define custom metadata for each asset.

We then focused on asset distribution, learning how to create thumbnail definitions for images and videos. We saw how to practically use thumbnails in development, showing some code snippets, and how to dynamically generate public URLs for thumbnails.

In the next chapter, we will cover the administration of Pimcore sites, explaining how to install third parties' plugins and how to manage users and roles.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
44.204.218.79