
Ivan introduces Pimcore, a Symfony-based platform, and shares his journey from Java to PHP frameworks, highlighting UI modeling and a practical blog project with server setup and Git.
Learn how to install Pimcore via Docker, choosing between the demo and skeleton versions, set up docker-compose, and access the Pimcore admin at local host port 8080 with admin credentials.
Log in to Pimcore administration, navigate the side menu, and explore documents, assets, data objects, translations, system settings, and e-commerce bundles.
Explore Pimcore documents basics by creating content pages, adding area bricks and galleries, configuring SEO, navigation, properties, versions, and email snippets to build dynamic, structured pages.
Explore pimcore assets, including images, PDFs, and Word documents, organized in folders with previews and custom metadata; manage thumbnails, versions, and caches to publish updates.
Explore pimcore data objects and modeling, using a graphical interface to define classes and generate php code for structured, localized data with field collections for complex, repeatable content.
Learn Pimcore system settings to customize the admin and login visuals, manage languages, set the main domain and default error page, and control versions for documents, data objects, and assets.
Configure Pimcore website settings to manage logo assets, reCaptcha keys, locale and Google Maps API keys, and objects like tax class and fallback filter, accessible in controllers and twig templates.
Learn Pimcore redirects basics by creating redirects from source paths or full URLs to target pages in beginner mode. Configure priority, status, and optional expiry, and export redirects to csv.
Learn to manage Pimcore admin and shared translations, create keys, switch languages, and render translations in twig templates or controllers for frontend and backend.
Learn how to manage pimcore access by creating users and roles, assigning perspectives and custom views, and applying custom layouts to control object visibility, permissions, and workflows.
Learn how to create Pimcore static routes in the settings section to map url patterns to controllers, replacing Symfony routes, and test en/testing with a default controller and test action.
Configure predefined document types in Pimcore via settings, create a document type with a default controller and template, and add inputs like headline and image, using area blocks for layouts.
Configure Pimcore data objects grid views by selecting folders and object types, then save and share grid configuration. Customize columns with formatters and export filtered results to CSV or XLSX.
Explore how Pimcore manages quantity values across settings and data objects. Define units, conversion factors, and offsets; configure a quantity value converter service; and perform in-code conversions.
Learn to create and configure Pimcore classification stores to enrich product data with motherboard specifications (chipset, socket, format, memory type), define groups and keys, and display on the frontend.
Explore Pimcore system info and tools to view php info and memory and opcache, run sql commands, view tables, check table structures, and edit files directly.
Learn to use the Pimcore recycle bin to restore deleted objects, folders, assets, and documents, view who deleted them and when, and permanently delete or flush the bin.
Compare objects in Pimcore using the tools to set a source and target, view fields, transfer or mirror data, and save or revert; note classification stores aren't supported.
Learn to enable and manage Pimcore notifications, assign recipients, and send titled messages with optional attachments while monitoring delivery and opening related objects in the admin interface.
Explore Pimcore area blocks and bricks as a dynamic toolkit for building pages, enabling editable sliders, assets, and custom bricks through a structured extension workflow.
Course showcase (What to expect)
Install the Pimcore skeleton, configure docker compose with user IDs and port, then run docker compose up -d and the initialization command to complete the Pimcore installation.
Create blog post category and blog post tag classes, name them in singular form, and build a blog post object to model posts as objects; reuse the structure with copy-paste.
Model a Pimcore blog post class with a tabbed region layout, including title, short description, content, date, posted by, image, tags, categories, SEO data, related posts, and ad panel.
Install and configure webpack encore to manage css and js, install and integrate Bootstrap, Font Awesome, jQuery, and Sass, create assets and config files, and enable prod and dev workflows.
Segment html into reusable twig templates, build a main layout with a footer, and wire assets and dynamic blocks via pimcore, symfony, and webpack encore.
Learn how to configure Pimcore navigation by setting a navigation root and start node, build a dynamic menu with the Pimcore nav renderer, and control visibility in edit mode.
Create a dynamic Pimcore blog listing page by adding twig templates, a page-specific blog listing script, and Select2 filters with pagination and hidden sort by and per-page fields.
Create blog single page by adding show.html.twig in the blog folder, copying from index, removing entry points, and adding an SEO block to pull metadata from the blog post object.
Set up the contact page by creating a contact folder and index.html.twig, copy content while removing the footer and SEO block, and build the form with Symfony and Pimcore.
Build a dynamic gallery carousel area brick for Pimcore backend with draggable assets, configurable slides, an action button, and text alignment options. Implement a Twig extension for unique carousel IDs.
Define a gallery carousel area brick in Pimcore, create its areas gallery carousel template and twig view, and implement a dynamic, editable carousel with slides, previews, and thumbnails.
Learn to build data mappers in PHP to format blog post data for the frontend, including an abstract mapper and a blog posts mapper mapping id, image, title, and date.
Create a custom blog post link generator in Pimcore to build dynamic URLs using the post title slug and id, routed to blog post show with protocol-aware host URLs.
Create a testing route in Symfony to validate a Pimcore data mapper by saving and retrieving a blog post, verifying slug generation, image handling, and tag ordering.
Create a latest blog posts area brick using the gallery carousel approach to list three newest posts by date, rendered via a blog card twig partial with thumbnails.
Set up a dynamic footer with Pimcore blocks and a socials iterator, enabling editable social links and icons to render html from Pimcore inputs.
Create a reusable abstract listing query builder in Pimcore that dynamically consumes request parameters, provides pre and post query hooks, and supports joins for tags and categories with sortable results.
Create a blog post listing query builder that extends an abstract listing query builder, joining posts with relations, tags, and categories, enabling search and date-based sorting.
Create a blog post repository in Pimcore with find and paginate methods that fetch by id and return paginated results using a blog post listing query builder and knp paginator.
Create a blog post category repository in Pimcore, with an all method returning an array of categories sorted by name using the blog post category data object and listing class.
Inject the blog post and category repositories into the blog controller, implement pagination, map results with listing data mappers, and return blog posts and categories to the frontend.
Learn to implement frontend blog post listing with dynamic pagination and filters, including sort by, per page, category selection, and no-results messaging.
Create a dedicated blog post show data mapper, fetch the user who posted, seo fields, and related posts, and wire it through the blog controller show action.
Set up a blog post single template in Pimcore using Twig to generate SEO data, canonical URL, OG and Twitter cards, and render related posts, tags, and ads.
Automate blog seo data with Pimcore events by using the data object pre update trigger to fill og url, canonical url, seo title, and seo description while preserving existing values.
Create a contact form by building a Symfony form type and wiring it to a new Pimcore contact page, including email, name, and message fields with validation.
Create a Pimcore emails template and a contact mail action to render dynamic attributes, using Pimcore inputs and an admin workflow for subject and styling.
Configure and test email sending for the Pimcore contact form by setting up env variables and mailer dsn, using Mailtrap or SMTP, and handling form submission, validation, and email templates.
Create and customize a 404 error page in Pimcore, configure a dedicated template, hide it from navigation, set production mode, and prepare for a site-wide sitemap in the upcoming steps.
Learn how to generate Pimcore sitemaps using the presta sitemap bundle. Create a blog post sitemap generator and an image processor, and prepare production assets with npm run build.
Push your Pimcore project to GitLab by creating a private repository, initializing the repo, adding origin, staging and committing, and pushing to master, optionally using an SSH key.
Learn how to create a Hetzner server for hosting, select an Ubuntu image, configure the server and SSH key, and access the server via SSH to prepare for Laravel Forge.
Configure a Pimcore project on a Laravel Forge server by creating a custom VPS with Hetzner, setting up DNS, applying an NGINX template, cloning the repo, and installing Pimcore.
Export and import the Pimcore database and assets using scp and mysql, transfer assets and versions, configure Forge server, and set up cron jobs and sitemap generation.
The course contains a few hours of free videos introducing you to the Pimcore platform, where I will show you some of the features it provides as well as how to use them.
In the course you will learn how to setup Pimcore, create a project (Blog), optimize and prepare it for production, how to purchase and setup a server, how to deploy your project on the server as well as how to manage it via Git.
The project creation part of the course shows real world examples and tips when developing your web application using Pimcore.
I'd highly recommend you go through the free content before starting with the Blog creation part of the course if you have no prior experience using Pimcore.
If you have prior Pimcore knowledge this course will only improve it and teach you some good practices when working on a project.
It is recommended that you have intermediate PHP knowledge and experience using PHP frameworks such as Symfony and/or Laravel.
Feel free to leave a comment under the course or message me through Udemy if you have any questions regarding the course. I'm here to help you on your journey of becoming a Pimcore developer!