Best practice for displaying multiple views in a single page - drupal

I am working on a Drupal 7 website where there are many pages which utilize multiple views.
The way I am doing this right now is by creating a page from Drupal admin panel, and in the edit mode of that page I am calling views_embed_view to display those multiple views.
Other ways I could do this is by creating a template for that page, and putting my code inside the template.
Yet another way is to use View Fields View (https://drupal.org/project/views_field_view) and embed the second view inside the first one.
I want to know, performance wise which is the best practice?

Create view for main page, then attach all other views to it.
Use panels and add all required views.
For Performance you need to optimized your views and monitor using Devel tool.
Cheers!!!

Related

Is there a drupal 7 module to change/filter content in a view via tabs that are not placed inside of the view?

I have a library page with some taxonomy topics(resource types) that are currently being filtered by some really hacky tabs that I would like to replace to do two things:
1) get new, more user friendly tabs, with the capability to be placed outside of the view yet change content inside the said view.
2) be able to have the tabs grouped together in a way I can manipulate them with css.
I am fairly new to the drupal world. What would you suggest? Thanks!
Do you use exposed filter options?
If so in the advanced tab of the view you have a option 'Exposed form in block' this way your exposed filters will be placed in a seperate block.
After saving the view you have to enable the block

How to show two views on one page in drupal

How can I show multi views on single page in Drupal?
I need to show two results, (maybe you can think 2 tables, but actually 2 views) on one page.
Anyone please help me.
You can use the panels module. That will allow you to put views in different types of layout on a page. And take arguments as required.
You can do it by creating a page with your first view. For the second view you have to create a block and add it to that page.
btw: please use https://drupal.stackexchange.com/ for drupal specific questions...
As laebs suggested one way is to create block view and to add it to some region when your page is displayed.
Other way would be embedding the view from template file:
https://api.drupal.org/api/views/views.module/function/views_embed_view/7
With this function you can specify which view and which display you want to embed. You can also pass the parameters this way.
And notice that you have "embed" display type (it may be hidden by default - check view options). If you use it you'll also get those nice "edit view" links when embedding view this way.
There are two ways that I know of without using other modules:
Use the Views Header/Footer area to load another view. Just click "Add" in the Head/Footer area of the Views UI and you should see "Global: View area".
Create a page template and insert the views that you'd like to have on the page within the template using some Drupal API php:
<?php
$view = views_get_view('view_machine_name');
print $view->execute_display('default', $args);
?>

drupal replacing default nodes with views page

I have created a page view using field style to display a list of teasers as I want. fields configuration in views allows us to link the field to it's node. but what if we have created view for node detail page and want field to link to it's relevant view.
I had the same question, and after a bit of research this is what I've concluded:
The views module isn't intended to replace a default node view. I say this because of the level of difficulty involved in doing this and the lack of information on how to accomplish this. Ryan Weal has posted a way to accomplish this by editing your node template that doesn't look too difficult to accomplish, and here is the link.
However, it seems that a more popular solution, especially if you are like me and don't like to get into editing theme files. You can use the Display Suite module to effectively reformat the default node content as you would like.
I'm not sure if I understand you properly, but it sounds like you are wanting to display a view in a page view of a node?
In order to do this, you could:
create a small module, using hook_nodeapi() or one of the D7 replacements for this function in order to insert the output of the embedded view into this page's content, by conditionally adding a $content element when the node is of the appropriate id
or (easier, but requires allowing input type PHP) embed the view right on the page.
http://thedrupalblog.com/embedding-view-drupal-6-using-views-embed-view for information on embedding views

Drupal 7- How to make a custom module for only front page?

so..I created page--front.tpl.php in my theme directory and it works fine.
now, how do I make a variable that can be used in the page--front.tpl.php?
I can write my php codes inside page--front.tpl.php, but I think there is a better way.
added:
on the front page, I am going to query video and news nodes ONLY. That is why I want to make a new module for only front page.
any suggestions?
I'm not sure what you are trying to achieve here, but OK. You have two options: one is what you're doing now. Write your custom PHP in page--front.tpl.php and you'll be fine. The other is ditching the file and working only with page.tpl.php.
The variable $is_front tells you whether you're on the front page. You can write custom PHP in a conditional block: if ($is_front) { ... }.
Also, you can create a custom block (a view, perhaps, depending on your needs) and set its display restrictions to "only on the listed pages" - and list there. You'll have a custom view loaded only on the front page.
All you need to do have a custom front page is configure your front page in the site information settins (admin/settings/site-information in D6).
Creating a module to display that content is then a completely different thing.
What I would really suggest is looking at Views if you don't know it already. That allows you to build lists of things (nodes, users, ...) and expose them as pages, blocks, rss feeds and much more. You can create a list of nodes with types video and news, expose that as a page and then just point your front page to the path of your view.
you might try using the views module to create your list of videos and nodes. You can set a views page to be your homepage in the site settings.

Concatenating 3 views in one page

how could I concatenate 3 views in one page ?
Should I use blocks ?
You can use blocks, but Views provides an attachment display as well. Attachment displays can be attached other other displays within the view. So, you could create your base view, then create an attachment display that attaches to the base view, and then create a second attachment display which attaches to the first attachment display.
Attachment displays are good if each view is really just another way to view the same query (like, a summary view and a detail view). But if you wanted to combine three disparate views, blocks would be the way to go. Either create a block display for each view and add them to the same region in Site Building -> Blocks, or create a page display for one of the views and block displays for the other two.
A third option would be to use View Reference, which lets you reference views as CCK fields, if you needed the views to part of a node.
It probably depends on your layout.
if you want to embed a view in somewhere else besides your block regions, you could try the embed views module I also believe the the panels module has a much more dynamic way of rendering multiple views on the page (but flexibility also adds some to the complexity)

Resources