I have a menu in Drupal in the following structure:
-Gallery
--Gallery Item 1
--Gallery Item 2
--Gallery Item 3
--Gallery Item 4
-Videos
--Video Item 1
--Video Item 2
--Video Item 3
The Gallery and the Video items in the menu should be loaded dynamically from the content type gallery. My problem is that I don't know how to programmatically build and add menus items in the mentioned structure.
Thanks!
As I have mentioned here, Menu Views is an interesting module for Drupal 7 to automatically generate menu links using Views. It integrates seamlessly with menu modules such as Superfish and Nice Menus.
(PS: my reputation is not high enough to provide more than two links, therefore I have marked the other modules bold instead of providing hyperlinks)
-There's a module only available for Drupal 6 and below called Auto Menu - You can look at the source code and see how it's done, and convert it into a Drupal 7 module. Suggestion: Since its maintainers haven't committed for a long time, it's a chance for you to help out in the Drupal community by submitting your new module for Drupal 7.
-Alternatively, you can use the Views module and create a block to show the titles of your nodes as links, filtering by your desired Content Types and ordering by Content Type as well (to show Gallery items first, then the Video items).
-Plus, check out previous threads on this here and here.
Related
I'm pretty new to Drupal, I've done some maintenance works on some websites, but nothing very complicated.
I'm developing now a website with Drupal 7 and I would like to get some advice about the structure of my content to get what I need.
Here is the structure of my Main-menu:
|About us
| - item_about 1
| - item_about 2
| - item_about 3
|Contact
| - item_contact 1
| - item_contact 2
| - item_contact 3
In my main navigation, I have only the top level items of Main-menu (About us and Contact) without any drop down for sub items.
I would like to have a secondary menu (on the left) on About us page with sub items of About us. And I would like them to open inside About us page as a sub content, not in a new page.
Do you see what I mean? :)
Can I do this only with my Main-menu structure or do I need to change my content structure?
I check the Node Hierarchy module, but I'm not sure to see exactly how I can use it to fit my needs.
On the homepage, I would like to have three blocks with Contact's sub items content (and a Read more button).
How can I "query" like my Main-menu structure to get Contact's sub item linked page content?
Once again, is it possible with my current structure or not?
Please check below the solution to get menu blocks on desired page and set target attributes for the links
Menu Blocks
Menu Attach Blocks
Menu Attributes - allows you to set target attributes for links.
These three modules allowed you to achieve the desired one.
Hope this will help you.
Answer to your prayers is menu block module:
https://www.drupal.org/project/menu_block
With standard drupal installation when ever you make some menu you automatically get menu block for it. But it doens't have too much options.
Manu block allows you to create another block(s) out of your menu, but with more options. One of them is to select just a branch instead of whole menu tree and to select what levels of menu should be displayed in menu block you create.
If you need some more advanced block placing manipulation (what block to place where in what situation) check out on conntext module too:
https://www.drupal.org/project/context
i have got a menu structure like this:
-menu item level 1
--menu item level 2
---menu item level 3
all items are linking to the same node. now, if i visit the node only the first two items are displayed. what i found out is: when i change the link of the first level menu item to something else, all level get displayed right.
menu modules i use:
Menu block
Menu Settings per Content Type
Menu Trails
Administration menu
Auto Menu Title
Hierarchical Select
any ideas?
thanks
lukas
googletorp is right-- Drupal's core menu system isn't designed to handle this. However you can use a workaround.
Let's say that you'd like to create a nested menu in which one of the children links to the same path as its parent. Something like:
people/friends
people/friends
people/family
people/neighbors
This works in theory-- the menu items will take you to the correct page. But if you're relying on Drupal to correctly set the active trail and expand the correct sub menus, you'll have to use a bit of a workaround. You're basically going to create dummy nodes that will redirect to the desired page rather than creating two menu links that have the exact same path. The parent (in menu) will redirect to the child's node.
Method 1 (D6 only):
Download and install CCK Redirection
Create a Content Type 'Redirect Node' and add a CCK Redirection field to the content type
Create a page node (node 1) with URL "people/friends" and add a menu link
Create a 'Redirect Node' (node 2) and create a menu link for this new node.
Set CCK Redirection field to the URL node 1 (people/friends).
Set node 2's menu item to be the parent of node 1's
Method 2 (D6&7):
If you want to get really fancy, you can take a more user friendly approach by combining CCK's Node Reference module with the Rules module.
Download and install the Rules module (and Rules UI) and enable CCK's Node Reference module
Create a Content Type 'Redirect Node' and add a Node Reference (D6) (D7) field 'field_redirect_target'. Be sure to configure this so that it is required, and users cannot select nodes of type 'Redirect Node'
Add a new rule via the Rules module when content is going to be viewed if content is of type 'Redirect Node'
Redirect to page: [node:field_redirect_target-path]
Create node 1 of type page
Create node 2 of type 'Redirect Node'
Set Node Reference field to Node 1
Set node 2's menu item to be the parent of node 1's
This method is a bit nicer for users, since it doesn't require them to find the system path for the target node.
Depending on your setting, the menu module will show the active link it it's children. It is, however, not designed to search for more than a single link. This is why you wont get the full nested menu structure. My guess is, that the top one is the link it finds first, and that is where it stops. I can't remember the algorithm for the menu structure, you might have luck rearranging the menu structure, making menu 1 the last child. This is, however, not something the Drupal menu system is designed for, and you will not have an easy time changing this.
What are you trying to accomplish by linking the same node several times is a nested menu structure?
I solved my problem using menu first child. I didn't look at the code it uses, but it simply works. It's really a bummer that this doesn't work out of the box and you have to use such workarounds. But actually this increased usability for my case.
How would I be able to use the Drupal Fivestar voting module for voting on photos in a gallery without each photo being a separate node. I've used the Fivestar module for voting on seperate nodes, but making each photo in a gallery a node doeasn't seem logical.
The way voting module works, I think they'd have to be a node and not items of a node, because thats how it tracks votes.
What is gallery? Views, custom node/module, Gallery2 module?
What module used for images? image/imagefield/upload?
This is example scheme for building gallery with Views and Imagefield (CCK) and Fivestar voting:
1. Create Image content type with imagefield.
2. Create Gallery content type with one main imagefield (that will be visible in gallery listing).
3. Add to Image nodereference field that linked with Gallery
4. Via Views show Gallery listing: main imagefield and title links should lead to other Views, that show sublisting of attached via nodereference Images.
5. Other Views page catch argument from step 4, and show Images where nodereference = linked gallery
6. Attach Fivestar to Image and Gallery content types, so you can vote for both types.
7. VoilĂ
p.s. For one main imagefield you can automatically get first image of subimages, or generate thumbnail image. Navigating menus in gallery or breadcrumbs you should set in header/footer of Views via drupal api.
You should probably consult the documentation for the drupal VotingAPI
http://groups.drupal.org/taxonomy/term/233
You can take Nikit's approach of rethinking what is really an image gallery. I am assuming you problem with separate nodes is not the quantity of nodes created, but the tedious process to upload a single image one by one.
Check out a module like Image Fupload which can handle the uploading of multiple images and the creation of nodes for each of those images. Plus if you use it through the image module it can handle tagging all those images to same taxonomy (which could be your gallery-name, instead of using a nodereference in Nikit example)
another last option, try to find some random javascript that can do the rating independent of drupal, yes you will not be able sort in Views by most voted, but if you simply just want a 5 star rating and nothing else thats an option. I am sure some googling will find a sufficient script to handle that on the side.
I am building a website www.etutornetwork.com, in top menu I have included a link to a new content type [services]. I want to add a link in dropdown menu as soon as I publish new content in services.
Please Help, Thanks in advance.
and one more question, I dont want to give any name to one of the menu in the site. I tried using or leaving it blank, but it does'nt like this.
You can attach it in node creation time (see Menu fieldset), or use module like Auto Menu. Some more details about this module (from its project page):
The Auto Menu module automatically generates menu entries on node creation/edition. Parent menu item can be specified on a per content type basis.
This module acts when the menu section of a node is left empty only. So, users can still organize menus manually. Moreover, default setting for content types is to not create menu items automatically.
I use Taxonomy Menu, to create my secondary menu. It is very flexible to use. Some more details about this module (from its project page):
Features
Custom Menu per vocabulary
Uses the default taxonomy term path or custom paths
Integrate with Views
Integrate with Pathauto: use URL/path aliases
Does not interfere with other menu modules
You can take away the permission from users dealing with menus. Then when you are publishing submitted content from them, you can assign them a menu entry and control the title.
Other than that, you could use Views (since Services is a content type) to create a block that lists all Services with links directly to the node.
Either way, someone will have to title the nodes/menu items. It's easier administrative wise to remove menu permissions from users submitting content.
I'm trying to create a menu tree in drupal like this:
- term 1
node 1
node 2
- sub-term 1
node 3
node 4
+ sub-term 2
- sub-term 3
node 5
- sub-sub-term 1
node 6
+ term 2
etc.
(Sub-term 2 and term 2 are toggled closed.)
Some requirements:
Output this using something like JQuery Menu to get an interactive tree
Filter the nodes by cck type
Filter the nodes by cck field
Only have terms with nodes or other active terms in them show up
Mark the current node as such, and automatically open the tree to that point
Do I have to write this myself, or are there a combination of modules that can do it? I've got Advanced Taxonomy Blocks, which is pretty close, but it doesn't list the nodes.
Sounds like Taxonomy menu and the DHTML Menu module linked in the previous answer would get you pretty close. You'll need a view for your content to do the filtering. Here is an excerpt about Taxonomy menu from its project page:
Transforms your taxonomy vocabularies into menus with ease!
Features
Custom Menu per vocabulary
Uses the default taxonomy term path or custom paths
Integrate with Views
Integrate with Pathauto: use URL/path aliases
Does not interfere with other menu modules
I think this module will do what you want -- Taxonomy field menu.
It will build a traditional menu based on the connection between terms and nodes.
Just make your own custom menu and use the DHTML Menu module to make it expand/contract on click. Here is an excerpt from its project page:
... uses Javascript to reduce the number of page loads when using nested menus; this is particularly useful with Drupal's administration system.
Ordinarily in Drupal, in order to see the sub-items in a menu, you need to click the link of this item and wait for a full page load. After enabling DHTML Menu, clicking a menu link once will expand it to reveal its sub-items without reloading the page. A double-click on the item will load the page normally. Additionally, a cookie stores which menus are open and which are closed, so that the state of the menus remain consistent as you navigate around the site.