Get A Free Quote

Drupal Development Standards

We guarantee to back the standards compliant with our Drupal best practices for the development process.

  • Coding Standards
  • Drupal Security

  • Software Testing
  • Drupal Maintenance

Basics

We strengthen the functionality and performance of a website by following our latest standards for Drupal development.

HTMLPanda will

  • use the latest version of Drupal such as Drupal 7.6 above in Drupal7 and Drupal 8.6 above in Drupal8.

  • always use the latest version of the module in the site and before the use of the development version of modules.

  • use hook_permission and hook_help while creating a page using the custom module to protect the page and provides help to the users to use the module.

  • ensure to define the appropriate package name in the custom module as per its functionality.

  • be sure about dependencies when a module is dependent on other contributed or custom modules.

  • assure that the used developer support module like - DEVEL, coder, module_ filter must be disabled before the site live.

  • clear cache from the database before backup to a database.

  • use drupal API instead of MySQL or PHP function in the custom module because Drupal has its own function for each.

  • use DRUSH commands for module installation, backup, cache clear or other functionality.

  • setup local DEV environment by downloading Drupal latest version>create a new MySQL database>create a new virtual host>install Drupal latest version.

  • use drupal API instead of MySQL or PHP function in the custom module because Drupal has its own function for each.

  • use DRUSH commands for module installation, backup, cache clear or other functionality, it provides smart work.

  • setup local DEV environment by download Drupal latest version>create a new MySQL database>create a new virtual host>install Drupal latest version.

  • establish git workflow by setting up the local and remote git repositories>manage commits for specific features in separate feature branches>push changes from local to the remote git repository.

  • ensure to configure some basic modules before starting site development like - (views ctools, devel, module_filter, pathauto, Tokens, Administration menu (admin_menu), Page Title (For SEO), XML SiteMap (For SEO), Meta tag (For SEO), Ck Editor, IMCE, Entity API, rename_admin_paths (if needed for security purpose).

  • create a minimum content type and minimum fields on the site. If the need for 5 content types to categories pages arises then we try to create one content type and make taxonomy term and select option in content type for categories pages.

  • set throttle value for any cron-triggered newsletters.

  • ensure feed URLs are correct.

  • confirm site-wide settings including email address settings.

  • switch email address on the contact forms and other client-specific settings to the actual client address, rather than our test address.

  • write errors to the log only, don't display messages to site visitors (site configuration > error reporting).

  • check that the credit URL is correct and working fine.

  • add overnight cron to cron drupal instances job.

  • ensure that the cron script that calls cron.php is updated when the website is running on its final domain.

HTMLPanda will not

  • hack core for Drupal so as to core files do not get changed.

  • make updates on production.

  • install all the available modules in the world.

  • commit your settings.

  • use the PHP Filter module.

  • hard code so as to codes can be altered whenever the requirement arises.

  • include too many modules.

  • install useless modules, and remove useless module's files from the server.

  • use the static path of site URL for a file or an internal link (like- 10.0.4.55).

  • change Drupal’s core files as Drupal provides many hooks and API to alter everything.

  • use Mysql or PHP function in the custom module because drupal has its own function for each.

  • use the PHP module in the core for DRUPAL7, because it has a security risk, as per drupal documentation.

  • remove/modify any core CSS files of drupal.

  • include CSS which is not used at all on the website, because it affects website performance. For example:- Firefox provides "dust me" addon and "chrome" browser use "CSS AUDIT" technique for this.

  • include test content, dummy users, or content generated by the devel module.

  • write SQL queries in tpl file.

  • include the files for any modules that aren't used and are never likely to be used (tip: the Enabled Modules module can help with this).

CSS Coding Standards

We follow the well-structured coding style by leveraging the CSS coding standards to make a website more responsive and business-centric.

HTMLPanda will

  • use 2 spaces for each level of indentation.

  • make sure that comments are indented the same amount as the declaration or ruleset they describe.

  • add a blank line and a comment describing the second ruleset if two rulesets have no interleaving blank line, they must be logically related.

  • ensure that there must not be any whitespace (spaces or tabs) at the end of lines.

  • follow the Doxygen comment style (also called a “docblock”) when describing a ruleset or set of rulesets, any comment that requires 2 or more lines (wrapped to 80 characters).

  • use a simple CSS comment style when describing a property or ruleset, any comment that can be written inside the 80 character line length limit.

  • assure that our CSS formatting code is easy to read, easy to clearly comment, minimizes the chance of accidentally introducing errors, and results in useful Git diffs and blames.

  • make sure that CSS throughout Drupal core and contributed modules are consistent and understandable.

  • always separate base, layout, and component styles into files.

  • place each component or component family in the file for complex themes.

  • make sure that state rules, including media queries, are included with the component to which they apply.

HTMLPanda will not

  • use tabs for indentation as the lead to an inconsistent display of the source code.

  • separate each ruleset by a blank line.

JavaScript Coding Standards

With the use of this advanced programming language, HTMLPanda makes the implementation of complex things easier on websites.

HTMLPanda will

  • assure all code must indent using two (2) space characters, must not indent using tab characters and end with trailing whitespace.

  • make sure that all statements (except for, function, if, switch, try, while) must be followed by a semi-colon (;).

  • ensure that return value is starting on the same line as the 'return' keyword.

  • assure that all JavaScript code MUST be declared inside a closure wrapping the whole file.

  • ensure that multi-word variables and functions are lower camelcase for variables that are not constants or constructors.

  • make sure that all variables are declared with 'var' before used and are declared only once. Besides, we declare all the variables at the beginning of a function.

  • assure that functions name are beginning with the name of the module or theme declaring the function to avoid name collisions.

  • ensure that the constructor functions are given names with an initial uppercase character.

  • ensure that the used codes are in the literal expressions instead of the 'new' operator.

HTMLPanda will not

  • define global variables under Drupal JavaScript.

  • embed JavaScript code in the HTML where possible as it adds significantly to page weight with no opportunity for mitigation by caching and compression.

  • use 'with' statement since it is not possible to use it with enabled strict mode.

  • include unreachable code, a return, break, continue, or throw statement followed by a ‘}’ or ‘case’ or ‘default’.

  • use 'document.createElement()' when adding a new HTML to the DOM.

Drupal Theming Standards

We provide fully customizable, fast and responsive themes for Drupal development that make a website result-driven.

HTMLPanda will

  • always develop a theme on a test site to prevent a user from seeing a website full of bugs.

  • use the PHP functions in the Drupal API and follow the best practices for writing source code.

  • deploy the theme to selectively show only certain users when the theme is ready to show but not ready to go live.

  • turn on both PHP error reporting and error message display in development environments.

  • turn off error message display in production environments.

  • use a stable administrative theme during development.

  • create the maintenance offline page in the case of database failure.

  • test the theme under cross-browser testing includes target browser, local browser, and remote browser.

  • write theme .info file, is a static text file for defining and configuring a theme.

  • integrate color.module allows the admin to change the color scheme of a theme.

  • set maintenance theme and test out by taking the site offline.

  • clear the theme cache which is presented in the database.

  • add 2 spaces for indents; rather than a tabbed indent (This maintains consistency and is consistent with Drupal's coding standards).

  • make sure to match the indentation of long opening and closing block HTML tags.

  • distinguish between PHP and HTML indentation.

  • prefer PHP in HTML to HTML in PHP in templates.

  • always put a semicolon at the end of small PHP printing statements.

HTMLPanda will not

  • start theming on parent theme if working on any suggested (contributed) theme like Bootstrap, Adaptive or any other then select sub-theme/child theme.

  • include unused themes.

  • place function in *.tpl.php.

  • use an unsuitable theme for the administration area.

  • include curly brackets.

  • include Drupal functions in templates.

Naming Conventions

HTMLPanda follows the well-structured naming conventions while following the Drupal development standards to make library management effective.

HTMLPanda will

  • use the HTML template that provides markup for the basic structure of the HTML-page including the , and tags.

  • set the front page at "Administration > Configuration > System > Site information”.

  • use the region template when a page region has content, either from the block system or functions like hook_page_top() or hook_page_bottom(). Possible region names are determined by the theme .info.yml file.

  • ensure that theme hook suggestions for nodes are made based on factors specified by Drupal.

  • ensure that theme hook suggestions for taxonomy terms are made based on factors specified by Drupal.

  • ensure that the maintenance page is set up properly.

  • make sure that the search-result.html.twig is the default wrapper for individual search results.

  • assure that for each view templates, there is a minimum of two templates used. The first is used for all views: views-view.html.twig and the second template is determined by the style selected for the view.

Custom Module

We at HTMLPanda create a module for the latest version of Drupal that displays links to content by following the latest development standards.

HTMLPanda will

  • give a 'short name' to the module which will be used in all file and function names.

  • create a folder in Drupal installation at the path, create the info file for the module, create a PHP file for the module, add an opening PHP tag to the module, etc.

  • ensure the details of what to put in a .info is found on the 'Writing.info files' page.

  • check whether the module is appearing in the module list on a website.

  • ensure that the .info file has the same name as the .module file and resides in the same directory.

  • create a hook and calling their implementations can be done by using one of the following functions (not all included): drupal_alter(), module_invoke_all() and module_invoke().

  • implement a Drupal 7 hook.

  • use 'visibility' and 'pages' to change the visibility of the block.

  • make sure to use .install files that define new tables, load data, and implement conversions during updates.

  • ensure that database tables are created using the Schema API.

  • create tables: hook_schema and .install files to manage a module's tables for the Schema API to manage.

  • update the module using hook_update_N.

  • enable the module, block, troubleshoot, and clear cache to improve the performance.

  • retrieve the configuration setting from $form_state and save it into a variable to test the data.

  • enable the module again and visit the configuration page to check how the validation works on errors.

HTMLPanda will not

  • include the closing tag as it may cause strange runtime issues on certain server setups.

  • include a LICENSE.txt (or similar) file.

  • install the modules using project dependencies in the previous versions.

Security

We understand the importance of data security, thus we follow the unique and the most preferred security approach to keep a website safe.

HTMLPanda will

  • check that the admin passwords are highly-secured.

  • upgrade Drupal Core and Contrib modules to the latest version.

  • turn off on-screen error reporting at admin/settings/error-reporting.

  • verify what permissions anonymous and authenticated users have been given on the permissions page.

  • verify that account creation settings are as intended on the ‘User Settings’ page.

  • check Reports > Status report and make sure there are no warnings or errors.

  • protect the forms against spams and attacks.

  • check what kind of forms are anonymous and authenticated users able to access the site.

  • check the enabling of CAPTCHA, reCAPTCHA, or an anti-spam service such as Mollom.

  • verify that the site email address in /admin/settings/site-information is not a test address.

  • verify the email addresses in modules that send notifications, and also verify the text of email messages the site generates.

  • ensure all relevant users are set up with correct permissions.

  • check new user registering permissions under User Settings (i.e. do new users need admin approval or not).

  • check placeholder images and copy and remove where required.

  • clear all test content or users if there is any.

  • check if one of the domain redirect options is enabled in the .htaccess file. Either redirect URLs without www. or vice versa.

  • update API keys, such as Mollom, Twitter, or Google Apps Update API keys.

  • pass the code through coder and ensure that it is getting passed at the maximum sensitivity.

  • configure cron to run correctly after ensuring nothing unwanted happens with cron eg: mails, subscriptions, payments, etc.

  • make sure that regular database backups are being made.

  • check that there are no red flags in Status Report i.e. Check Reports > Recent log entries for errors and warnings, such as missing files or URLs.

Performance

We employ the ideal Drupal development standards to ensure that the website performs flawlessly on all the platforms.

HTMLPanda will

  • reuse one field in more than one content type for the betterment of site performance.

  • always use the cache module (memcache, varnish) for better performance if the client has dedicated server space.

  • check whether content migration is completed or not, if we ensure to complete it for the better performing site.

  • make sure all static content pages like FAQs, About Us, etc. are updated so as to not affect the site’s performance.

  • Make sure to block caching by following this - Go to Site Configuration > Performance, turn on page + block caching and CSS + Javascript aggregation.

  • ensure to switch to caching mode Normal (Site Configuration > Performance).

  • enable HTML caching for anonymous users.

  • install and enable advanced aggregation module.

HTMLPanda will not

  • allow unnecessary modules, such as Devel.

  • include PNG images when there is no transparency required.

  • include CSS which is not used at all on the website, because it affects website performance. For example:- Firefox provides "dust me" addon and "chrome" browser use "CSS AUDIT" technique for this.

SEO

Our Drupal development standards approach the best SEO practices and give a responsive and fully-functional website.

HTMLPanda will

  • always use semantic tags if overriding tpl file which helps to get good ranking over search engines.

  • index the site for search at search settings and test.

  • check that all web pages have unique titles using the Page Title module.

  • check whether XML Sitemap and Google News Sitemap are configured properly.

  • check if the redirect module is enabled and configured.

  • check if the global redirect module is enabled and configured.

  • check that .htaccess redirect to site with/without www.

  • check that the homepage title includes a slogan, and is descriptive for the function of the site.

  • check if Meta Tags are filled with descriptive information.

  • check that OG tags are filled correctly and with descriptive information.

  • check if the site's information appears well when shared on Facebook.

  • check if Path aliases patterns are meaningful.

  • check if Google Analytics is enabled and configured properly.

  • check if the Page Title module is enabled and configured appropriately.

  • check if site verification is enabled and configured properly.

  • check if the Search 404 module is enabled and configured correctly.

Testing

We ensure our optimal testing process is meeting the latest development standards to make a website completely flawless.

HTMLPanda will

  • enable the unit test case approach that includes functions, methods, and classes.

  • enable the Kernel tests that are integrated tests, tested on components.

  • test Drupal development by using a browser and JavaScript tests which are often called System or Functional testing because it tests on the complete system.

  • test the Drupal development using PHPUnit in Drupal 8.