"Is Drupal Right for You?" Presentation

Posted by Mark Shropshire on February 6, 2014 at 1:56pm

I presented "Is Drupal Right for You?" at the Feb 5th, 2014 CharDUG meetup.

Many web development firms, non-profits, and individuals wonder if Drupal is the right platform for their websites and web applications. Drupal has a fantastic community and rich eco-system, but how can one know if Drupal is the right fit?

Mark Shropshire brings his Drupal consulting experience to help you understand the good, the bad, and the ugly in the Drupal world.

Blog Category: 

Looking for members of the future Drupal.org Community Tools Leadership Team

Posted by Drupal governance announcements on February 6, 2014 at 12:19pm

The Drupal.org Software Working Group is looking for volunteers to take on leadership roles and help guide development of the Drupal.org Community Tools, which include Forums, Drupal Planet, User Groups (groups.drupal.org), User Profiles, User Dashboard.

Basically, this team is about all the tools community uses for things other than code development. Historically all these tools were separate from each other and there was no clear vision or single roadmap/plan. We hope that by improving the decision making structure we can expedite development of these tools and ensure they meet community needs.

Take a look at the current proposal for the scope, roles, responsibilities and authority of the team.
For the full background see this post.

The Software Working Group will appoint the new team by the end of February, 2014. Right now we are looking for candidates for the roles on the team. Interested? Know someone who you think would be a great candidate? Let us know by February 20!

Tom talking Panopoly

Posted by SystemSeed on February 6, 2014 at 11:24am
Tom talking Panopoly

Hello interwebers,

If you hadn't heard on Twitter or our Facebook page, our very own Tom Kirkpatrick (SystemSeed's co-founder and rockstar developer) will be appearing on the Modules Unraveled podcast today at 4pm GMT.

Greek Drupal Community - Website redesign on DrupalFund.us

Posted by TheodorosPloumis blog on February 6, 2014 at 7:27am

Greek Drupal community on DrupalFund.us

We are the Greek Drupal community, a small but active community! We are organizing DrupalCamps, monthly meetups in several cities of Greece, translation sprints and other events regarding Drupal. We currently count more than 500 members in our local community website.

We decided to move forward and do more things for the Greek Drupal Community. Thus, we set up this small funding project.

We need the money for these simple reasons:

1) Our online community - http://mydrupal.gr - is a bit old fashion and nonfunctional website. We are planning to upgrade the site from 6.x to 7.x and make a complete redesign.

2) We need to pay for a new hosting that supports ssh, Drush, git, SASS and automated backups.

We don't want to have company sponsorship and such. We believe in people's power and this is a reason why we use Open Source software.

This funding project mainly aims to Greek Drupal lovers and the Greek Drupal community but anyone else is welcome.

Funding page: https://www.drupalfund.us/project/greek-drupal-community-website-redesign

Twitter hashtag: #mydrupalgr

GLADCamp 2014 Call for Trainers, Presenters, Sponsors and Volunteers!

Posted by Greater Los Angeles Drupal (GLAD) on February 5, 2014 at 9:55pm

In case you haven't heard, GLADCamp is quickly coming on March 7, 8 & 9, 2014! It's in sunny Pasadena, California, and will be taking place at the Hilton Pasadena & Convention Center.

In addition to being a DrupalCamp for all things Drupal with keynotes, sessions, trainings and BoFs, we're having a non-profit Drupal summit on March 7th, a website speed test competition throughout the conference (called the Extreme Drupal Games), and a website barn raising on March 9th to benefit a local 501c3 non-profit.

We're also looking for session proposals and sponsorships. Would you like to make a tax-deductible donation? We do that, too!

Check out GLADCamp.org and sign up. We've negotiated a group rate at the Hilton Pasadena and have all kinds of venue information for those interested in attending.

Call for Trainings!

Training day at GLADCamp 2014 is on March 7th, 2014. We have room at our conference venue for 3 simultaneous trainings and are starting our call for trainings! Everyone is welcome to apply.

Space is limited and priority is given to experienced Drupal trainers and training companies. Don't let that discourage you, though. If you're a newcomer to the Drupal training scene and want to offer something no one has offered before, we'd love to hear from you!

If the training you'd like to provide is a paid training, please be sure to indicate that in your application. In order to create an even playing field for everyone, our preference is to either have all trainings be free or all trainings be paid.

Call for Volunteers!

This is a free conference that's action-packed with 3 days of activities and we can't do it without your help. We need volunteers to help with the following activities:

  • Join the session selection committee! We need a team that accuratey reflects our community and expected attendees;
  • Help with info/registration desk (2 hour shifts); answer questions, sign attendees in;
  • Picking up coffee and bagels on Saturday and/or Sunday morning;
  • Be a timekeeper at sessions in order to keep our sessions on schedule;
  • Join our video team and help record sessions and assist presenters with screen recording software;
  • Design and print signs, posters and badges for GLADCamp; we can provide logo and brand guidelines;
  • Wrangling volunteers for day-of tasks;
  • Organize evening reception, including help finding a location near the Hilton Pasadena;
  • Print designers: design and print common area signs, posters, badges;
  • GLADCamp set-up and breakdown!

If you or someone you are know are interested in any of the following, please fill out our volunteer information form and indicate what you'd like to help with.  

We have a lot planned for this event, so stay tuned to GLADCamp.org for details. You can also follow @GLADCamp on Twitter.

Thanks!

Tags: Planet DrupalGLADCamp

Theming Layers in Drupal

Posted by Propeople Blog on February 5, 2014 at 7:03pm

As you might already know, Drupal nodes are composed of multiple template files assembled together and displayed to the user.


An elegant and recommended solution to theme layers in Drupal is to use hook_theme(). This hook allows us to declare theme_hooks and return an array with the information about the hook, where the keys are the hook name and its values, plus general information about the hook. Here’s a simple example:

 


<code language="PHP">
/**
* Implements hook_theme()
*/
function mymodule_theme() {
 return array(
   'mymodule_template' => array( // Theme hook name.
     'template' => 'templates/mymodule-template', // Path to your template file.
     'arguments' => array(''), // Passed default arguments.
   ),
 );
}
</code>

 


We declare the hook name after the implementation type and give the full path to the PHPtemplate file (Drupal will look for the mymodule-template.tpl.php file in the template folder).


So how will we use this hook? Suppose we use hook_menu() to declare our custom callback. In menu callback, we will call our theme hook and pass some variables to be processed.

 


<code>
/**
* Implements hook_menu()
*/
function mymodule_menu() {
 $items['mymodule/callback'] = array(
   'page callback' => 'mymodule_callback',
   'age arguments' => array(),
   'access arguments' => array('access content'),
   'type' => MENU_CALLBACK,
 );
 return $items;
}
</code>

 

Now, let’s take a look at the menu callback. We will call the ($hook, $variables = array()) function to theme the output of the callback. The first argument is the theme’s hook name, and the second is an array of variables to be rendered.

 

 

<code>
/**
* Menu callback.
*/
function mymodule_callback() {
 $output = theme('my_template', array('page_title' => 'Using theme hooks', 'page_text' => 'This is some text...'));
 return $output;
}
</code>

 


Our callback will invoke the my_template hook and will render the variables passed as arguments. The result will be a page rendered with mymodule-template.tpl.php. With the content of PHPTemplate files, we can customize the html output by adding class attributes, changing markup order or  print other variables.

 

 

<code>
<div class="custom-template">
 <h2 class="title"><?php if ($page_title): print $page_title; endif; ?></h2>
 <div class="text">
   <?php if ($page_text):?>
     <p><?php print $page_text; ?></p>
   <?php endif; ?>
 </div>
 <div class="alter-data">
   <?php if ($alter_data): ?>
     <p><?php print $alter_data; ?></p>
   <?php endif; ?>
 </div>
</div>
</code>

 

 

You might be wondering how to override theme hooks. We can do this by using a function called THEME_HOOK(). We use it to modify variables, array structure, or alter variables before the template field is invoked with the TEMPLATE PREPROCESS function, in our case module_preprocess_HOOK(&$variables);

 

 

<code>
/**
* Template_preprocess().
*/
function mymodule_preprocess_my_template(&$variables) {
 $variables['page_text'] .= ' This line was added from preprocess_my_template().';
}
</code>

 

 

The theme layer approach is a clean an easy way to create and customize template files. Hope you find it useful!

 Tags: DrupalDevelopmentthemingCheck this option to include this post in Planet Drupal aggregator: planetTopics: Tech & Development

Smarter Drupal projects in projects management with git-subtree

Posted by LevelTen Interactive on February 5, 2014 at 5:06pm
tree growing on a tree

In order to properly manage a Drupal project you have to master the art of managing projects within projects. A Drupal site is really made up of numerous components such as modules, features and themes that in turn are their own projects.... Read more

Thoughts on controllers for Drupal 8

Posted by Chris Hall on Drupal 8 on February 5, 2014 at 3:11pm

Introduction

Recently I hit a roadblock on the long road to eventual mastery (hopefully) of Drupal 8, most of the things in tutorials and 'Hello World' type module examples are pretty straightforward. but now I have arrived at the bit where I have to map out an architecture for potentially fairly complex modules I have had to take a step back and spend more time thinking, investigating and learning about Symfony 2 etc..

I started this post a while ago and drastic changes were occurring as I did so, I think things are settling down a bit now and I am feeling ready to "grasp the nettle" again. Apologies the style of the post also changes over the two month intervening period.

Unfortunately Core and the current Drupal documentation don't really help to explain best practices for different Controller use cases. Guidelines that are there for Controllers are focused on Core Drupal at moment and not Contrib (imho).

This post is about  Controller classes in Drupal 8, particularly those that either service _content or _controller defaults in Routes. It also touches on Routes and Services and these three are probably the most important elements of the 'new' Drupal.

This post is a bit more technical than some of the previous ones, but the intention is not to present full technical solutions, or full examples of code, I am still feeling my way around these topics. in future I will try to post more specific information in an article based format when appropriate. The post is also pretty long by modern standards (apologies)  so it may just serve as a marshalling ground for my current thoughts. There are links though so it  could serve as a useful springboard. Any feedback including violent disagreement will be most useful and welcome.

After reviewing the post code examples are more related to things not to do, oh well eventually will have enough mileage to wrtie some technical articles and right now am itching to get coding again in D8.

I am going to present a few thoughts and ideas and invite comment.

Background 

This post is mainly about Controllers in Drupal 8 and in particular Controller classes and Thin Controllers but also involves Containers, ServicesRouting and Dependency Injection. These concepts all work together so there is considerable overlap in some of the resources linked to below. There are a lot of resources around, especially relating to Symfony, what is most useful to you will probably depend on your background, I have included a little background in case you have not had the chance to investigate Drupal 8 or any framework that uses these concepts.

Controller

The Symfony documentation is a good place to start learning about controllers, there are some important differences however. For example the responsibility of a Symfony controller is to return a Response, in Drupal, routing can also define that the controller will return a render array (to be rendered as main page content) or a form amongst other things. Symfony terminology can be a little confusing at times also because technically a controller/action can simply be a function that returns a Response, however controller classes (which may encapsulate a number of these) are also commonly just referred to as Controllers.

Container, Services and Dependency Injection

The Symfony 2 introduction to service containers is worth reading as an introduction. There is some developing Drupal documentation on Services and Dependency Injection in Drupal 8 also.

A particularly good (although slightly dated now) presentation on Dependency Injection by Kat Bailey at Portland Drupalcon is a good place to start, if you need to.

Services cover a very wide area, the Container will know about services for all kinds of purposes, as the Symfony Book describes a service as any PHP object that performs some sort of "global" task that is quite a generic definition. We can be sure that many Controllers will want to use a variety of services. The Symfony Book page linked to above is a good place to start learning about Services and the Container.

Much of the interesting custom functionality that you may be wrting is going t be found in services.

This post: Understanding Drupal 8, part 2: The Service Container is one of few that just focust on the container.

Routing

The Controller features heavily in Routing, this presentation Drupal 8 routing: The method in the madness by Tim Plunkett is a good intro. and touches on all areas.

Thin Controllers

Controllers are not meant to be the place for complex business logic, this Symfony related post helps to explain more, Thin Controllers are consistently touted as usual best practice for Symfony and Drupal. Heavy lifting should mostly be in services. In Drupal the ControllerBase abstract class is provided as a class that can be extended by a thin controller, this class is similar in purpose to the Controller class provided by the Symfony framework.

A Thin Controller doesn't require explicit testing, if business logic is in the Services the Controller is mainly acting as a target for the Route and then handing off the bulk of the work to a Service. A Thin Controller should be simple enough that any fundamental problems will quickly show up in integration testing. In mechanical terms it is like the linkage between a button and a complex clockwork mechanism. 

I think though that especially in Contrib land many controllers will end up overweight initially as if this kind of architecture is new to you then it will take time to sink in and get familiar with what code to put where.

Controllers need Services

Generally Controllers need Services to do anything useful. Services themselves can be nicely independent, they may need other Services to do their work but these can be configured to be passed to their constructors, so long as they get something that looks and behaves as they expect they are happy, subsequent code can reconfigure what they actually get and/or mock services can be provided for testing. 

Controllers sit in a slightly awkward place (hence occaisional 'holy wars' and differing ways to use them in many frameworks).  Services reside in and can be retrieved from the Container but to get at them the Controller needs access to and knowledge of the Container (which can make make people feel uncomfortable particularly when making ad hoc and not immediately apparent access to the container). By default Controller configuration occurs in routing and there is no way at that point to select services to inject into it (in fact the router should NOT need to know what the Controller requires to fulfill it's obligations).

One way to get a service into a Controller is through the static Drupal class (DO NOT DO THIS THOUGH) that has been provided for procedural style code to get access to the Service Container and/or useful services etc., this class contains some specific methods to get particular services for example:

\Drupal::cache()->delete('comment_entity_info');

There is also a more generic method to allow retrieval of any service, for example:

// Get BookManager service
$book_manager = \Drupal::service('book.manager');

Alternatively you can access the container directly, for example:

There are a few other bits of deprecated code lying around for static access to the Service Container, you may see reference to drupal_get_container() for example and the getContainer method on the Drupal class.

But however you should NOT be using any of these in your Controllers, if you are coding a Controller you are doing things the new way, so get with the program ;).

Modifying other peoples code

In Drupal 7 you had a number of ways in which you could surgically target and modify functionality in core and contrib code (because hacking it directly would be wrong of course). You could use menu alter hooks to swap in a new page callback, hook_module_implements_alter to change a hook implementation etc. etc.

In Drupal 8 you will have to start thinking a little differently, you can alter routing (to change what happens for a specific Route), you can replace Services in the Container with a new version but in most cases you have no easy way to swap out an entire Controller (I do finish with a suggestion).

Controllers in core

I have a question: is the best practice for controllers in core always best practice for controller in contrib modules? For many the assumption would be yes, I am not entirely.comfortable with that. Bear in mind that Controllers in core are in a state of flux and 'planned progression' in many cases, which leaves a bit of a vacum as most developers would like some clear examples they can follow, many Core controllers are unfinished.

Extending ControllerBase

ControllerBase class is similar in purpose to the Symfony Controller class providing a number of utility methods and Container access to reduce boilerplate code, in essence it provides bunch of useful core services. Initially it irritated me, but has changed recently so not quite so irritating (details to follow, essentially though I am glad to see that this issue has been committed).

In Symfony you may see people arguing against using the Controller class, the arguements are weaker when considering Drupal. Symfony is very componentised and in theory  somebody may want to use your code without using the FrameworkBundle (which they can't because you are coupled to it) instead you can use ContainerAware from the Dependency injection component.. This type of arguement is

I suspect ControllerBase will be the default starting point for most budding Controller authors it can even now be built up as it already implements the ContainerInjectionInterface (prior to this some core Controller were both extenting ControllerBase and implementing ContainerInjection interface which seemed rather clumsy.

Controller base does currently have a reference to the Container hidden away in there that you may be tempted to use directly (DON'T) this could vanish or change. If you need more Services than look to the ContainerInjection interface and get them handed to the constructor of your Controller.

Think about testing however. The documentation for Controller base does warn against it's use if the Controller class requires unit testing. Although as already mentioned above it is quite likely that you can make a good case for not testing your controller if you can keep it thin.

Implementing ContainerInjectionInterface

Possibly a more 'grownup' method of setting up your Controller is with the ContainerInjectionInterface this requires you to implement a static create method where you can define the Services that should  be passed to the constructor of your Controller (that trips off the tongue). 

The waters are somewhat clearer/muddier now that ControllerBase also implements ContainerInjectionInterface.

The best way to see what is happening is to follow the link and look at some of the Controllers that are implementing. A good controller to keep track of in all respects is the BookController  I have included it's current create method below and we can see that the Controller wishes the book.manager and book.export services to be passed to it's constructor.

 /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static($container->get('book.manager'), $container->get('book.export'));
  }

Implementing ContainerAwareInterface

The Symfony ContainerAwareInterface is also available to use in Drupal and this allows you to recieve the Container in your Controller constructor a number of Core Controllers are doing this but I don't beleive it would be recommended or needed unlesss doing some pretty edgy, I have not had a chance to review them yet and work out eactly why they need to do this.

Controllers as Services

You can define your Controller as a Service, define your dependancies as you would for any Service, providing the added advantage that your entire Controller could easily be swapped out.

This would be my preferred way but has already kicked off the odd holy war in Symfony and does not appear to be advocated by any Drupalers. It does work though and can be done in a similar manner as with Symfony.   

Conclusion

Although getting better I don't think things are clear yet, I will try to forumlate a solid defense of my gut preference of defining my custom controllers of services but fear it is too late for that, often times best practice is common practice anyway as at least everyone knows what to expect.

The documentation around ControllerBase and ContainerInjectionInterface is a bit confusion and possilby contradictory now that ControllerBase implements ContainerInjectionInterface. 

Many of the litlte tutorials I see either ignore the whole Container and Services issue entirely and just write a bare class (which is fine for hello world) or they blindly extend ControllerBase without using any of it or stating why. 

For me the encouraging thing to glean from all of this is that whilst pondering the whichness of the way over Drupal internals and best practice I can finally start drawing on previous experiences and other frameworks for inspiration and help, and THAT is REFRESHING. 

 

Tags:

Creating a Resource Calendar in Drupal 7

Posted by Brian Osborne on February 5, 2014 at 1:35pm

I just finished up a small project at work to create a basic resource management calendar to visualize and manage room and other asset reservations. The idea was to have a calendar that displayed reservations for various resources and allow privileged users the ability add reservations themselves. The existing system that was being used was a pain to work with and very time consuming - and I knew this could be done easily in Drupal 7.

The Drupal 8 page call process

Posted by Wizzlern on February 5, 2014 at 12:53pm

When I'm totally burried in Drupal 8 code and terminology, I like to take a step back to get an overview. While studying the routing system and controllers I wanted to have an overview of the total page call process. I did some investigation and made this diagram:

Overview of the Drupal 8 page call process

Tags:  drupal 8 request router controller views symfony

094 API Changes in D8 with Théodore Biadala - Modules Unraveled Podcast

Posted by Modules Unraveled on February 5, 2014 at 6:05am
Photo of Théodore BiadalaPublished: Wed, 02/05/14Download this episodeAPIs
  • What are some of the APIs that have changed from D7 to D8?
  • Javascript frontend changes
    • Reduce use of jQuery
  • PHP API changes
    • Declare script dependencies in Yaml file
    • Removing drupal_add_js and drupal_add_css in favor of attachments
    • Can’t add scripts/css/js in .info files
  • How to test Javascript and frontend
  • Documentation
    • api.drupal.org only covers php documentation
Use Cases
  • Things
NodeSquirrel Ad

Have you heard of/used NodeSquirrel?
Use "StartToGrow" it's a 12-month free upgrade from the Start plan to the Grow plan. So, using it means that the Grow plan will cost $5/month for the first year instead of $10. (10 GB storage on up to 5 sites)

Episode Links: Théodore on drupal.orgThéodore on TwitterD8 core JS DocumentationUse JSDoc issueBlogTags: 

Janez Urevc on Media in Drupal 8

Posted by Acquia on February 4, 2014 at 11:18pm

I spoke with Slovenian Drupalist-extraordinary Janez Urevc at Drupal Camp Vienna 2013. Alongside being a Drupal developer at examiner.com, he is also a major force in everything media+Drupal. Janez is slashrsm on Drupal.org, Twitter and "all the other online services you can imagine." He's on the team planning Drupal Camp Alpe-Adria 2014, which will be in the beautiful Slovenian resort town of Portoroz in May. Knowing the wonderful Drupal community in Slovenia (and the region around it) and the fantastic location, I highly recommend this camp!

Creating a 'The Verge'-like site with Panopoly

Posted by Deeson Online on February 4, 2014 at 10:06pm

Vox Media have a great platform in Chorus, making websites like The Verge, SB Nation and Polygon. Their interesting and varied article layouts engage and focus the reader, and provide much more flexibility for the content editor.

But if you're using Drupal, how can you improve your content editing process? We looked at several approaches, and came out with one clear winner: Panopoly.

As developers, we should consider the user experience of the content editor more than we currently do, and be more considerate of the workflow required to publish a good-looking article.

Ever had issues with WYSIWYG editors ruining your perfect layout? By structuring your content, as Polygon does here, your editors can avoid getting too caught up in markup, while retaining flexibility in page layout.

  An example of a "snippet" from The Verge  

The Verge uses "snippets" to structure content. A snippet contains editable sections to place content in. In the above example, there is the title of the snippet, a left column and a right column.

There are three distinct sections in this one snippet. You could achieve this with a conventional WYSIWYG, and some HTML knowledge, but this is not acceptable for most content editors. Although we don't know how Chorus (Vox Media's proprietary CMS), works, we can see that this approach offers ease of use and flexibility to your users without intricate knowledge of HTML, and allows them to focus on what really matters: the content. 

We studied this approach and decided to use it for Deeson Member Communications

Some of our requirements were:

  • Be able to move sections of content up and down as required, while having different layouts for each section on the page. 

  • Be able to have different styles available to choose for a particular piece of content. 

  • Be able to reuse some content across the site, without duplication.

It soon became clear that a conventional WYSIWYG would not do the job here, and we needed something easy to use. 

Enter Panopoly. By playing around with a freshly installed version, we began to see the potential for change in the usual content editing process.

Original designs for the site included a "Super Page", which incorporated several different sections, with varied layouts. For example, one section is a full width background image with text, and another is a centred container with a list of links.

How do we get editors up to speed with the required HTML to achieve this?

The answer: we shouldn't need to. Our system should abstract the layout in a way that is clear and understandable, while also having ease of use. 

Digging into Panopoly, we found a handy module in Fieldable Panel Panes. This module does what it says on the tin, and allows you to add fieldable panes to your panel layouts. Panopoly 7.x-1.0-rc3 provides a few key pane types such as text and image gallery out of the box, but we needed a little more customisation. In 7.x-1.0-rc3, Fieldable Panel Panes requires a custom module to define custom pane types, but this is very simple to do with a hook:

/** * Implements hook_entity_info_alter(). */ function yourmodule_custom_panes_entity_info_alter(&amp;$entity_info) { $entity_info[&#39;fieldable_panels_pane&#39;][&#39;bundles&#39;][&#39;machine_name_of_new_pane&#39;] = array( &#39;label&#39; =&gt; t(&#39;Name of custom pane), &#39;pane category&#39; =&gt; t(&#39;Category your pane will appear in&#39;), &#39;pane top level&#39; =&gt; FALSE, &#39;pane icon&#39; =&gt; &#39;&#39;, // Path to icon for your pane if needed &#39;admin&#39; =&gt; array( &#39;path&#39; =&gt; &#39;admin/structure/fieldable-panels-panes/manage/%fieldable_panels_panes_type&#39;, &#39;bundle argument&#39; =&gt; 4, // Note that this has all _ replaced with - from the bundle name. &#39;real path&#39; =&gt; &#39;admin/structure/fieldable-panels-panes/manage/machine-name-of-new-pane&#39;, &#39;access arguments&#39; =&gt; array(&#39;administer fieldable panels panes&#39;), ), ); }

In future Panopoly releases, the newest version of Fieldable Panel Panes should be included, which includes a UI for adding new pane types. 

After your custom pane type is defined, all field configuration is then done through the UI as usual, at admin/structure/fieldable-panels-panes.

You can add fields as you would with a content type or other entities, and configure field display with Display Suite for your custom view modes.

The end result of this is a custom pane your editors can easily add to pages. On the Deeson Member Communications site, we use several types of panes to create a custom experience for each page.

 

Each of these panes include editable regions, where the editor is free to produce content unburdened by markup considerations. With Panopoly, we can also move each of these regions in place to get an idea of how the content will actually look when published.


The options at the top of each pane allow editing, custom styling, deletion, and placement.

Editing a fieldable pane - note we allow HTML in the body field here to allow easy bullet points, bolded text, etc.

Check out http://deeson-mc.co.uk/magazines to see what we've been able to achieve with Panopoly.

We've had a lot of fun with this new content editing experience, and there's still more we can do. Using Panopoly is a different approach to editing content in Drupal, and the UI is developed enough to aid even the most markup-averse content admin.

We recommend trying Panopoly out on your next project, be that a content-generated site or a site which requires varying types of layout per page.

If you have the resources to look into making something different for your users, Panopoly is definitely something to take into consideration.

 

 

Read moreCreating a 'The Verge'-like site with PanopolyBy Annika Clarke | 4th February 2014

Kalatheme in Kalabox on Pantheon for a minute about time

Posted by Victor Kane on February 4, 2014 at 9:34pm

What flavor is Kalatheme?

Create a Kalatheme sub-theme project right on Pantheon

Pull it down to your laptop on Kalabox

Work on it in Eclipse IDE, for example

What flavor is Kalatheme?

Kalatheme is a very convenient theme to use, and should be the default theme for Panopoly, with all due respect. Peruse its Drupal project page.  Panopoly + Bootstrap 3 + Bootstrap themes + browser based sub-theme generator (<- Bootswatch, etc., etc.!) + views grids + reusable custom CSS classes that can be registered as optional in any panels pane + advanced stuff for the folks that, inline with Kalatheme philosophy, don't like to admit they use it:Sass and Compass Tools.

read more

Global Training Days Coming Up

Posted by Drupal Association News on February 4, 2014 at 8:18pm

Drupal Global Training Days are quickly approaching and we do not want you to miss out on the February date.  Global Training Days is an initiative by the Drupal Association to introduce new and beginning users to Drupal.  The Drupal Association is partnering with training companies to make this happen.

Personal blog tags: Global training days

Mediacurrent: What Does Success Look Like?

Posted by Mediacurrent on February 4, 2014 at 4:27pm

There was an article by David Baker that caught my attention. David is a long-time consultant for the web agency marketplace who offers blunt, but sage advice that comes from maintaining a strong pulse on what is happening in our industry.Essentially, he challenged Principals to think about what success really looks like at your agency.

DrupalEasy Podcast 122: Insert Witty Title Here

Posted by Drupal Easy on February 4, 2014 at 4:25pm
Download Podcast 122

Tim Plunkett (tim.plunkett), Drupal 8 core contributor joins Andrew Riley, Ted Bowman, and Mike Anello to discuss Views in core, the state of the Drupal 8 configuration managment initiative, and to make his prediction as to when we’ll see the first Drupal 8 beta. All that plus a few face at the DA, Panopoly 1.1, and four non-module picks-of-the-week.

read more

Drupal 8: Creating a custom field - Part 2: Field widget

Posted by ComputerMinds.co.uk on February 4, 2014 at 1:01pm

This is part 2 in my series of articles about creating a custom field. I recommend reading Part 1: Field type first, if you have not done so already.

After creating the field type it is now time to create the field widget.

How to Use Bootswatch Themes in Drupal 7

Posted by Web Wash on February 4, 2014 at 6:15am

The standard look and feel of Bootstrap is unmistakable and often you can spot a website using it a mile away. The dead giveaways are the buttons and navigation, but it doesn't have to be this way.

If you want to change the look and feel of your Bootstrap site then take a look at Bootswatch. It offers 12 great looking themes, and best of all they are free and open source.

In this tutorial, we'll learn how to use a Bootswatch theme in two ways. The first method will show you how to use the BootstrapCDN and in the second we compile the LESS files ourselves.

Pages

Subscribe with RSS Subscribe to Drupal.org aggregator - Planet Drupal