Drupal

From Things and Stuff Wiki
Revision as of 08:36, 18 July 2020 by Milk (talk | contribs)
Jump to navigation Jump to search


needs refactoring to work with theming

See Building Distros Theming / Aegir

General

  • Drupal dev docs - "Newcomers to Drupal development should read the conceptual information provided in the 'Components of Drupal' section, and then proceed to examine one of the heavily-documented example modules below. The examples are fully-functioning Drupal modules, so you can download them from the contributions repository and alter them as you experiment."



Multisite

Drupal.org

see project page right sidebar links for git, patches pending, etc.


CLI

Composer

composer update 'drupal/*' --with-dependencies
php -d memory_limit=-1 composer require zaporylie/composer-drupal-optimizations

Drush

  • Drush - a command line shell and Unix scripting interface for Drupal. Drush core ships with lots of useful commands for interacting with code like modules/themes/profiles. Similarly, it runs update.php, executes sql queries and DB migrations, and misc utilities like run cron or clear cache. Drush can be extended by 3rd party commandfiles.
composer require drush/drush



Commands

I have dr as an alias for drush.


drush updatedb --no-interaction --yes

drush watchdog:show


drush help
  alll the commands!
drush help --filter
  choose which help category to echo
drush cc all
  clear cache
drush pml
  list installed and enabled modules

drush dl [project]
  download project
drush dl sasson-7.x-3.x-dev
  download sasson dev release
drush updb
  run upgrade.php
drush en [project] -y
  enable project without confirmation
drush dis [project] -y
  disable project

drush pm-uninstall [project]
  remove project from db
drush sql-cli < example.sql
drush php-eval 'echo drush_get_context("DRUSH_DRUPAL_ROOT");'
drush php-eval 'echo drush_locate_root() . "/" . drupal_get_path('theme', 'sasson');'

drush eval 'echo theme_get_setting('sasson_compiler') . "\n" ;'
  otherwise gives trailing issue?
drush vset --yes site_offline_message "This site is being maintained";

drush vset --yes site_offline 1;

In Drupal 7 to simply put the site into maintenance mode:

drush vset --yes maintenance_mode 1;
drush user-login ryan
  displays a one-time login link for the user ryan. 
open `drush user-login ryan`
  open said link in browser
dr uli

Site aliases

Drush uses site alias files to store context data. (Aegir still uses Drush 4)

drush help site-alias

Copy to ~/.drush, rename aliases.drushrc.php or further.

drush ev 'print_r(array_keys(drush_sitealias_get_record("@server_master")))'
drush ev '$a = drush_sitealias_get_record("@gk.dev"); print_r($a["path-aliases"]);'
Deployment

To sort with Aegir#Remote

drush help rsync
drush help sql-sync

Drupal Console

Site provision

See Building, Aegir, Profiles

Two make files; mysite.build and mysite.make.

mysite.build is brief:

core = 7.x
api = 2
projects[drupal][type] = "core"
; Our distribution
projects[mysite][type] = "profile"
projects[mysite][download][type] = "git"
projects[mysite][download][url] = "git@gitserver.com:mysite.git"
projects[mysite][download][branch] = "develop"

mysite.make contains the list of modules, themes, and libraries to download and add to the site.

Debugging

Troubleshooting

$config['system.logging']['error_level'] = 'verbose';
  # in sites/default/settings/php


Modules

dpm()


Admin

https://www.drupal.org/project/admin_toolbar - better menu system all-round




Content




Module Admin



  • https://github.com/makinacorpus/drupal_audit - This shell script allows a quick "audit" of a website, giving some details about the configuration: drush status, hacked status (using Hacked module), modules & themes status, cache status (using Cacheaudit module), database volumetry indications, phpinfo() ...

Theme


  • https://www.drupal.org/project/bootstrap_barrio - a Drupal 8/9 - Bootstrap 4 Base Theme. Drupal markup is completely overwrite as standard Bootstrap 4 markup using from roots twig templates referencing only to Bootstrap CSS, and little custom CSS. Barrio is Flex based for whatever is not covered by Bootstrap.
  • https://www.drupal.org/project/bootstrap_sass - This is a Barrio subtheme that simplifies integrating Bootstrap 4 SASS with Drupal.This subtheme overrides almost every CSS from Drupal and replaces where posible Bootstrap variables in order to generate from roots a new set of CSS files.


Coding

Basics

$variable_name

Modules


  • http://drupal.org/project/module_builder - A module which auto-generates a skeleton or "scaffolding" for a module, along with hints on how to fill them in. Useful for newbie developers to learn how Drupal code works, and seasoned developers who are too lazy to look up what arguments a function has to take.


  • http://drupal.org/project/coder - Coder checks your Drupal code against coding standards and other best practices. It can also fix coding standard violations for you with the phpcbf command from PHP_CodeSniffer, see the installation instructions and usage examples. Those checks apply to all versions of Drupal, so you can use Coder 8.x-3.x to check Drupal 7 code.

Patches

patch -p1 < path/file.patch

or

git apply path/file.patch

Hooks

"Drupal's module system is based on the concept of "hooks". A hook is a PHP function that is named foo_bar(), where "foo" is the name of the module (whose filename is thus foo.module) and "bar" is the name of the hook. Each hook has a defined set of parameters and a specified result type.

"To extend Drupal, a module need simply implement a hook. When Drupal wishes to allow intervention from modules, it determines which modules implement a hook and calls that hook in all enabled modules that implement it."

Menu system (path)

Content

Entities

An entity can be a kind of content stack. An entity base table is tied to fields using bundles. Entity types include node, comment, taxonomy term, user profile, organic group, etc. Entity types can allow bundling or not (creating types of node vs. users, though see the Profile 2 module). Fields are used to store and display various data types, and can be reused across bundles and entities.

(that was about right the last time I dived in)

hook_entity_info - "Inform the base system and the Field API about one or more entity types."


Ctools

Chaos tool suite (ctools) suite is primarily a set of APIs and tools to improve the developer experience. It also contains a module called the Page Manager whose job is to manage pages. In particular it manages panel pages, but as it grows it will be able to manage far more than just Panels.

For the moment, it includes the following tools:

  • Plugins -- tools to make it easy for modules to let other modules implement plugins from .inc files.
  • Exportables -- tools to make it easier for modules to have objects that live in database or live in code, such as 'default views'.
  • AJAX responder -- tools to make it easier for the server to handle AJAX requests and tell the client what to do with them.
  • Form tools -- tools to make it easier for forms to deal with AJAX.
  • Object caching -- tool to make it easier to edit an object across multiple page requests and cache the editing work.
  • Contexts -- the notion of wrapping objects in a unified wrapper and providing an API to create and accept these contexts as input.
  • Modal dialog -- tool to make it simple to put a form in a modal dialog.
  • Dependent -- a simple form widget to make form items appear and disappear based upon the selections in another item.
  • Content -- pluggable content types used as panes in Panels and other modules like Dashboard.
  • Form wizard -- an API to make multi-step forms much easier.
  • CSS tools -- tools to cache and sanitize CSS easily to make user-input CSS safe.
  • Ctools Plugin Stub is a Drush plugin that can help you generate code stub files for ctools plugins. I wrote this plugin after having consistently messed up names of hook implementations in plugins over a long period. Plugin Stub does not write actual code that *does* stuff for you, but it sets you up so that all you have to do to get started is to fill in the capitalized parts of the generated file and start writing code that *does* stuff.

Menus

JavaScript

Video

Adding a JS file

In theme .info;

scripts[] = scriptfile.js

In template.php;

drupal_add_js()
  first paramater path
  second paramater (goes through as 'type: ' array item, defaults to file)
    file, setting, inline, external
    default: preprocess: true, everypage: true, 
    weight:
$element['#attached']['js']

Drupal JS API and Behaviours

Drupal has an API for passing information between PHP and JS. Drupal.js sets up Drupal namespace.

Render Array

PHP sent by JSON to change content.

jQuery

The .ready() function also has the ability to alias the jQuery object:

jQuery(document).ready(function($) {
  // Code that uses jQuery's $ can follow here.
});

AJAX

JSON


wip; still merging in from Modules and rearranging

General


  • https://www.drupal.org/project/libraries - The common denominator for all Drupal modules/profiles/themes that integrate with external libraries.This module introduces a common repository for libraries in sites/all/libraries resp. sites/<domain>/libraries for contributed modules.


  • http://drupal.org/project/features - The features module enables the capture and management of features in Drupal. A feature is a collection of Drupal entities which taken together satisfy a certain use-case. Features provides a UI and API for taking different site building components from modules with exportables and bundling them together in a single feature module. A feature module is like any other Drupal module except that it contains additional information in its info file so that configuration can be checked, updated, or reverted programmatically.


Admin

  • https://www.drupal.org/project/module_filter - quickly find the module you are looking for without having to rely on the browsers search feature which more times than not shows you the module name in the 'Required by' or 'Depends on' sections of the various modules or even some other location on the page like a menu item.
  • https://www.drupal.org/project/masquerade - allows site administrators (or anyone with enough permissions) to switch users and surf the site as that user (no password required). That person can switch back to their own user account at any time.


  • https://www.drupal.org/project/total_control - Several overview panes are included for site stats and quick reference. Several administration panes are provided with quick links to content types, menus, taxonomy, and other scattered locations of important Drupal site administration. Several views panes are also provided as well as full-page comprehensive versions of the views with bulk operations. Each views panel pane is customizable via it's pane settings, or override the default views provided to suit your own needs.



Workflow

Editing of submitted unpublished nodes, updating coordinator contact info, etc.


  • https://www.drupal.org/project/maestro - This is not a just a clever saying. It's true. With Maestro, the method to automate your process starts with our visual workflow editor with which you drag, drop and connect your workflow steps together. The maestro workflow editor can be used by business users to map out their business process.


  • https://www.drupal.org/project/override_node_options - The Override Node Options module allows permissions to be set to each field within the Authoring information and Publishing options field sets on the node form. It also allows selected field sets to be set as collapsed and / or collapsible.


  • http://drupal.org/project/rules - The Rules module allows site administrators to define conditionally executed actions based on occurring events (known as reactive or ECA rules).



Antispam

E-mail

Layout

Blocks




Views

  • http://drupal.org/project/semanticviews - This Views plugin makes unformatted styles, field row styles and other output more readily configurable without needing to override template files. Instead of overriding row style templates for views where you want to specify different HTML elements (tags) and class attributes, you can specify these inside the Views UI and avoid overriding templates for each view.



  • http://drupal.org/project/views_slideshow - Views Slideshow can be used to create a slideshow of any content (not just images) that can appear in a View. Powered by jQuery, it is heavily customizable: you may choose slideshow settings for each View you create.











Context

  • http://drupal.org/project/context - Context allows you to manage contextual conditions and reactions for different portions of your site. You can think of each context as representing a "section" of your site. For each context, you can choose the conditions that trigger this context to be active and choose different aspects of Drupal that should react to this active context.


Display Suite

  • http://drupal.org/project/ds - Display Suite allows you to take full control over how your content is displayed using a drag and drop interface. Arrange your nodes, views, comments, user data etc. the way you want without having to work your way through dozens of template files. A predefined list of layouts is available for even more drag and drop fun!

Articles

Videos

Panels


  • http://drupal.org/project/panels_everywhere - Panels Everywhere is an advanced method to completely do away with Drupal's restrictive blocks system and instead use the much more freeing Panels Layout system to control how your pages look. Panels Everywhere modifies the page as it is being rendered to 'wrap' the content in a display and can even take over your page theme to do away with the need for a page.tpl.php.


Nodequeue

Manual list of content items, can be used in Views.

Path

  • http://drupal.org/project/pathauto - The Pathauto module automatically generates URL/path aliases for various kinds of content (nodes, taxonomy terms, users) without requiring the user to manually specify the path alias. This allows you to have URL aliases like /category/my-node-title instead of /node/123. The aliases are based upon a "pattern" system that uses tokens which the administrator can change.
    • http://drupal.org/project/subpathauto - The Drupal Path module matches only full URLs when creating SEO-friendly aliases. This module extends that behavior by also matching known sub-paths and replacing them with their respective alias.


  • http://drupal.org/project/pathologic - an input filter which can correct paths in links and images in your Drupal content in situations which would otherwise cause them to “break;” for example, if the URL of the site changes, or the content was moved to a different server. Pathologic can also solve the problem of missing images and broken links in your site’s RSS feeds.


  • http://drupal.org/project/redirect - Provides the ability to create manual redirects and maintain a canonical URL for all content, redirecting all other requests to that path.


  • http://drupal.org/project/empty_page - The Empty Page module is a simple empty page solution. It provides an interface that assists in managing "empty" menu callbacks, mostly used for pages that only consist of blocks.


  • http://drupal.org/project/xmlsitemap - The XML sitemap module creates a sitemap that conforms to the sitemaps.org specification. This helps search engines to more intelligently crawl a website and keep their results up to date. The sitemap created by the module can be automatically submitted to Ask, Google, Bing (formerly Windows Live Search), and Yahoo! search engines. The module also comes with several submodules that can add sitemap links for content, menu items, taxonomy terms, and user profiles.


Menus




Breadcrumbs

Title

Content

  • http://drupal.org/project/linkit - Linkit provides an easy interface for internal and external linking with wysiwyg editors by using an autocomplete field. Linkit has by default support for nodes, users, taxonomy terms, files, comments and basic support for all types of entities that defines a canonical link template.


  • http://drupal.org/project/content_lock - Block concurrent editing: When a user is editing a node, any other user that attempts to edit the same node will be blocked from doing so, and notified that the content is already being edited.


  • http://drupal.org/project/scheduler - Scheduler gives content editors the ability to schedule nodes to be published and unpublished at specified dates and times in the future.
  • http://drupal.org/project/diff - This module adds a tab for sufficiently permissioned users. The tab shows all revisions like standard Drupal but it also allows pretty viewing of all added/changed/deleted words between revisions.


  • http://drupal.org/project/mediawiki_api - This module provides an input filter which allows the conversion of content marked up using MediaWiki syntax to html for display on your drupal site, by using the "parse" feature of the MediaWiki API.



  • https://drupal.org/project/markdown - Provides Markdown filter integration for Drupal input formats. The Markdown syntax is designed to co-exist with HTML, so you can set up input formats with both HTML and Markdown support. It is also meant to be as human-readable as possible when left as "source".


Entities



Fields

  • http://drupal.org/project/fences - Fences is a an easy-to-use tool to specify an HTML element for each field. This element choice will propagate everywhere the field is used, such as teasers, RSS feeds and Views. You don't have to keep re-configuring the same HTML element over and over again every time you display the field.



  • http://drupal.org/project/double_field - Double Field is a small module written to provide extensions to Drupal's core Fields. By this module you can split your fields up into two separate parts.




  • https://www.drupal.org/project/paragraphs - Instead of putting all their content in one WYSIWYG body field including images and videos, end-users can now choose on-the-fly between pre-defined Paragraph Types independent from one another. Paragraph Types can be anything you want from a simple text block or image to a complex and configurable slideshow.
  • https://www.drupal.org/project/entity_reference_revisions - Adds a Entity Reference field type with revision support.It's based on the core Entity Reference module but allows you to reference a specific entity revision. This is useful for modules like Paragraphs and Inline Entity Form.


  • http://drupal.org/project/field_group - Fieldgroup will, as the name implies, group fields together. All fieldable entities will have the possibility to add groups to wrap their fields together. Fieldgroup comes with default HTML wrappers like vertical tabs, horizontal tabs, accordions, fieldsets or div wrappers.


  • http://drupal.org/project/formatter_field - The formatter field module provides a mechanism for specifying a formatter and formatter settings to be used for displaying a field, on a per-entity basis. By default, Drupal provides formatters and settings per entity bundle, but in certain situations it is necessary to choose the formatter at the entity level.


  • http://drupal.org/project/field_slideshow - Provides a Slideshow formatter for Image fields, using JQuery Cycle plugin. Compared to Views slideshows, building the slideshow from multiple nodes, this module builds it from a single node, with a multi-valued Image/Media/Field Collection field.

Bundles

Forms

  • http://drupal.org/project/webform - Webform is the module for making forms and surveys in Drupal. After a submission customizable e-mails can be sent to administrators and/or submitters. Results can be exported into Excel or other spreadsheet applications. Webform also provides some basic statistical review and has an extensive API for expanding its features.


  • http://drupal.org/project/formblock - Enables the presentation of user registration, site wide contact, or node creation forms in blocks. This is particularly useful for including forms on panels.


  • http://drupal.org/project/formtips - Form Tips module uses JavaScript to move form description/help text to tooltips. It helps to reduce form clutter by removing form descriptions from the page and only displaying them when needed.


  • http://drupal.org/project/clientside_validation - This module adds clientside validation (aka "Ajax form validation") for all forms and webforms using jquery.validate. The included jquery.validate.js file is patched because we needed to be able to hide empty messages.

Aggregation



  • http://drupal.org/project/feeds_tamper - Feeds Tamper provides a small plugin architecture for Feeds to modify data before it gets saved. Several plugins are available by default and are described in the examples section below. Additional plugins can be added in separate modules or through the issue queue.

GUI

  • http://drupal.org/project/fancy_login - Fancy Login adds JavaScript based, lightbox-style login functionality to your site. When the user clicks on any link that links to /user/login, they screen dims and a login box is created in the center of the screen.


  • http://drupal.org/project/jeditable - The jEditable module provides integration between Drupal's CCK module and the excellent jQuery plugin, jEditable. It is implemented as a CCK formatter, which makes inline editing possible through regular node displays, Panels, Views, or anywhere else you can place a CCK field.

Typography


Comments

Javascript

Adverts

  • http://drupal.org/project/openx - Show ads from a OpenX (formerly OpenAds) server. OpenX is a open source online program that will allow you to catalog and display advertisers, just like Google, Yahoo or Microsoft.

Internationalisation


Media


  • http://drupal.org/project/image_resize_filter - This filter makes it easy to resize images, especially when combined with a WYSIWYG editor such as tinyMCE, CKeditor etc. Users never have to worry about scaling image sizes again, just insert an image and set it's height and width properties in HTML (this is done automatically by WYSIWYG editors) and the image is resized on output to match the HTML.



  • http://drupal.org/project/insert - Insert is a utility that makes inserting images and links to files into the body field and other WYSIWYG editors or text areas much easier by adding a simple JavaScript-based button and optional controls to file and image fields. Images may be inserted using any image style preset. Insert may also be interfaced to by other modules for inserting custom content.


Adaptive/responsive

Retina

Flickr

  • http://drupal.org/project/flickr - Access photos on Flickr's site via their API. The module provides a filter for inserting photos and photosets and allows the creation of blocks for rendering a user's recent photos and photosets. The filter format is: [flickr-photo:id=230452326,size=s] and [flickr-photoset:id=72157594262419167,size=m]
    • doesn't use image styles
  • http://drupal.org/project/media_flickr - The Media: Flickr project currently offers Flickr Photoset capabilities to the Embedded Media Field module, upon which this module is dependent. To use it, enable the Embedded Video Field module, and add a Third Party Video field to a content type.

Scald

Audio

  • http://drupal.org/project/audio - allows users with proper permissions to upload audio files into drupal. Each audio item is created as its own individual audio node. The audio module uses the getID3 library to read and write ID3 meta-tag information to and from the audio file. Pages that display the most recent audio files submitted to the site, as well as the most recent audio files uploaded by individual users are also generated. Feeds from these pages are 'podcast friendly'. The module also comes with the handy XSPF Flash player that is (by default) embedded in your site.
  • http://drupal.org/project/filefield_audio_insert - extends the functionality of the cck filefield module. It allows you to insert flash playable audio into textareas/body's of nodes. It works in conjunction with the mp3player module for audio playback.
  • http://drupal.org/project/debut_audio - A baseline embedded audio feature.Audio content type with embedded audio field supporting multiple external providers. Audio view with page listing, recent audio files block, and RSS feed. etc.
  • http://drupal.org/project/audiofield - allows you to upload audio files and automatically displays them in a selected audio player. Currently it supports 6 players and it provides API for easy addition of new players.
  • http://drupal.org/project/audioconverter - converts audio files from supported CCK fields (AudioField, AudioRecorderField) to the mp3 format using FFMPEG. Depending on the need, files can be converted on cron or whenever new audio content is submitted.
  • http://drupal.org/project/jplayer - provides a wrapper around the jPlayer JavaScript library. This library provides an HTML5-based player, that uses a Flash fallback for browsers that do not yet support it. This module provides a default presentation for the player, as well as integration with CCK file fields and a display style for Views.
  • http://drupal.org/project/mp3player - WordPress Audio Player to Drupal. Easily enable the MP3 Player on a CCK FileField. Setup multiple players each with their own settings and appearance. FileField and Views support.

Forms

Webform

Events

  • Date contains both a flexible date/time field type Date field and a Date API that other modules can use.
  • Calendar will display any Views date field in calendar formats, including CCK date fields, node created or updated dates, etc. Switch between year, month, and day views. Back and next navigation is provided for all views. Lots of the Calendar functionality comes from the Date module, so any time you update the Calendar module you should be sure you also update to the latest version of the Date module at the same time.
  • partial_date provides date and time fields that allows any individual component to be left blank, while still providing a sortable listing of the fields. Useful if you need to handle dates like "8:46 a.m Sep 11, 2001 EST", "12 noon 25 May, Early 16th Century" or "May 20000 BC" in the one field.
  • Scheduler allows nodes to be published and unpublished on specified dates.
  • Signup allows users to sign up (or register, as in register for a class) for nodes of any type. Includes options for sending a notification email to a selected email address upon a new user signup (good for notifying event coordinators, etc.) and a confirmation email to users who sign up.

Timeline

Tracker

Mapping

Spreadsheets

Books

Shortcodes

Files

Extras

Search

Notification

  • Messaging allows message sending in a channel independent way. It will provide a common API for message composition and sending while allowing plug-ins for multiple messaging methods.
  • Notifications is a complete Subscriptions/Notifications Framework aiming at extendability and scalability. It allows any number of plug-ins defining new event types or subscription types or a different user interface.
    • anon d6 only
  • Notify allows users to subscribe to periodic emails which include all new or revised content and/or comments much like the daily news letters sent by some websites. Even if this feature is not configured for normal site users, it can be a useful feature for an administrator of a site to receive notification of new content submissions and comment posts.
  • Subscriptions enables users to subscribe to be notified of changes to nodes or taxonomies, such as new comments in specific forums, or additions to some category of blog. Once enabled, all nodes will have an additional link that allows the user to change their subscriptions. Users have tab on their user screen to manage their own subscriptions. Users can also set an auto-subscribe function which notifies the user if anyone comments on posts they have made. Admins can turn this on by default.

Simplenews

Creating

WYSIWYG

See also WYSIWYG

Editing

Inplace / Inline

Embedding

External

Syndication

Semantic

External sources

Graphing

Attention

Interface

Booking

Taxonomy

  • http://drupal.org/project/content_taxonomy - D6, This module provides a CCK field type for referencing taxonomy terms. The fields are independent from vocabulary settings. For every field you can specify settings. D7,

to sort;

  • http://drupal.org/project/textmining_api - simple pluggable framework module that handle node/taxonomy terms/text fields association process for tagging/metadata services with submodules providing OpenCalais and Tagthe.net support

Token

Users

  • http://drupal.org/project/userprotect - This module allows fine-grained access control of user administrators, by providing various editing protection for users. The protections can be specific to a user, or applied to all users in a role.

Anti-spam

  • http://drupal.org/project/spamicide - The purpose of Spamicide is to prevent spam submission to any form on your Drupal web site. Spamicide adds an input field to each form then hides it with css, when spam bots fill in the field the form is discarded. The field, and matching .css file, are named in such a way as to not let on that it is a spam defeating device, and can be set by admins to almost anything they like(machine readable please). If logging is set, the log will show if and when a particular form has been compromised, and the admin can change the form's field name (and corresponding .css file) to something else.


  • https://www.drupal.org/project/captcha_free - Try this module especially to eliminate those robot user registrations and having to go in and delete all the bogus users. All without having to use the annoying captcha.

CAPTCHA

  • http://drupal.org/project/captcha - A CAPTCHA is a challenge-response test most often placed within web forms to determine whether the user is human. The purpose of CAPTCHA is to block form submissions by spambots, which are automated scripts that post spam content everywhere they can. The CAPTCHA module provides this feature to virtually any user facing web form on a Drupal site.


Honeybots

  • http://drupal.org/project/honeypot - Honeypot uses both the honeypot and timestamp methods of deterring spam bots from completing forms on your Drupal site (read more here). These methods are effective against many spam bots, and are not as intrusive as CAPTCHAs or other methods which punish the user [YouTube].
  • https://www.drupal.org/project/httpbl - can prevent email address harvesters and comment spammers from visiting your site by using a centralized DNS blacklist. It requires a free Project Honey Pot membership. This module provides efficient blacklist lookups and blocks malicious visitors effectively.


Login

  • https://www.drupal.org/project/login_destination - The Login Destination module allows you to customize the destination that a user is redirected to after logging in, registering to the site (7.x), using a one-time login link or logging out (7.x). The destination can be an internal page or an external URL. It is possible to specify certain conditions like referring pages or user roles and make the destination depend upon them. You may use PHP snippets to provide custom conditions and destinations. It is also possible to keep users on the currently visited page after logging in or out.

Cookies

  • https://www.drupal.org/project/eu_cookie_compliance - This module addresses the General Data Protection Regulation (GDPR) that came into effect 25th May 2018, and the EU Directive on Privacy and Electronic Communications from 2012. It provides a GDPR cookie banner where you can gather consent from the user when the website stores cookies on their computer or otherwise handles their personal information.

Passwords

  • https://www.drupal.org/project/force_password_change - This module allows administrators to force users, by role, individual user, or newly created user, to change their password on their next page load or login, and/or expire their passwords after a period of time.

Social

  • http://drupal.org/project/flag - Flag is a flexible flagging system that is completely customizable by the administrator. Using this module, the site administrator can provide any number of flags for nodes, comments, users, and any other type of entity. Some possibilities include bookmarks, marking important, friends, or flag as offensive. With extensive views integration, you can create custom lists of popular content or keep tabs on important content.



  • http://drupal.org/project/message - The Message module is the core of the message stack. It enables logging and displaying system events in a number of different use cases. Events that are recorded over time are sometimes call activity streams. Exportable messages subtypes can be created for different use cases with custom fields and display (view) modes.
  • http://drupal.org/project/messaging


Sharing

  • http://drupal.org/project/forward - Adds a "forward this page" link to each node. This module allows users to email a specific node or other entity on your site to a friend. You can customize the link text and icon and choose the view modes on which the link appears. You can also customize the email template to match the rest of your site. The module includes a report on which pages are forwarded the most and a log of all forwarding activity.

Eye candy

Countdown

External links

Aggregation

Feeds

Views owner node title - http://drupal.org/node/1257170

OpenCalais

E-commerce

See also Drupal Distros#E-commerce

Payment

  • Payment is a general payment platform which allows other modules to use any of the payment methods that plug into Payment. With Payment we only need one one Paypal, one credit card and one iDEAL module to use with every single webshop or payment form that you want (applies to any payment method that works with Payment). This shortens development time and improves support, because only one instead of three Paypal modules need to be maintained, and simplifies UX, because all payment (method) information is now located in one place.

Payment method controller modules;

Other

Performance

Boost

  • Boost provides static page caching for Drupal enabling a very significant performance and scalability boost for sites that receive mostly anonymous traffic. For shared hosting this is your best option in terms of improving performance. On dedicated servers, you may want to consider Varnish instead. Apache is fully supported, with Nginx, Lighttpd and IIS 7 semi-supported. Boost will cache & gzip compress html, xml, ajax, css, & javascript. Boosts cache expiration logic is very advanced; it's fairly simple to have different cache lifetimes for different parts of your site. The built in crawler makes sure expired content is quickly regenerated for fast page loading.

CloudFlair

Other


SEO

Analytics

Humour

Project

  • http://drupal.org/project/merci - can extend any content type into a list of unique reservable items (like studios) or buckets of interchangeable items (like DV cameras). We followed the approach used by Organic Groups, Feed API, and Scheduler and added MERCI's configuration to the Edit tab of those content types.