May 10 2019
May 10

my site front page

[embedded content]

Many years ago I made my personal page on Drupal 7, as soon as Drupal 8 was released I have upgraded to this version. My personal site is just a page with my contacts and my blog. 

In truth, I do not always have enough time to write posts to my blog, as well as keep the core and modules up to date. Some times between the huge projects I have a frame to share my experience and to make some support tasks and improvements. 

So more than 99% of its life my personal site works as a simple static HTML site.

Does it make sense to use Drupal as a backend? 

Let's imagine the site is static at any time except the time when I want to edit it...

And it's possible with Tome. It's Drupal 8 module. You can get more information on the official site

Let me show you my personal site It's a static HTML site. I don't have the permanent version of this site either hosted somewhere or locally. But I have a private repository of my Drupal site with configurations and content in flat files. 

Tome module allows exporting configurations in .yml files and content in .json files as well as install Drupal with those files without operating with the DataBase dump.

I have decided to put some changes on the site. I need to get the site locally, log in Drupal admin, make changes and generate a new version of my static site. That's it.  

Cloning the site:

$ git clone [email protected]:vasilyyaremchuk/personal.git

It's my private repository, that I have forked from

Coming to the folder:

$ cd personal

If you've taken a look at you could find that there is no core folder there. You have to run 

$ composer install 

to get all necessary dependencies. 

Install the site with drush:

$ drush tome:install

Run a local server with drush:

$ drush runserver

Make some changes in the admin area. A new password to login in admin provided after the previous action.

If all changes were done, we can stop the server and generate a static site:

$ drush tome:static --uri=

Attention! Don't forget to set the basic URL of your production site, otherwise, you can get incorrect links that point to your local environment in some places of the static site.

Now you have a new static version of the site and you can deploy it on your hosting.

Don't forget to update the repository with those changes:

$ git status

You can see that one file with content is changed. Let me commit those changes:

$ git add .

$ git commit -m "content changes"

$ git push

Finally, you can delete the local Drupal 8 site:

$ cd ..

$ rm -R --force personal

Jun 14 2017
Jun 14

[embedded content]

"Paragraphs are more powerful than you can expect" from Vasyl Yaremchuk for DrupalCamp Kyiv 2017

I took part in Kiev Drupal Camp 2017 last weekend. It was a good decision to go to the code sprint. I'm sure that the second day of the conference was much better than the first one with formal presentations. My personal thanks to Dmitry Drozdik, Dmytro Danylevskyi and Alexander Schedrov for their help to meet OpenY.

The main issue of the first day was that presentations went in several 4-5 streams in different rooms and I missed a lot of useful information. Fortunately, Conference organizers recorded videos of all presentations.

On this Camp I had a presentation: Paragraphs are more powerful than you can expect.

There was not enough time. I tried to provide the extended overview and 3 demonstrations, but the overview was very short and the demos weren't very attractive. There is the video above.

Also you can download PDF with slides by the link

Mar 31 2017
Mar 31

Now I'm working on a new Drupal 8 module "LandingPage Framework". By the fact it's a package of several modules and themes.

Project page:

I still don't have a stable release but there is a version that you can start to play with and let me know if it worth to continue the development. The module use the power and the magic of Drupal Paragraphs. Paragraphs approach provides beautiful flexibility in content management because you can get any Drupal functionality in paragraph entity and you can set paragraphs on each page in individual order. 

The main goal of that package is simplification of Drupal based LandingPage development. I want to provide several out of box solutions that can cover the main cases of LandingPages such as Event page, Product page, Promotional page, CV/Portfolio page etc. But I want to provide extremely unlimited options to customize the page.

You can get more specific technical information in README.txt

I'm not going to write a long post, because one image better than 1000 words.

[embedded content]

LandingPageScreencast 1

Please see a quick screencast in that post, it's only an introduction that allow you to catch an idea. I hope I'll do the serious of screencasts to explain how you can use LandingPage Framework, how you can customize LandingPages and how you can do your best in Responsive Design.

Jun 07 2016
Jun 07

I took part in DrupalCamp Kyiv 2016. Let me share my impression.

I took part in Kiev Drupal Camps in 2010 and 2011, but after that, due to some personal reasons and job activity such as working as the Project Manager at the company, I wasn’t able to participate at the camps from 2012 to 2015. To compare with my previous Drupal Camp experience this Camp looks like International not local Ukrainian event. There were several presentations in English. I think as soon as English presentation will be more than 50% the Camp became really international. The most important conclusion that I have after this event: It does not make sense to start new project on Drupal 7. There were several excellent presentations that show a long set of Drupal 8 strong points. On my own view the best presentation did Olexiy Gorobets from FFW. His report significantly change my understanding of Drupal Cache Workflow. I hope that his report will be available online soon. Also there is a trend towards consolidation Drupal IT business in several companies. They are FFW and Adyax. More than 50% of the camp presentations were prepared by the people from that companies. Also as I can see more than 50% of the famous Ukrainian Drupal developers joined to that 2 companies. I can saw only one weak point of Kiev Drupal Camp 2016. There were 4 streams of presentations, thus participants can have very limited access to that lectures, so one can see only 25% of presentations. I hope that we will have access to all presentations soon, but now I can share my final slide set of my presentation The First Step to a Drupal 8 Landing Page Builder.

Jun 19 2015
Jun 19


Several years ago I was working on my personal Web site. Even in that time One Page solutions were very popular for some presentation, personal or CV pages.

The main idea of such approach to put all information on one long page with several link anchors corresponding some separate sub-sections of this page.

In 2011 Single Page Website module was created. Initially my home page was done on the base of this module.

Single Page Website module is good out of box solution for Drupal beginners but it has a lot of weak points connected with it's architectural solution. Some more information about this module you can see in my report on Kiev Drupal Camp 2011.

Frustration due to Single Page Website module

It was my fault to build single page on the base of my custom solution without some prepared and ready to use approaches (Views or Panels for example) that can put several nodes or other content entities together on one page. And according incorrect architecture Single Page Website module has a lot of restrictions. The most significant one is theme restriction. Module works with limited number of themes. Also on the module there is out of box ability to have only one page with anchor navigation from menu.

So we should have only one language One Page Website. And the last frustrated feature of the module we should have anchors links in menu only without links to some internal or external pages.

New Approach based on Panels

I'm start working on the other solution about one year ago, see my post Anchors Panels Navigation Module. And now I have some stable version of Anchors Panels Navigation Module with no theme restriction and with manual anchor name management.

Of course, new approach is Panel based and it require several modules to be installed. Also to set One page website driven on Anchors Panels Navigation module takes more time than on the base Of Single Page Website one. But this solution more flexible. You can use several menus, and links in blocks and content for one page navigation. Also you can use this module to set on your site several Landing Pages and the number of such pages is not limited!

If you would like to set Landing Page solution on the base of Anchors Panels Navigation module you should do a lot of manual work in Drupal admin area.

  1. In addition to setup this module you should create node with type Panel and put several pieces of content in the panes.
  2. Set CSS IDs to each pane that should have #anchors. The name of #anchors will be equal to the names of CSS IDs.
  3. To set links in menu with #hashes. You can use absolute links to your site (like I use on my personal site) or use Void Menu Module (I think it is overkill approach).
  4. To make this menu fixed in the browser window. You can use Code per Node module or Floating Block module or, of course, put required CSS code directly in your theme.

After this steps Anchors Panels Navigation module module will take care about scroll to you anchors when visitors will click to the links and about #hash changing in browser address string. By the fact this new approach less complex than Single Page Website module. It has less PHP and JS code and cause less problems to the site developers I hope :-)

What will be the next step?

After one year of developing and using this module I find out that "Anchors Panels Navigation" is not good name for this module according marketing view. It reflects some architectural semantic core of the module but there is no any ideas about module applying in the name of the module. So I would like to ask Drupal community about better name for this module.

Other solutions

It is fair to mention some other solutions belong to the other developers.

There is Drupal Distribution One Page CV created by Ukrainian Drupal Developer Artem Shymko.

There is Single Page Site module developed by Belgium Drupal Developer Robin Ingelbrecht. This module has no theme restriction such as Single Page Website module but there is no ability do more than one Landing Page into one Drupal site also there is no anchors in address line that does not allow to send link on separate block in the One Page site. But in this module there is beautiful Next Page submodule, and it works perfect, see

Please let me know is there are some other Drupal based solutions that I should mention here.

Jun 03 2015
Jun 03

In this post I'm not going to describe extremely great modules that you must use on each your Drupal site such as Backup&Migrate module or Views module etc. This modules you can use in some separate cases but they can improve support of your Drupal sites!

Profile Switcher

If you have old site that was done many years ago and maybe upgraded for example from previous Drupal branch, say from D6 to D7. Than you can face with Distribution name Notice.

Notice: Undefined index: distribution_name in drupal_install_profile_distribution_name()...

You can google this issue and find solution, for example

UPDATE `my_database_name`.`system` SET `status` = '1', `info` = '' WHERE `system`.`filename` = 'profiles/demo_profile/demo_profile.profile'; or UPDATE `system` SET `status` = '1' WHERE `filename` = 'profiles/standard/standard.profile';

But it can not help in my case, when I use my own custom profile. But it does have sense to switch to Standard one to have easy Drupal core updates etc.

And I was happy when I found Profile Switcher.

I think when project start to save some time in development we start with some Drupal distribution to have already prepared set of modules. But during project life some modules are turned off and some new modules are installed. Thus we go far from initial Drupal distribution. And some times we find a decision to switch Profile name to Standard...

User One

I have my common practice to create for the client some separate admin user with abilities that they need only without any complex and extra admin items. Not qualified user can brake Drupal site if we provide him or her Drupal Superuser account. But sometimes we need to delegate to the client admin ability to manage users. And OMG, they can delete First Drupal user, for example. In this case User One module must be installed! After that your First Drupal user will be protected.

Bootstrap optimizer

I think each Drupal developer noticed that after some long development activity when you install and uninstall a lot of modules and themes trying to find optimal solution for your project than Drupal become crazy slow. It is due to some out of date data in "system" table. Bootstrap optimizer fix this issue.

Floating block

This module helps you to create a menu that will be already on the screen or some permanently visible informational block, for example, contact form. I have found it useful together with my new Anchors Panels Navigation module.

Node Convert

During the production lifetime of each Drupal site, some new features appear and they require new type of content. Also some old nodes should be converted in new content types with new fields. For example several years ago I'm working on Music School site where we have Teacher profile content type. Client would like to add gallery ability for some separate VIP teachers. New Profile content type was created and some separate profiles was converted to new content type. By the way module Node Convert allow to set some mapping rules during conversion process.

Code per Node

I tried this module at first when I did video background in the header on one of page of the project of my client. It was separate page with video background and we no need to use this feature on any other pages. So I put VideoBG Jquery script, settings and paths to my HTML5 video files in the JS field in node edit form. This module provide an ability to customise pages directly from admin area without theme edit. I think it is reasonable to do when this custom JS or CSS behaviour strongly connected with current node content and thus we do not loose this behaviour when we will switch from one theme to another one.

Void Menu

I think every Drupal Developer use placeholder in menu that make Drupal point to the front page of the site. Void Menu module allow Drupal admins to set their own tags with some replacement rules. The most easy example, we can set in menu hashes pointed to anchors on the current page. I have found this module extremely perfect together with me new module Anchors Panels Navigation.

Oct 09 2014
Oct 09

We have faced with the problem. We use Ajax Login/Register module but put site in Maintenance mode.

But we need to have Sign up ability. Ajax Register module show Sign up form in popup, content is requested from "ajax_register/register". But in maintenance mode we can see Maintenance page response…

But fortunately we have hook_menu_site_status_alter. Thus we can turn off Maintenance mode in our module on separate path:

function ajax_register_fix_menu_site_status_alter(&$menu_site_status, $path) {
  if ($menu_site_status == MENU_SITE_OFFLINE && user_is_anonymous() && $path == 'ajax_register/register') {
    $menu_site_status = MENU_SITE_ONLINE;

This is content of ajax_register_fix.module custom module.

May 26 2014
May 26

Several years ago I have a dream to put my own personal site into One Page solution. Due to I'm Drupal developer Drupal was selected as platform for my site. Thus Single Page Website Module was done.

This module is some kind of out of box solution. One can turned it on, do several settings on the module settings page and have One Page website on Drupal CMS engine.

But due to architecture of the module it has a lot of significant restrictions that will be difficult to resolve. The main problem is the limited number of themes that people can use with that module. By the fact Bartik theme and it's subthemes only works correct with the module. This issue connected with some automatic actions that module should perform with page template to make it One Page site.

There are a lot of other issues and limitations that restrict significantly abilities of Single Page Website module. There is no any multilingual support and there is no ability to set two One Page Landings, there is no ability to have link in menu that go to the separate Drupal or external page and so on, and so on...

The talk about weak and strong points of Single Page Website module is out of scope of this post, I'm ready to provide my thoughts but in the other post that will be created soon I hope :-)

The topic of this post is Anchors Panels Navigation Module. What made me make a second approach to the One Page site on Drupal? I think that if we can use higher layer of abstraction in the architecture we can avoid any theme dependence. But we should find some kind of wrapper to combine our One page site from different content parts.

I have used Panels module. If you would like to create some Landing Page with anchor navigation inside it, please use Anchors Panels Navigation module. Please use development version it should works, but some decoration moments I should finished before an official release.

There are several simple steps that you should do to obtain One Page site on the base of Panels with anchor navigation:

  • Create several pages with content that you would like to have on One page Panel
  • Create Panel an put nodes that you did on previous step into the Panel areas.
  • For each region that you would like to have anchor set CSS id in Panels settings.

  • Put several links to created Panels node with anchors equal the IDs into any Drupal menu. You can have some other links in that menu too.

  • Now you have Landing Page with anchors. The module does not provide any CSS altering of the page so to set your menu in fixed position you should do some CSS changes manually. I found CSS Injector module is helpful to set some specific CSS rules on the separate Palels page.

Feel free to ask any questions and send any ideas about that approach. Thanks!

Apr 22 2014
Apr 22

Several days ago we upgraded simple Drupal 6 site to Drupal 7. After the core upgrade process was finished we turned on all necessary modules such as Admin menu and Backup & Migrate. Some features required custom update by scripts and some manual work, we made a backup before this activity. ... something went wrong and we go back by restoring DB via Backup&Migrate module and site went down :-( When we took a look on DB backup script we found that there was an empty dump with the structure of some tables. So, as a result, the data in several tables was killed. When we repeated the upgrade process again and took a look at Backup&Migrate advanced settings we were shocked.

By some reason all tables was excluded from backup. After we align B&M settings backup became works correctly :-) The main idea of this post due to automatic upgrade process you should double check settings of contributed modules, upgrade can make them different according initial state. And, of course, backups is necessary part of site development activity but you should be sure that your backups correct.

Jan 30 2014
Jan 30

We faced of one of the projects that we supported with large amount of spam registrations. But there were valid users with assigned roles that should not be deleted.

Short script was written to resolve this task:

require_once './includes/';
define('DRUPAL_ROOT', '<path_to_you_Drupal_folder>'); // optional
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); // load Drupal to use Drupal API
$query = 'SELECT users.uid as uid FROM {users} LEFT JOIN {users_roles} ON users.uid = users_roles.uid WHERE users.uid != 0 AND users_roles.uid IS null ORDER BY users.uid DESC LIMIT 300';
$result = db_query($query);
while ($row = $result->fetchObject()) {
echo '300 spam users were deleted!'

Let me explain this code in details:

If we would like to use Drupal API and DB connection in any separate script not in our custom Drupal module we need to start with these lines:

require_once './includes/';
define('DRUPAL_ROOT', '<path_to_you_Drupal_folder>'); // optional
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); // load Drupal to use Drupal API

Attention! You should put your path instead ''.
Some times script can work without 'DRUPAL_ROOT' definition, but some times can't like in our case.

Authenticated User role ID is 2. But there is no any record with that role ID in {users_roles} table, so we should select all user IDs that have no records in {users_roles} table users_roles.uid IS null.

And do not forget to exclude Anonymous user record users.uid != 0.
Other wise we can delete record with 0 UID from {users} table, that serve for Anonymous user purpose.

Start to delete most resent users ORDER BY users.uid DESC.

Due to user_delete() function require pretty large number of SQL requests it is reasonable to set some limit LIMIT 300.

If there are a lot of spam users you can set cron task, for example:

*/02 * * * *  /usr/bin/wget -O - -q -t 1 >/dev/null 2>&1
Oct 30 2013
Oct 30
Swipe Photo Gallery

We are happy to inform you that we have put new beautiful photo gallery module on

Project page:

This module show the matrix of images on one separate page. User can see only one page in matrix and go to the next with Up, Down, Right or Left key or using swipe in Up, Down, Right or Left direction.

The simple instruction how to use this module:

  1. Turn on module as usual drupal module.
  2. Check that you use Jquery 1.7 or higher with Jquery Update module!
  3. Put several nodes with Slide content type. This content type will appear automatically.
  4. Go to the configuration page admin/config/media/swipe_photo_gallery and set path where you would like to show your slides.
  5. Go to this page and enjoy your slides.

Feel free to send us any recommendations and ideas that can improve this module!

Vasyl Yaremchuk 10/30/2013

About Drupal Sun

Drupal Sun is an Evolving Web project. It allows you to:

  • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
  • Facet based on tags, author, or feed
  • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
  • View the entire article text inline, or in the context of the site where it was created

See the blog post at Evolving Web

Evolving Web