Extend and customize Drupal functionality with contributed modules. If a module doesn't quite do what you want it to do, if you find a bug or have a suggestion, then join forces and help the module maintainer. Or, share your own by starting a new module.
This module allows user to create Microsoft Word ( in .docx format file) by creating a Microsoft Word template file with Mail merge fields serve as data placeholders and Drupal node as data source.
Important: When insert merge field to your template file you must name for merge field match name of the field of the content type that you wish use its value as data source for this merge field.
- Support multi template for one content type
- Suppport barcode field (see barcode module ): insert image which generated by barcode into Word file
- Ability add line break to Word file for multi value field
- Flexible permission configuration for each template and content type
- This module requires ZipArchive class ( see how to enable Zip library if you see error : ZipArchive Class Doesn't Exist )
Configuration : see README.txt
This project adds in support for the meta name="revised" meta tag.
The project plugs into the existing Meta Tags module and needs to be placed within the meta tags module directory (probably /sites/all/modules/metatag/ in most installations).
Once installed, you will find a "Revised" option within the meta tags global preferences and also on each node's create page.
Has been tested, but could do with more people have a go with it.
About the Parent Child Menu module
The Parent Child Menu module is a simple way to create hierarchical menus on a site. Go to the settings page and include one or more content types. These content types will then have an extra field in which you can enter the name of a parent page.
A block is provided which can display a page's parent, siblings, and/or children. Go to the blocks configuration page to enable the block. The block will appear on any page which is either a parent or a child of another page or is both.
This module also automatically creates a site map from these pages at parentchildmenu/sitemap.
This module depends on the CCK module, and specifically the node reference module contained within this.
This module has been built for Drupal 6.
Provides Unit test to Drupal Modules unsing PHPUnit. This modules provides a custom
runner to run PHPUnit test in Drupal. Also include some features to mock functions using the test_helper extension created
by Sebastian Bergman.
Actually is tested in Drupal 6 only, we will include support for Drupal 7 also in the future.
Previous to the module instalation you need to have installed PHPUnit, Xdebug and Test_Helpers
In order to install PHPUnit do the following steps
pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear channel-discover pear.symfony-project.com
pear upgrade PEAR
pear install phpunit/PHPUnit
Install Xdebug in Debian (or debians likes).
apt-get install php5-xdebug
Install Test Helpers
pecl install phpunit/test_helpers
At the end include the extension in your php.ini
Test if the extension was loaded
$php --info|grep "test_helpers support"
test_helpers support => enabled
Once you have all that installed you can proceed with the instalation of this module as
any drupal module.
Copy the module in some reacheable location by your drupal site.
drush en phpunit2 -y
To take integration between Drupal-based websites and IRC communicaton further than Bot and its related modules allow, we need to (reliably) match site users' names with their IRC nicks. This module (when/if it's written) is going to make an attempt at this.
This is very much a sandbox module, but will (hopefully) go on to provide path-based metatag management for the metatag module.
Currently it's largely a re-named version of the Beanstag sandbox. As such, it uses its own database table and has no integration with metatag module. I hope to switch that out to use the metatag module api instead, at which point this becomes it's own thing and not just a renamed Beanstag
An attempt to add helper functions, depedencies, and modularity to frontend Drupal code.
Adds the following function (backend):
- drupal_add_js_dependency(stack, name) - ensures a dependency is in effect before pages load to sidestep race conditions.
Adds the following function sets (frontend):
- Drupal.modules.init_dependencies() - initialises all dependencies that were present in Drupal.settings on load.
- Drupal.modules.init_dependency(stack, fallback = true) - create a dependency stack, optionally making it resolve after page load. May switch to a timeout in future.
- Drupal.modules.add_dependency(stack, name) - adds a dependency to a dependency stack, which must be marked as resolved before the stack marks as resolved
- Drupal.modules.resolve_dependencyname - resolves a named dependency on all stacks.
- Drupal.modules.dependency_status(stack) - checks the status of a dependency stack
- Drupal.modules.get_dependants(name) - lists stacks that depend on the named module.
Hook handling functions
PROJECT: Enhancing Drupal's Scheduler Contributed Module.
You may already know about the contributed Drupal 6.x and 7.x module named Scheduler: http://drupal.org/project/scheduler
The Scheduler contributed Drupal module is quite useful and often implemented: http://drupal.org/project/usage/scheduler
In a standard web publishing workflow, an audit trail regarding when nodes have been published is a staple.
LEGACY: Publish date was simply not recorded at all in Drupal core.
Created date is helpful, but approvals and publishing controls / audits are lacking.
CURRENTLY: The Scheduler module installs 'scheduler' table with three fields (nid, publish_on, unpublish_on) for scheduling auto publishing on given future date.
By enabling these two date fields (publish_on, unpublish_on) on the create/edit form for any given content type, scheduler provides us a way to 'schedule' publishing in the future for one single time window.
A cron job runs nightly that checks current date against publish_on and unpublish_on dates and automatically selects/deselects the publish checkbox when appropriate.
Maintainers for Scheduler Module
=> Eric Schaefer - 130 commits - last: 34 weeks ago, first: 4 years ago
=> skiminki - 10 commits - last: 4 years ago, first: 4 years ago
=> AjK - 43 commits - last: 4 years ago, first: 5 years ago
This module supports migrating Joomla site with Migrate module.
Development branch name (7.x-2.x) follow the Migrate module branch name.
This module does exactly one thing; it exposes an API call that leverages the existing views API to pass arguments.
This module just slightly modifies that existing function views_get_view_result() to accept arguments programatically from any variable. It's called like so:
get_view_results_with_arguments($name, $display_id = NULL, $args);
$name is the machine name of the view and
$display_id is the machine name of the display and
$args is an array containing all the arguments.
So say for instance you had a view called "recent_articles" with just one display called "master". Say you wanted to get the results of this view, and filter down contextually based on the taxonomy terms applied, you might say:
$related_articles = get_view_results_with_arguments('recent_articles', 'master', $terms);
Of course that's a simple example accomplished rather easily with Views core, but it's as flexible as Views itself so you can use it to pass any argument. For instance, I'm using this currently in conjunction with Prev/Next API to find the title of the next-most-recent node which shares a node reference
This is a DRUSH command that makes it easy for you to enable/disable modules, set permissions, and set variables depending on your current environment. Basically, this solves the problem of "I want devel enabled on DEV but not on PROD."
- Install the environment.drush.inc file in your sites/all/drush folder
- Add something like the following to your sites/all/drush/drushrc.php file
// Add this to your drushrc file and modify as needed.
// The option key MUST be enviroments.
$options['environments'] = array(
// #key = The enviroment name.
'development' => array(
// The list of modules to enabled (1) or disable (0).
'modules' => array(
'views_ui' => 1,
'context_ui' => 1,
'devel' => 1,
'theme_developer' => 0,
// The list of variables to configure.
'settings' => array(
'preprocess_css' => 0,
'preprocess_js' => 0,
// The list of roles to grant (1) and revoke (0) on a per role basis.
'permissions' => array(
'Administrator' => array (
'administer features' => 1,
'administer permissions' => 1,
'anonymous user' => array (
'administer features' => 0,
'administer permissions' => 0,
This section will describe:
Installation of the module Sphinx Advanced;
The basic concept of the module;
A use of module's resources.
To use the module (the generation of configuration files for the Sphinx) Sphinx Advanced it is necessary to set up Drush (http://drupal.org/project/drush).
Sphinx Advanced administration page
After installing and activating the Sphinx Advanced in order to access the basic configuration module click Site Configuration -> Sphinx Advanced settings -> Sphinx settings (or click on the link http://example.com/admin/settings/sphinx_advanced).
Enter the address of the server (Default server) and port (Default port) to connect to your server Sphinx (Sphinx server).
To create an index and a use of the module follow the instructions.
HowTo: Add an index
Adding an index consists of two phases: the description of the index in the module and the generation of Sphinx Advanced configuration file for the Sphinx.
Description of the index in the module Sphinx Advanced
Go to the control module page (Sphinx Advanced administrative page). Click on the Advanced Indexes and then open Add new index. To fill in all required fields, please refer to the documentation for Sphinx (http://sphinxsearch.com/docs/).
To activate the index, select Enable, to disable the index deselect Enable.
This very module creates a block that contains a very easy to use and sexy horizontal accordion (so that what meant the name :o). In there you can put any text you want or an image.
Even if there are other accordion module out there, Horizontal Accordion is the first one to actually to work horizontally and do not require the views dependency. Fully configurable, the accordion adapts either itself to the tab dimension or the other way around. Plus it comes with 5 themes (for the moment), all very nice !
How does it work ?
- Download the library littleaccordion the you can find on git hub :
- Create a folder called littleaccordion in /sites/all/librairies and put the
content of the git repository
- Activate the module (checkout dependencies : media and libraries)
- Choose the block position
- Add some tabs to the accordion via admin/structure/horizontal_accordion
Oh by the way this is the site where I got the awesome js code : http://nicolahibbert.com/demo/liteAccordion/
What is Orderbox? From the Logixboxes' Orderbox homepage it says:
LogicBoxes' OrderBox is a Customizable and Brandable, multi-lingual, multi-currency, multi-tier platform that provides Billing, Auto-Provisioning, User Management and a comprehensive API for all LogicBoxes Products.
It is a complete Business Process Automation solution or a mini-ERP system to automate your and your Resellers' Web Services Business.
OrderBox allows you and your Reseller network to seamlessly sell all LogicBoxes Products and Services from your own website.
This module is an attempt to integrate some of the functionality of OrderBox into a Drupal site. This can be useful for users who have a Drupal site but also want to run a domain name registration business and a web hosting that uses OrderBox mini-ERP system.
Currently this module consists of:
- Orderbox Login - This will allow your customer to login to their orderbox domain control panel from within your Drupal site, just go to configuration settings page and then activate the block for the OrderBox Login and your customer and sub reseller can start using it.
A feature module providing content types and services to allow the fetcher drush extension to retrieve lists of sites that can be deployed to your local development environment from a central Drupal site. Still under active development.
The names may change and I very well might break stuff.
An experiment in creating SMACSS-style class names for core templates and stylesheets.
This module adds, to core Polls, a principal akin to that implemented by the Pressflow cookie_cache_bypass module to core Polls. The reason to do this is threefold:
- cookie_cache_bypass does not work from forms that put submit functions in form elements (e.g. submit buttons), which the Poll module does;
- it gives us the opportunity to put a much longer cookie lifetime for polls;
- it allows us to recheck the cookie when the poll module determines it should show the results to the current user becasue they have already voted. This way, we can prevent the results from endinf up in the page cache even if the cookie was not sent from the client.
This module sets a cookie with the name NO_CACHE_POLLS when submitting a poll voting or cancel form. Your reverse proxy configuration will likely need to be ammended to allow not just NO_CACHE cookies, but any cookie with a name starting with "NO_CACHE". E.g. for Varnish:
set req.http.Cookie = regsuball(req.http.Cookie, ";(NO_CACHE|SESS[^=]+)=", "; \1=");
set req.http.Cookie = regsuball(req.http.Cookie, ";(NO_CACHE[^=]*|SESS[^=]+)=", "; \1=");
Download this module into your modules folder (using the download link below or CVS)
Head over to the Zoomooz site and grab the zip file of the source code using the Free Download URL in the menu on the right.
Expand the zip file and upload the the following files into the zoomooz subfolder of the project
Head onto your site and enable the module. Please take note of the two required modules (ImageCache and ImageField)
Within ImageCache, configure 2 presets - one for the small "preview" or thumbnail, and another for the larger image to be zoomed in on. For example, the "preview" could be set to Scale the image to 300 wide and the larger image could be set to Scale the image to 900 wide. This would provide a 3x zoom factor
Edit a content type which has an Imagefield and goto the "Display Fields" tab.
Set the display format (one of the drop downs) for the field to Zoomooz:... and chose the appropriate preview -> zoom ImageCache preset names.
Next time you view this image, you should see the small preview and a larger preview popup when you hover your mouse over the image.
A deliberately simple way to invent ndes on the fly in order to refer to them via entityreference.
Just type a title into an entityreference autocomplete field, and if no match is found, a placeholder of that name will be created silently, instead of complaining.
This is a simplification from other create-and-reference solutions as it assumes *no* action on the users part. Of course, it also does not allow the editor to add any *more* detail about the newly created target entity at the time, but if you want that, I endorse references_dialog.module.
This utility co-operates interestingly with feeds.module, as you can import items that refer to other items by name, which will be linked to without intervention.
Convert data loaded into a node by simple paste (or Feeds or data import) into better structured data.
A simple text field may be provided for a list of items to be dropped into
and this tool would be able to convert that list into individual fields
on the same entity.
The original data can optionally be discarded onve converted.
The UI will be for a simple textarea field (eg named people_raw)
to have an additional setting on the field settings page that refers
to the structured data field (eg a multiple textfield 'people')
A separator (eg newline or comma) is defined there.
Running the process (through VBO or similar) would shift the data between those fields.
Failed to find even a utility for copying data from one field to another on d.o.
May be possible with rules but that's heavy for this.
A textarea field on a content type will have extra options shown on the field configuration settings.
Which target field to transfer data into, and what separater to use to do it.
The target field should be something like a textfield with multiple values enabled.
Now you can paste a newline-separated list into a text field, then press the "raw mapping" button, and that raw data in the textarea will be placed into many reows in individual text fields.
name = Taxonomy Mapping
description = Allow a taxonomy term as a placeholder term, reference to another term.
github = http://github.com/kolier/taxonomy_mapping
* taxonomy_mapping field
- Configure in the vocabulary edit form.
- Field bases on Entity Reference.
* Cascading mapping
- Loop to find the final destination.
The module renames attachments and add date of uploading to them, for example, if the file name is example.zip and uploaded on 1st Jan, the uploaded file name will become example_1_jan_2012.zip
This module was originally created for WorkMonk.com
Hyde is a pluggable content generation system, with focus on generating Drupal content to HTML pages. The name comes from a popular similar system, Jekyll.
The time when a browser was just a dumb client and servers had to do all the heavy lifting when it comes to business logic is over. Modern browsers today aims to be application platforms onto which you can run your code, and there are some pretty impressive demonstrations of this in many places today.
Drupal and systems like it are currently operating the old school way: The system handles everything, content administration, the actual rendering of the content, and any other interactive functionality that goes on around it. This is a complicated system, and it relies on several pieces of software to deliver content to a user: We have to have at least a web server, some middle-layer application and a database involved in every request.
Create PURL-based namespaces for URL aliases.
What problem does this module try to solve?
You're developing a website that uses the Persistent URL (PURL) module, possibly in conjunction with the Spaces or Sites modules. PURL creates separate namespaces in your Drupal site, and through modules like Spaces, your website has some nodes/views/pages in some spaces and some content in other spaces.
However, the URL Alias module requires paths to be unique across the entire site. This is a requirement at the schema level, and is enforced in the UI. This means that you can't natively have an "about-us" path point to node/47 in one space, but point to a different node (or view/page/etc.) in another space.
PURL Pathalias attempts to solve this problem by replicating the Path module's functionality, but with PURL namespace awareness. Thus, you can have something like "name1.example.com/about-us" point to node/47, but "name2.example.com/about-us" point to node/48.
Commerce coupon plugin that provides distributed fixed coupons.
The project was written to solve a number of issues, namely:
#1612662: Calculate fixed amount before tax calculation
It is possible that a site has multiple vat rates. For instance in the UK:
- books are taxed at 0%
- dvds are taxed at 20%
For that reason, should you wish to apply tax before VAT (particularly when using a Sales Tax model), the discounting has to be done on a distributed basis to ensure the VAT reported to HMRC/IRS is accurate.
The method follows a similar model to how some SAP instances work.
The module first calculates what percentage of the subtotal your product is, and then applies an appropriate proportion of the fixed coupon.
This module is not ready for production use. I would advise heavy testing and talking to your financial/legal departments before any changes to the way prices are calculated in your organisation.