Manchester Meetup: Thursday, March 14, 2013 - at **The Farm Bar & Grille**

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
miche's picture
Start: 
2013-03-14 18:00 - 22:00 America/New_York
Organizers: 
Event type: 
User group meeting

Next Meeting

Thursday, March 14th, 6:00pm to 8:00pm & 8:00pm to 10:00pm
The Farm Bar & Grille
1181 Elm Street, Manchester, NH 03104
Website: http://www.farmbargrille.com/manchester/home
(Located at the cross of Elm and Bridge Street)
Map: http://g.co/maps/uegpa
Parking: Diagonally NorthEast of The Farm
Take Elm Street going North
Turn Right on either Pearl St or Orange St. Follow the loopdy-loops to the the inside of the lot.

Signup!

Please, please, please use the built in sign-up functionality so we know how many people to expect.

Topics/Presentations

We'd like to see everyone come prepared to either pose a question/issue they've ran across in the past month or to share something cool/amazing they've discovered in the past month. There are plenty of questions out there, so let's make sure we know what they are so we can get them all answered at this month's meetup!!

Additionally, please use the comments on this event node to suggest topics. If there is a consensus, we will try to have someone prepared to do an informal presentation.

DrupaCamp 2013 Planning Status Update: Let's hear what happened on the conference call.

Dinner & More Drinks

After each meetup, we usually depart from the "structured" environment, and continue our discussions over beers and/or food. So, when we are done being geeky, let's order food!

We look forward to seeing you all there!!

Comments

I'd like to hear more on views

BruceDawson's picture

And how to create the view you need. For example, I want to know why I need to create a user's view in order to list products with a taxonomy term shared with the current user? What is the engineering rationale behind this, and how do I reconcile it with the need to get particular data viewed.

There's a lot of things that make sense when constructing a view, but a lot of things that don't make sense too! I'd like to know the rationale behind them so I don't have to go through so many trial and errors when constructing a view.

Bruce, Re "I need to create a

Bob Newby's picture

Bruce,

Re "I need to create a user's view in order to list products with a taxonomy term shared with the current user?"

In the abstract, you should not need to. Of course, I don't know the specifics.

Basically you want a view of content where the content type is 'product'. Then you establish a relationship between the product node and the taxonomy terms it references, narrowed by the respective vocabulary (or vocabularies).

Then you create a relationship from taxonomy terms to users/accounts that also reference the term(s).

Next add whatever fields, etc. you wish from (i) product, (ii) taxonomy term(s), and (iii) user/account.

This is all within the one view of product content.

What follows is the export of a view of content nodes of type business_profile and of users/accounts where the commonality is the specific languages they share, where Languages is a flat vocabulary and where both business profiles and users/accounts have a term reference field bound to the Languages vocabulary.

What the following view does NOT do is narrow the results to the currently logged in user, but that's something you already know how to do.

$view = new view();
$view->name = 'taxonomy_in_the_middle';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'node';
$view->human_name = 'Taxonomy in the middle';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master /
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Taxonomy in the middle';
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['pager']['options']['items_per_page'] = '50';
$handler->display->display_options['style_plugin'] = 'table';
/
Relationship: Field: Languages (taxonomy_vocabulary_6) /
$handler->display->display_options['relationships']['taxonomy_vocabulary_6_tid']['id'] = 'taxonomy_vocabulary_6_tid';
$handler->display->display_options['relationships']['taxonomy_vocabulary_6_tid']['table'] = 'field_data_taxonomy_vocabulary_6';
$handler->display->display_options['relationships']['taxonomy_vocabulary_6_tid']['field'] = 'taxonomy_vocabulary_6_tid';
$handler->display->display_options['relationships']['taxonomy_vocabulary_6_tid']['required'] = TRUE;
/
Relationship: Taxonomy term: User using Languages /
$handler->display->display_options['relationships']['reverse_taxonomy_vocabulary_6_user']['id'] = 'reverse_taxonomy_vocabulary_6_user';
$handler->display->display_options['relationships']['reverse_taxonomy_vocabulary_6_user']['table'] = 'taxonomy_term_data';
$handler->display->display_options['relationships']['reverse_taxonomy_vocabulary_6_user']['field'] = 'reverse_taxonomy_vocabulary_6_user';
$handler->display->display_options['relationships']['reverse_taxonomy_vocabulary_6_user']['relationship'] = 'taxonomy_vocabulary_6_tid';
$handler->display->display_options['relationships']['reverse_taxonomy_vocabulary_6_user']['required'] = TRUE;
/
Field: Content: Nid /
$handler->display->display_options['fields']['nid']['id'] = 'nid';
$handler->display->display_options['fields']['nid']['table'] = 'node';
$handler->display->display_options['fields']['nid']['field'] = 'nid';
/
Field: Content: Title /
$handler->display->display_options['fields']['title']['id'] = 'title';
$handler->display->display_options['fields']['title']['table'] = 'node';
$handler->display->display_options['fields']['title']['field'] = 'title';
$handler->display->display_options['fields']['title']['alter']['word_boundary'] = FALSE;
$handler->display->display_options['fields']['title']['alter']['ellipsis'] = FALSE;
/
Field: Field: Languages /
$handler->display->display_options['fields']['taxonomy_vocabulary_6']['id'] = 'taxonomy_vocabulary_6';
$handler->display->display_options['fields']['taxonomy_vocabulary_6']['table'] = 'field_data_taxonomy_vocabulary_6';
$handler->display->display_options['fields']['taxonomy_vocabulary_6']['field'] = 'taxonomy_vocabulary_6';
$handler->display->display_options['fields']['taxonomy_vocabulary_6']['relationship'] = 'reverse_taxonomy_vocabulary_6_user';
$handler->display->display_options['fields']['taxonomy_vocabulary_6']['label'] = '';
$handler->display->display_options['fields']['taxonomy_vocabulary_6']['element_type'] = '0';
$handler->display->display_options['fields']['taxonomy_vocabulary_6']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['taxonomy_vocabulary_6']['element_wrapper_type'] = '0';
$handler->display->display_options['fields']['taxonomy_vocabulary_6']['element_default_classes'] = FALSE;
$handler->display->display_options['fields']['taxonomy_vocabulary_6']['type'] = 'taxonomy_term_reference_plain';
$handler->display->display_options['fields']['taxonomy_vocabulary_6']['delta_offset'] = '0';
$handler->display->display_options['fields']['taxonomy_vocabulary_6']['field_api_classes'] = TRUE;
/
Field: User: Uid /
$handler->display->display_options['fields']['uid']['id'] = 'uid';
$handler->display->display_options['fields']['uid']['table'] = 'users';
$handler->display->display_options['fields']['uid']['field'] = 'uid';
$handler->display->display_options['fields']['uid']['relationship'] = 'reverse_taxonomy_vocabulary_6_user';
/
Field: Realname: Real name /
$handler->display->display_options['fields']['realname']['id'] = 'realname';
$handler->display->display_options['fields']['realname']['table'] = 'realname';
$handler->display->display_options['fields']['realname']['field'] = 'realname';
$handler->display->display_options['fields']['realname']['relationship'] = 'reverse_taxonomy_vocabulary_6_user';
/
Sort criterion: Content: Post date /
$handler->display->display_options['sorts']['created']['id'] = 'created';
$handler->display->display_options['sorts']['created']['table'] = 'node';
$handler->display->display_options['sorts']['created']['field'] = 'created';
$handler->display->display_options['sorts']['created']['order'] = 'DESC';
/
Filter criterion: Content: Published /
$handler->display->display_options['filters']['status']['id'] = 'status';
$handler->display->display_options['filters']['status']['table'] = 'node';
$handler->display->display_options['filters']['status']['field'] = 'status';
$handler->display->display_options['filters']['status']['value'] = 1;
$handler->display->display_options['filters']['status']['group'] = 1;
$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
/
Filter criterion: Content: Type */
$handler->display->display_options['filters']['type']['id'] = 'type';
$handler->display->display_options['filters']['type']['table'] = 'node';
$handler->display->display_options['filters']['type']['field'] = 'type';
$handler->display->display_options['filters']['type']['value'] = array(
'business_profile' => 'business_profile',
);

/* Display: Page */
$handler = $view->new_display('page', 'Page', 'page');
$handler->display->display_options['defaults']['hide_admin_links'] = FALSE;
$handler->display->display_options['path'] = 'taxonomy-in-the-middle';

BruceDawson's picture

I agree one should not be required to make a user view just to incorporate info from the user's profile, but I tried the "intuitively obvious" approach you used, and it didn't work. Sufficient google-ing finally landed me at http://drupal.org/node/1111722#comment-4286442, which did work.

However, I have run into other situations where this solution is not working (maybe due to deeper or more complex filter criteria). So its becoming apparent I don't know enough about how views are constructed internally.

I'm not totally convinced, but I'm suspecting some SQL queries will have to be hard coded, but I'm trying to avoid that for now. And even if I do have to hard-code it, I will need to know a lot more about the innards of Views before I write any code.

Have a sandbox ready!

miche's picture

Bruce,

Have a sandbox with all of your content ready for us at the meetup. You can plug in to the TV and we all can walk through making the View.


Michelle Lauer
michellelauer.com

I've got a site on-line

BruceDawson's picture

I don't think this is appropriate for a Drupal Sandbox (BTW: "Sandbox" isn't an option on the setup page - was it removed?). However, I have a devel-level site on the 'net that we can access to demonstrate the problems I'm having.

Sandbox = Development Environment

miche's picture

I just meant have a local copy of the site (on your laptop) that we can muck around with and break.


Michelle Lauer
michellelauer.com

I was afraid that was what you meant!

BruceDawson's picture

My laptop is a mini, and I don't think it will support Apache, PHP and Mysql running all at the same time - especially with a browser running too.

But I'll see what I can dig up. If nothing else, we can have a shared mouse/keyboard and use the Farm's Internet.

I have a netbook and it does

mkmagu's picture

I have a netbook and it does it. You could download Acquia Drupal
https://www.acquia.com/downloads
for a quick way to have a Dev site or use Xampp.

Mary M.

Can't make it

ripinnh's picture

I'll be out of town on Thursday so I can't make it. However, I have not fallen off the face of the earth and I will be there next month. Sorry to miss the discussion that Bruce proposed. I expect that it will be a good one.

Roller Derby Practice has begun

tfhakala's picture

Assuming the weather is nice on Thursday, I'll be falling down on skates a lot. If it is like tonight, they'll cancel practice again and I'll be able to attend the meet-up.

Can't make it this time

ledzepp94's picture

Have a family emergency to attend to :(. Will catch the next one!

Another topic...

BruceDawson's picture

Mentors. I think I'm at the point where I'm willing to pay for some mentoring (not tutoring, but someone who can help me get past some hurdles.) And I'd like to know what the mentoring options are as well as what people's experiences are!

Another topic

Marge O'Brien's picture

I'd like to know more about the mentoring that's offered. I'm having a difficult time wading through the many possible routes to take in getting my website going, beyond HTML5, CSS3, and Dreamweaver, which are the three I've been studying. Need to know where frameworks and Drupal fit in. Will attend the Thursday 6-8 meeting, if this sounds appropriate.

Come to the Meetup!

miche's picture

Hi Margret!

I got your voicemail. I think you should join us this Thursday. You will have an entire room available to answer your questions!

And just to clarify, we have our formal meeting about Drupal between 6pm & 8pm and then we order food and more casually discuss things.

Hope to see you there,
Michelle


Michelle Lauer
michellelauer.com

I'm going to be a little late

mkmagu's picture

I'm going to be a little late getting to the meeting need to take the dog to the Vet's. Do I need to bring my HDMI cable??

Mary M.

Yes Please!

miche's picture

We bought an inexpensive 6ft one. But if you could bring yours as backup until we know ours works, that would be great!


Michelle Lauer
michellelauer.com