Resolved – Error 495 in Drupal – panels_renderer_standard.class.php

Notice: Undefined index: settings in panels_renderer_standard->render_pane() line 495 panels_renderer_standard.class.php). this is the original error. this is my contribution to the issue on drupal.org

Posted by pjmcghee on October 23, 2013 at 8:46am new

Hey, I was able to resolve this error pretty easily. I had been working with some new styles, making a clone of an existing, changing styles around on a specific panel pane. then, i decided that i really needed to make the change to the entire column. so i added a style there and changed the panel pane style back to the original style. i then began receiving the error.

I was quite sure what was going on after reading this post (and thanks @merlinofchaos! for everything!). I recreated the offending, or broken panel pane to make sure it worked properly, deleted the original pane and saved the page. the error is now gone.

then, i added the original style to the new, recreated pane. now, all is correct and the error is gone. and i have the new style on the column so that i can style the whole thing the way that works best for me.

so there never was actually an empty style, i believe that the system just got a little confused with the multiple changes. that also seems to be consistent with some drupal panel behavior. sometimes you just need to delete and recreate rather than fix unless you want to really dig into the db. and i really don’t!

small price to pay for the amazing panels module. @merlinofchaos – you rock.

Drupal Panel Pages, CSS and Mobile Tip

If you use Panels for your layouts, add a column CSS class to the most left hand column of your layout. Since Adaptive Themes will place this column first after the header stuff, this class will more easily allow you to adjust the margins of your content relative to the header.

You’ll need to add a custom style to the column in the Page Manager layout. If you choose no stylistic choices at all you will wind up with something like this selector:

.region-plain-box-fp-25-left-col {
  1. background-color: #ffffff;
  2. color: #000000;
  3. margin-bottom: 10px;
  4. padding: 10px;

}

Note that the Administrative title (so that it can be reused) that I have used will show in the selector. Since I have added this late in the development, I have to adjust it to the current style of my page.
.region-plain-box-fp-25-left-col {
  1. background-color: rgba(0, 0, 0, 0);
  2. color: #000000;
  3. margin-bottom: 0;
  4. padding: 0;
  5. margin-top: -59px;
}
 I have added the Margin-top parameter to move all the content closer to the header for the 320px width layout. Sort of a hack, but a really useful one!

Variants and Node Add/Edit Overrides

Variants in Drupal allow you to reuse Panel Page layouts to make your life easier. You use Selection Rules to allow the system to decide what variant to use based on any number of criteria. In my case, I use Variants on the node add/edit form to provide a consistent interface between several different content types. As with many things Drupal, there are a few idiosyncrasies.

I have a custom content type called member-galleries. This holds images in a gallery like display. To render the add node properly, I had to learn the hard way that using

Image

the “Node Being Edited: Gallery Image form” is not the correct form to use. Even though Gallery Image is the field name that I gave the Image field on the content type that I created. It just seemed to make sense, right? And even worse, it appears when you test the functionality that this is the way to go. But, I kept getting a red herring error about file size when I would try to save an image. It turned out that the Variant really needed the “Node Being Edited” Base form instead. It appears to be exactly the same until you try to save a node of the content type.

Multilingual sites, translations and Selection Rules

I’m putting the finishing touches on my site and one of the things I have to do is translate a few stragglers on the UI. I use Bing Translator (see THIS for info about how to integrate this widget in Drupal 7) for translating externally generated content but since machine translation can be dicey, I try to translate as much as I can manually using Locale, Content Translation and other Drupal multilingual modules along with Selection Rules that look to the user’s profiled language. That way I can be sure the the UI itself is correct.

Image

The Translate Interface feature from Drupal makes it pretty easy to track down strings that have or need to be translated. But because of its modular nature, this isn’t consistent. For example, I have a content type called HTML Text that I user to insert, HTML, of course. This works like an object in OOP languages, the HTML (it can form a link, reference an image, just about anything) becomes a node and can be placed anywhere on your site that you need.

In this case I have an image and a link that point to a relative path on the site. The text for the link itself is in English and I need it to be in Spanish as well. But since this is one of the cases where you can’t use the Translate Interface UI (because it is a custom content type) I have to acheive this by creating a separate node with the same text in Spanish. Two nodes, one location. In this case the placement is done via a minipanel that will be nested inside a larger panel. So, in the minipanel, I “stack” the two minipanels as seen in the SS. You can see that I use a Selector Rule to choose this Panel if the site langauge is Spanish. You don’t see it but the top panel has the same rule for English. The language is set on the user object of the account. Since these are separate nodes, they have separate node IDs within the CSS. So be

Imageaware of how you implement CSS if the two nodes don’t style consistently.

Drupal has many quirks but I haven’t found one yet that can’t be worked around with a little creativity. This is certainly one such instance.

Panels Ajax Tabs

This module is so cool. Ajax is an awesome way to display/update/refresh content without actual page refreshes. And this module gives you a very easy way to integrate Panels and Ajax

Panel Ajax Tabs – https://drupal.org/node/1796032

I’m really surprised that there aren’t more installs of this awesome module. Anyway, using this, I am able to integrate tabbed Panel Panes (which for me are different Views) using minipanels into an Ajax enabled Pane, of sorts.

This allows me to display several different Views on one screen without having to do page refreshes.

Use two URLs to choose a different version of one variant

Hey hey. I haven’t posted in a while. I have been really busy doing some of the Codecademy stuff. And I have been learning a lot about Rules and some of the more granular ways to choose content on my site.

That brings me to today’s topic. I have One content type called research. I need to be able to use this content type on more than one node add/edit form for that one content type. So, I have one variant on the Node Add/Edit page in Page Manager. I thought that it might best to setup two variants at first then use some selection rules to choose based on the URL. Image

I looked at a few different ways to do this and the one that I have settled on is this. I have  one variant. I need to have one Panel on the page that is different from the other. So, I use a visibility rule for one panel and a different one for the other. Then, I placed both of those Panels on the page. Since it is a Node ADD/Edit variant, I have to work in the URL, node/add/research. so the rule for one panel is node/add/research/news and the other is node/add/research/courts. I created a menu that reflects these URLs and now I can get to the correct version of the one variant from URL selection rules on two different panel panes.

Undefined index: settings in panels_renderer_standard->render_pane() (line 495

I received this error after adding a content pane to a panel page. It really didn’t make much sense, looked like it might be related to a malformed machine name.

https://drupal.org/node/1055766 – here is some info about the error in general.

what i did to fix it was remove the last Views Content Pane that I had added and saved. The error disappeared.

I opened the View itself and saved that without making any changes and was able to readd the pane to the page and viola! no more error. Very odd….

Tab Tamer – Error from Node add/edit when using Panels and Variants

tab tamer is a great module. all the default drupal tabs along the top really throw off my css. so i found this great mod to help. tab tamer allows you very granular control over the system generated tabs.

When I chose “hidden” for the tab in tab tamer for the node/edit field the variant for node add/edit disabled itself. after testing a few things, i was able to get it working again by setting that specific tab to hidden.

Turn Aggregator items into true Drupal Nodes

Drupal 8 should address the longstanding issue with items from the core RSS aggregator module existing as simple db objects rather tahn nodes, which limits what you can do with them in many ways.

The core Aggregator is really a big deal for me. the db created from these items is one of the biggest draws to my site. So I have tried many things to work around the limitations of DB objects.

I flirted with the idea of dumping the table to a flat file then importing it. That would work, can be CRONed and all that. But I really want to keep my solution specific to Drupal and not engage in a one-off like that.

The core mod has a categorization interface that I really like. It allows me to go through 100s of items every day pretty quickly and assign relevant topics to one of about 20 categories.

So, this is what I did to get the aggregator db items into nodes.

I created a View of the Aggregator Items. I created an RSS feed based on this View. then I used Feeds Importers to import that RSS feed into a content type that I created just for that.  This will work and you will be able to get quite a bit of data from the importer. But it isn’t as flexible as I wanted. UI simply could not get all the fields that I wanted to come across, even when forcing fields. That will work, but I always got undesirable formatting for the links. Or the links would come across malformed, with the name of my site prepended to the URL for example.

I really can’t use the Feeds Importers module to import all of the items in natively either. It will work, And you can build an interface of sorts in Views using VBO to assign taxonomy terms to the items, but it is cludgy and doesn’t scale well. But that can be a viable method too if you don’t have a lot of volume.

So, I want to use the core module for its stability and ease of categorization. but I need to be able to do things like allow users to see the items and make comments on them. I say comments but I really mean take notes. So, I used a Views Content Pane (with override URL and AJAX enabled) with a Node Add/Edit Variant in a Panel Page to allow user to see the Aggregated items, drag URLs from the View, take notes and alter the View (that’s where AJAX is magic) from the same place. Here is a SS of what it looks like.

Image

Then, I created another View of the Content Type “Research” which is used to hold the notes, links and such. I created a simple Content Pane View that shows the title of the Nodes (I use the Private Module to keep these posts completely private) and enabled AJAX so that the View Content Pane refreshes without having to refresh the whole page. Now I have a very nice research interface for my member with an easy way to reference my data.

CSS to move an Image by Node ID

I have a way that I want to be able to show users help. I have a nice ? icon for this purpose and I have

Image

added a title to the image itself which will display as a hover. I have added the image to a Panel Page via a Panel Pane by the Node ID assigned by Drupal, in this case 960. But I want it to overlay a different pane. So, I place the Pane with the image at the bottom and then I use a CSS rule that affects only the node 960. See the screen shots. I simply add the position of absolute and the proper margin spacing to get the image where I want it to be.

Since the CSS is based on a specific node, which is presented by Drupal as an ID, the CSS rule is formatted like this. Done and done.

#node-960 {

Image

position:absolute

margin:-69em 0 0 47em;

}