SlideShare une entreprise Scribd logo
1  sur  9
Drupal Commerce Nuts and Bolts Julien DUBOIS, October 2011 @Artusamak
Evolving from Ubercart to Drupal Commerce What can you  do  with it? Ubercart offers a wide  feature set , but operating outside of the core feature set is difficult at best. “ Application”  mindset focusing on the modules’  performance out-of-the-box . Sacrificed API functionality  and i18n for UI based customizations. What can you  build  with it? Commerce modules offer  core e-commerce systems and components , providing basic functionality with amazing flexibility. “ Framework”  mindset focusing on loosely coupled modules and  adaptability . Privileges developers and site builders  at the core level, administrators and reusable feature development at the profile level.
Leveraging core systems Commerce depends  heavily  on the core fieldable entity system in Drupal 7: Demonstration and examples: 1.  Fieldable entities Building product types including “attribute” fields. 2.  Entity field query Query your entities and their field data without writing SQL or knowing schemas. Example: commerce_product_reference.module, line 166 ff.
Leveraging contributed systems Commerce depends  heavily  on Rules, the contributed Entity API, and Views: Demonstration and examples: 1.  Rules Configuring all sorts of conditional behavior; checkout completion rule example. 2.  Entity API Use the entity metadata wrapper to easily access and manipulate field data and referenced entities on Commerce entities. Example: commerce_cart.module, line 770 ff.   3.  Views Administrative Views for all entities on the back end and the Cart on the front. Views can now include area handlers and be used to build forms.
Core Commerce systems Commerce defines its own set of systems to interact with its entities: Demonstration and examples: 1.  Product vs. Product display Products do not have default displays, but there are multiple ways for you to build custom displays: node + product reference, Views, Panels. 2.  Product pricing Product sell prices are calculated through Rules via pseudo line items. Example: commerce_product_pricing.module, line 77 ff.   3.  Price components Price calculation builds an array of price components into a price field’s data array. Example: commerce_tax.module, line 238 ff.
Core Commerce systems Commerce defines its own set of systems to interact with its entities: Demonstration and examples (cont.): 4.  Cart Shopping carts are orders with special handling for refreshing prices / checkout. Example: commerce_cart.module, line 831 ff. 5.  Checkout The form is highly configurable and updates the order upon each submission. Modules can define checkout panes for the drag-and-drop form builder. Example: commerce_order.checkout_pane.inc
Core Commerce systems Commerce defines its own set of systems to interact with its entities: Demonstration and examples (cont.): 6.  Payment Every service defined by a payment gateway is defined as a payment method. Each method can be instantiated any number of times with different API credentials, transaction settings, and conditional availability. Example: commerce_payment_example.module Example: commerce_paypal_wps.module 7.  Complex conditions Commerce defines complex conditions that you can use in place of chaining various Rules and Rules components together yourself. Example: Order address component comparison Example: Order contains a particular product
New core Commerce tools The following tools are  new  since Commerce 7.x-1.0-beta4: Demonstration and examples: 1.  Default entity controller Commerce now defines a default entity controller that all its entities use. Contributed modules can extend the same controller for their entities. Example: commerce.controller.inc 2.  Generic entity access Commerce now defines a generic set of entity access permissions and an access callback function that entities can use to perform access checks. Entity view access is extensible through hook_query_TAG_alter(). Example: commerce.module, line 785 ff. Example: commerce_payment.module, line 949 ff.
Any questions? [email_address] Commerce Guys is looking for skilled Drupal developers, themers, project managers

Contenu connexe

En vedette

2014 EUC Term review Presentation
2014 EUC Term review Presentation2014 EUC Term review Presentation
2014 EUC Term review Presentation
Christopher Thomas
 
Diễn biến phức tạp của bệnh khớp
Diễn biến phức tạp của bệnh khớpDiễn biến phức tạp của bệnh khớp
Diễn biến phức tạp của bệnh khớp
lajuana808
 
Bẻ khớp – hại trăm bề
Bẻ khớp – hại trăm bềBẻ khớp – hại trăm bề
Bẻ khớp – hại trăm bề
providencia393
 
Saha_Sumit_2016_thesis
Saha_Sumit_2016_thesisSaha_Sumit_2016_thesis
Saha_Sumit_2016_thesis
Sumit Saha
 

En vedette (16)

Engineering & Construction
Engineering & ConstructionEngineering & Construction
Engineering & Construction
 
2014 EUC Term review Presentation
2014 EUC Term review Presentation2014 EUC Term review Presentation
2014 EUC Term review Presentation
 
11. mi untuk strategi
11. mi untuk strategi11. mi untuk strategi
11. mi untuk strategi
 
10. mi untuk guru
10. mi untuk guru10. mi untuk guru
10. mi untuk guru
 
Diễn biến phức tạp của bệnh khớp
Diễn biến phức tạp của bệnh khớpDiễn biến phức tạp của bệnh khớp
Diễn biến phức tạp của bệnh khớp
 
Drupalcamp Nantes - Présentation entités
Drupalcamp Nantes - Présentation entitésDrupalcamp Nantes - Présentation entités
Drupalcamp Nantes - Présentation entités
 
Bẻ khớp – hại trăm bề
Bẻ khớp – hại trăm bềBẻ khớp – hại trăm bề
Bẻ khớp – hại trăm bề
 
Drupalcamp Nantes - Lost in translation
Drupalcamp Nantes - Lost in translationDrupalcamp Nantes - Lost in translation
Drupalcamp Nantes - Lost in translation
 
Drupalcamp Nantes - Adapter Drupal
Drupalcamp Nantes - Adapter DrupalDrupalcamp Nantes - Adapter Drupal
Drupalcamp Nantes - Adapter Drupal
 
акты
актыакты
акты
 
Saha_Sumit_2016_thesis
Saha_Sumit_2016_thesisSaha_Sumit_2016_thesis
Saha_Sumit_2016_thesis
 
Sistemas de información estratégicos
Sistemas de información estratégicosSistemas de información estratégicos
Sistemas de información estratégicos
 
Strata Conference + Hadoop World NY 2016: Lessons learned building a scalable...
Strata Conference + Hadoop World NY 2016: Lessons learned building a scalable...Strata Conference + Hadoop World NY 2016: Lessons learned building a scalable...
Strata Conference + Hadoop World NY 2016: Lessons learned building a scalable...
 
Enabling Business Transformation with DRM & FDMEE
Enabling Business Transformation with DRM & FDMEEEnabling Business Transformation with DRM & FDMEE
Enabling Business Transformation with DRM & FDMEE
 
Trivento summercamp fast data 9/9/2016
Trivento summercamp fast data 9/9/2016Trivento summercamp fast data 9/9/2016
Trivento summercamp fast data 9/9/2016
 
"Autonomía y Diseño: La realización de lo comunal" Arturo Escobar
"Autonomía y Diseño: La realización de lo comunal" Arturo Escobar"Autonomía y Diseño: La realización de lo comunal" Arturo Escobar
"Autonomía y Diseño: La realización de lo comunal" Arturo Escobar
 

Similaire à Drupal commerce nuts and bolts seville

Ctools presentation
Ctools presentationCtools presentation
Ctools presentation
Digitaria
 
Onlineshopping 121105040955-phpapp02
Onlineshopping 121105040955-phpapp02Onlineshopping 121105040955-phpapp02
Onlineshopping 121105040955-phpapp02
Shuchi Singla
 
Multi-company configuration with OpenERP 6
Multi-company configuration with OpenERP 6Multi-company configuration with OpenERP 6
Multi-company configuration with OpenERP 6
Pexego
 
WSC E-Commerce Web Site3. Detailed Design (one section for each comp.docx
WSC E-Commerce Web Site3. Detailed Design (one section for each comp.docxWSC E-Commerce Web Site3. Detailed Design (one section for each comp.docx
WSC E-Commerce Web Site3. Detailed Design (one section for each comp.docx
ericbrooks84875
 
Fabian Rousselot - Filemaker Portfolio
Fabian Rousselot - Filemaker PortfolioFabian Rousselot - Filemaker Portfolio
Fabian Rousselot - Filemaker Portfolio
Fabian Rousselot
 
Ppt slides 05
Ppt slides 05Ppt slides 05
Ppt slides 05
locpx
 

Similaire à Drupal commerce nuts and bolts seville (20)

Intoduction commerceserver2009
Intoduction commerceserver2009Intoduction commerceserver2009
Intoduction commerceserver2009
 
Ctools presentation
Ctools presentationCtools presentation
Ctools presentation
 
MVC 4
MVC 4MVC 4
MVC 4
 
Report on mall automation
Report on mall automationReport on mall automation
Report on mall automation
 
Onlineshopping 121105040955-phpapp02
Onlineshopping 121105040955-phpapp02Onlineshopping 121105040955-phpapp02
Onlineshopping 121105040955-phpapp02
 
Onlineshoppingonline shopping
Onlineshoppingonline shoppingOnlineshoppingonline shopping
Onlineshoppingonline shopping
 
Multi-company configuration with OpenERP 6
Multi-company configuration with OpenERP 6Multi-company configuration with OpenERP 6
Multi-company configuration with OpenERP 6
 
AspMVC4 start101
AspMVC4 start101AspMVC4 start101
AspMVC4 start101
 
IRJET- Intelligent Cart
IRJET-  	  Intelligent CartIRJET-  	  Intelligent Cart
IRJET- Intelligent Cart
 
Omnichannel B2B Architecture
Omnichannel B2B ArchitectureOmnichannel B2B Architecture
Omnichannel B2B Architecture
 
Drupal Commerce contributed modules overview
Drupal Commerce contributed modules overviewDrupal Commerce contributed modules overview
Drupal Commerce contributed modules overview
 
WSC E-Commerce Web Site3. Detailed Design (one section for each comp.docx
WSC E-Commerce Web Site3. Detailed Design (one section for each comp.docxWSC E-Commerce Web Site3. Detailed Design (one section for each comp.docx
WSC E-Commerce Web Site3. Detailed Design (one section for each comp.docx
 
STOCK PRED.pdf
STOCK PRED.pdfSTOCK PRED.pdf
STOCK PRED.pdf
 
Fabian Rousselot - Filemaker Portfolio
Fabian Rousselot - Filemaker PortfolioFabian Rousselot - Filemaker Portfolio
Fabian Rousselot - Filemaker Portfolio
 
An e-Commerce Platform for Selling Single Product Reltus for Tinnitus
An e-Commerce Platform for Selling Single Product Reltus for Tinnitus	An e-Commerce Platform for Selling Single Product Reltus for Tinnitus
An e-Commerce Platform for Selling Single Product Reltus for Tinnitus
 
Onlineshopping
OnlineshoppingOnlineshopping
Onlineshopping
 
Import and synchronize Drupal commerce content using Commerce feeds
Import and synchronize Drupal commerce content using Commerce feedsImport and synchronize Drupal commerce content using Commerce feeds
Import and synchronize Drupal commerce content using Commerce feeds
 
Ppt slides 05
Ppt slides 05Ppt slides 05
Ppt slides 05
 
Day01 01 software requirement concepts
Day01 01 software requirement conceptsDay01 01 software requirement concepts
Day01 01 software requirement concepts
 
Applying Code Customizations to Magento 2
Applying Code Customizations to Magento 2 Applying Code Customizations to Magento 2
Applying Code Customizations to Magento 2
 

Plus de Artusamak

Drupal comment contribuer
Drupal comment contribuerDrupal comment contribuer
Drupal comment contribuer
Artusamak
 

Plus de Artusamak (20)

On test quoi - DCLannion 2017
On test quoi - DCLannion 2017On test quoi - DCLannion 2017
On test quoi - DCLannion 2017
 
Care for your backoffice - Drupal Dev Days Szeged 2014
Care for your backoffice - Drupal Dev Days Szeged 2014Care for your backoffice - Drupal Dev Days Szeged 2014
Care for your backoffice - Drupal Dev Days Szeged 2014
 
Agilité - Drupal et Scrum sont faits pour s'entendre
Agilité - Drupal et Scrum sont faits pour s'entendreAgilité - Drupal et Scrum sont faits pour s'entendre
Agilité - Drupal et Scrum sont faits pour s'entendre
 
Drupal 8: Mobile initiative - Drupalcamp Paris 2013
Drupal 8: Mobile initiative - Drupalcamp Paris 2013Drupal 8: Mobile initiative - Drupalcamp Paris 2013
Drupal 8: Mobile initiative - Drupalcamp Paris 2013
 
Il n'y a pas que Drupal dans la vie - Drupalcamp Paris 2013
Il n'y a pas que Drupal dans la vie - Drupalcamp Paris 2013Il n'y a pas que Drupal dans la vie - Drupalcamp Paris 2013
Il n'y a pas que Drupal dans la vie - Drupalcamp Paris 2013
 
Drupal un projet comme les autres ? Drupalcamp Paris 2013
Drupal un projet comme les autres ? Drupalcamp Paris 2013Drupal un projet comme les autres ? Drupalcamp Paris 2013
Drupal un projet comme les autres ? Drupalcamp Paris 2013
 
Openlayers - Drupalcamp Paris 2013
Openlayers - Drupalcamp Paris 2013Openlayers - Drupalcamp Paris 2013
Openlayers - Drupalcamp Paris 2013
 
Retour d'expérience : France Télévisions - Drupalcamp Paris 2013
Retour d'expérience : France Télévisions - Drupalcamp Paris 2013Retour d'expérience : France Télévisions - Drupalcamp Paris 2013
Retour d'expérience : France Télévisions - Drupalcamp Paris 2013
 
Drupal, scrum et l'agilité - Drupalcamp Paris 2013
Drupal, scrum et l'agilité - Drupalcamp Paris 2013Drupal, scrum et l'agilité - Drupalcamp Paris 2013
Drupal, scrum et l'agilité - Drupalcamp Paris 2013
 
Drupal comment contribuer
Drupal comment contribuerDrupal comment contribuer
Drupal comment contribuer
 
Drupal commerce - Drupalcamp Toulouse
Drupal commerce - Drupalcamp ToulouseDrupal commerce - Drupalcamp Toulouse
Drupal commerce - Drupalcamp Toulouse
 
Drupalcamp Nantes - Présentation Drush
Drupalcamp Nantes - Présentation DrushDrupalcamp Nantes - Présentation Drush
Drupalcamp Nantes - Présentation Drush
 
Drupalcamp Nantes - Présentation GIT
Drupalcamp Nantes - Présentation GITDrupalcamp Nantes - Présentation GIT
Drupalcamp Nantes - Présentation GIT
 
Drupalcamp Nantes - Optimisations drupal
Drupalcamp Nantes - Optimisations drupalDrupalcamp Nantes - Optimisations drupal
Drupalcamp Nantes - Optimisations drupal
 
Drupalcamp Nantes - Open layers
Drupalcamp Nantes - Open layersDrupalcamp Nantes - Open layers
Drupalcamp Nantes - Open layers
 
Drupalcamp Nantes - Open layers
Drupalcamp Nantes - Open layersDrupalcamp Nantes - Open layers
Drupalcamp Nantes - Open layers
 
Drupalcamp Nantes - Aegir presentation
Drupalcamp Nantes - Aegir presentationDrupalcamp Nantes - Aegir presentation
Drupalcamp Nantes - Aegir presentation
 
Drupalcamp Nantes - Apprendre et prendre en main drupal
Drupalcamp Nantes - Apprendre et prendre en main drupalDrupalcamp Nantes - Apprendre et prendre en main drupal
Drupalcamp Nantes - Apprendre et prendre en main drupal
 
Drupalcamp Nantes - Centrale marseille
Drupalcamp Nantes - Centrale marseilleDrupalcamp Nantes - Centrale marseille
Drupalcamp Nantes - Centrale marseille
 
Drupalcamp Nantes - Traité performance
Drupalcamp Nantes - Traité performanceDrupalcamp Nantes - Traité performance
Drupalcamp Nantes - Traité performance
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Drupal commerce nuts and bolts seville

  • 1. Drupal Commerce Nuts and Bolts Julien DUBOIS, October 2011 @Artusamak
  • 2. Evolving from Ubercart to Drupal Commerce What can you do with it? Ubercart offers a wide feature set , but operating outside of the core feature set is difficult at best. “ Application” mindset focusing on the modules’ performance out-of-the-box . Sacrificed API functionality and i18n for UI based customizations. What can you build with it? Commerce modules offer core e-commerce systems and components , providing basic functionality with amazing flexibility. “ Framework” mindset focusing on loosely coupled modules and adaptability . Privileges developers and site builders at the core level, administrators and reusable feature development at the profile level.
  • 3. Leveraging core systems Commerce depends heavily on the core fieldable entity system in Drupal 7: Demonstration and examples: 1. Fieldable entities Building product types including “attribute” fields. 2. Entity field query Query your entities and their field data without writing SQL or knowing schemas. Example: commerce_product_reference.module, line 166 ff.
  • 4. Leveraging contributed systems Commerce depends heavily on Rules, the contributed Entity API, and Views: Demonstration and examples: 1. Rules Configuring all sorts of conditional behavior; checkout completion rule example. 2. Entity API Use the entity metadata wrapper to easily access and manipulate field data and referenced entities on Commerce entities. Example: commerce_cart.module, line 770 ff. 3. Views Administrative Views for all entities on the back end and the Cart on the front. Views can now include area handlers and be used to build forms.
  • 5. Core Commerce systems Commerce defines its own set of systems to interact with its entities: Demonstration and examples: 1. Product vs. Product display Products do not have default displays, but there are multiple ways for you to build custom displays: node + product reference, Views, Panels. 2. Product pricing Product sell prices are calculated through Rules via pseudo line items. Example: commerce_product_pricing.module, line 77 ff. 3. Price components Price calculation builds an array of price components into a price field’s data array. Example: commerce_tax.module, line 238 ff.
  • 6. Core Commerce systems Commerce defines its own set of systems to interact with its entities: Demonstration and examples (cont.): 4. Cart Shopping carts are orders with special handling for refreshing prices / checkout. Example: commerce_cart.module, line 831 ff. 5. Checkout The form is highly configurable and updates the order upon each submission. Modules can define checkout panes for the drag-and-drop form builder. Example: commerce_order.checkout_pane.inc
  • 7. Core Commerce systems Commerce defines its own set of systems to interact with its entities: Demonstration and examples (cont.): 6. Payment Every service defined by a payment gateway is defined as a payment method. Each method can be instantiated any number of times with different API credentials, transaction settings, and conditional availability. Example: commerce_payment_example.module Example: commerce_paypal_wps.module 7. Complex conditions Commerce defines complex conditions that you can use in place of chaining various Rules and Rules components together yourself. Example: Order address component comparison Example: Order contains a particular product
  • 8. New core Commerce tools The following tools are new since Commerce 7.x-1.0-beta4: Demonstration and examples: 1. Default entity controller Commerce now defines a default entity controller that all its entities use. Contributed modules can extend the same controller for their entities. Example: commerce.controller.inc 2. Generic entity access Commerce now defines a generic set of entity access permissions and an access callback function that entities can use to perform access checks. Entity view access is extensible through hook_query_TAG_alter(). Example: commerce.module, line 785 ff. Example: commerce_payment.module, line 949 ff.
  • 9. Any questions? [email_address] Commerce Guys is looking for skilled Drupal developers, themers, project managers