Make a Lasting Impression

Theme select: get out HTML from core and play with template file

A nice ImpressCMS feature is if you like users or visitors can select themes.  But the classic Select Theme Block looks old and if you like play with modern select scripts or HTML5 there is a problem: template file (system_blocks_themes.html) has only one smarty var: <{$block.theme_select}>. All HTML code is in a core php file.

Well, let´s go with changes.

Just look this code and apply the changes in your Impresscms installation.

You have now new smarty vars and HTML code in your template file. Only option tag remains.

However your look block will have not changes. It is normal because it is a matter for themes and templates.

You can now play with candy jQuery scripts as Select Inspiration, Fancy Select, mousewheel or HTML 5 features.

Example using the new code.


No comment

Composer Integration Experiments

Composing ImpressCMS
I'm currently doing a series of experiments with my limited PHP development experience to integrate the composer package management into the ImpressCMS core. This is very PHP-specific hardcore stuff so I'm learning a lot as I go along. I'm not a newbie when it comes to dependency resolution from my Linux time, so I already got the basics. The specific implementation in composer and the design choices made by the team, along with getting to know a complete new ecosystem of packages and tools is really interesting!

My main reason for this approach is that composer is the de facto standard for php package distribution. Package discovery, package installation, dependency resolution and version management are all functionalities that we will need in short order in the ImpressCMS core.

It can be a very complex matter, so it's smart to look out for a proven solution to integrate in ImpressCMS, certainly where looking at functionality that is not really part of the core CMS functionality.

In similar circumstances, having composer integrated in the core (and the composer autoloader scripts as well) will make it much easier to integrate external libraries, and will (hopefully) lead to more cool stuff to come out in the near future.

Many content management systems pride themselves on their extensibility. I believe it's a smart approach. The core team can't take care of all the different specific needs and libraris that people want to integrate for their projects. Let's just make it easier for people to integrate their library of choice into the core.


At the moment, these things are already done:

  • A composer plugin specifically for the installation of ImpressCMS packages is available on github: ... ler-plugin
  • A temporary test repository running on Satis for ImpressCMS composer packages is available now at Contact me to add a composer-enabled ImpressCMS module to it.
  • The development branch of the profile module is composer enabled, and installs without a problem on a clean ImpressCMS installation.

Things still to do

  • A lot
  • making composer autoload work in all cases in the core
  • figuring out how to transform the current impresscms autoloader class into composer directives, so we can switch to using the composer-generated file.
  • moving the external libraries from the 'libraries' folder to composer dependencies. Adapting the core code where necessary.
  • testing how to add external dependencies in modules

I'm currently doing this in my own fork of the core, as this is more of an experiment and I don't want to pollute the official repository with my composer quests.

However, if you feel this is worth pursuing and you want to help me out to get faster to a state where it can be integrated into the next main release, let me know what you can do to help.


Join The Security Response Team

Security is our lifeAre you as concerned about security as we are?

One of our basic, most fundamental, priorities is security - we strive to do everything we can to provide you with a website you know will stand up to the various attempts at hacking, phishing and privacy invasion. Here in the US, very large and well-known companies are facing some serious fallout because of network and data breaches. We are looking for some vigilant people to help alert us to any potential vulnerabilities or exploits and to help us respond as quickly as possible. keep reading ...


Adding user avatar in User Menu block

The "classic" User Menu in left or right side is just for show links. But if you like get some candy in your theme, as show user information in a central page position or with more importance try these changes:

Edit the file /modules/system/blocks/systemblocks.php and around line 184 just add:

$block['user_avatar'] = ICMS_UPLOAD_URL . '/' . icms::$user->getVar('user_avatar'); 

You have now a new smarty var.


Then edit in your theme the file system_block_user.html (if you use a custom template set use the Control Panel). Add the new var and play with HTML and CSS.

Example: userblock.jpg


ImpressCMS feeds are now integrated in Slack

Slack Logo

The news and blog RSS feeds are now linked to slack. That means that every time a new item is posted in one of these two parts of the website, a notification will go out to the slack users of the ImpressCMS organisation.

I'm working on making our Slack chatbox the one-stop destination for all the information about ImpressCMS activity. The idea is that you get all the information you need or want by just looking at the appropriate slack channels. keep reading ...

No comment
Subscribe to latest posts