Web Mechanic Blog
Sorting by Taxonomy Terms in Views
Have you ever had to sort a view of nodes by a referenced taxonomy term? In our system, each staff member is entered as a separate node, containing the staff member's name, position and email address, and also containing the department the staff member works in. The department is a taxonomy reference field. We then have a view that pulls in each staff member's node, organized by department, and the departments are listed alphabetically.
Multi-Level Category Browsing With Drupal 8
In February, I built a WordPress plugin that allowed users to browse blogs by choosing a top-level category in one select box and then having whatever top-level category they select populate a second select box with the subcategories of that top-level category. I decided I would re-create that functionality as a Drupal 8 module.
Notes on Building a Drupal 8 Module, With a Little AngularJS
For the moment, I just want to explore some of the features that I found particularly interesting in the module I wrote to show the old Drupal 7 posts in the left sidebar.
First, to access the JSON data that comes through the web service I set up on my Drupal 7 installation at http://webmech.biz, I used the Guzzle HTTP client library, which was added to the initial Drupal 8 release. The Guzzle API is object-oriented and easy to use:
The Magical (Dis)appearing $this Psuedo-Variable
At the office, we recently upgraded our staging server to PHP 7. For the most part, this caused no problems at all and worked very well (and faster!). But our event pages were failing, just giving us a white screen. I looked in the "Recent log messages," and saw this: "Error: Using $this when not in object context." The code that triggered this error was a non-static class method that was being called statically from within a different class. In PHP 5, this code only gives a "Deprecated" notice that non-static classes should not be called statically.
Multi-Level Category Browsing With WordPress
Now, I am primarily a native PHP and Drupal developer, and this blog focuses on PHP and Drupal. But never having explored WordPress much in the past, I decided this would be as good a time as any to do so. So I decided to build a WordPress plugin.
Drupal Redirect Paths May Conflict With Existing Directories
If you are familiar with the Drupal Redirect module, you know it can be a convenient way of creating redirects from URLs that don't really exist. For example, you can create a redirect for yoursite.com/music to redirect to another website dedicated to your favorite music.
But what if the URL you want to use as a redirect does already exist? What if you want yoursite.com/testfolder to redirect to drupal.org? It won't work--you will get an error message. If you have already created a folder called testfolder, as in the image below, then your redirect won't work.
PHP Timeout on Windows/IIS
This post was written 11/25/2015 and was migrated over from my Drupal 7 site, which is now offline. Because of that, certain demonstrations in this post may not be functional.
Have you ever run a PHP utility script on a Windows/IIS platform and had it unexpectedly timeout? Your IIS settings for script timeouts might be conflicting with your PHP settings.
A State Machine With an Unknown Outcome
This post was written 07/19/2015 and was migrated over from my Drupal 7 site, which is now offline. Because of that, certain demonstrations in this post may not be functional.
Drupal tightens up node_load()
This post was written 06/28/2015 and was migrated over from my Drupal 7 site, which is now offline. Because of that, certain demonstrations in this post may not be functional.
Loading Form Definition Include Files in Drupal 7
This post was written 06/12/2015 and was migrated over from my Drupal 7 site, which is now offline. Because of that, certain demonstrations in this post may not be functional.
Recently I had to include a form within an existing set of nodes (using hook_node_view), and this form had to make an AJAX callback. I put the form definition and Ajax callback function in a separate file for convenience. From my_ajax_test.module: