Limiting menu management - drupal

I am creating a website with Drupal 6.x that will have several content editors and several menus. I would like to somehow lock down their ability to add a piece of content as a top level navigation item. Is there a way to accomplish this?
Additionally, are there any modules that make the menu drop down in the content creation page a bit more user friendly?

The menu settings per content type module allows you to determine which content types may be added to each of your menus.

Are you sure you want to use the menu system? It's possible that you can use the views module to get something more flexible.

I have found several modules which look helpful for enhancing the menu system:
http://drupal.org/project/menu_editor
http://drupalmodules.com/module/menu-weight-assist
http://drupalmodules.com/module/ez-menu
http://drupalmodules.com/module/better-menu

Related

Orchard multiple language change for whole page but not content only

I'm building a site with Orchard which need to support two languages. I've installed Culture Picker Module which allowed me to separately input 2 languages for the same content. It looks pretty nice actually. However, when I click on the translations button, it only change the content, but for other elements like menu, it still remains in English. Is there any way to change completely for the whole page? Or how to make a global button of changing the language? Thanks a lot!
Click on Manage Content in Administration. You have to search for widgets and then add a part. After that, you search for Localization.
Then, go to the widgets area. You can select a widget like the menu, and then you can just simply add a translation and add the translated version of your menu as the other answer proposed.
Have you created the Localized version of your menu?

Drupal 7 Internationalisation (i18n) menus

I'm having a hard time getting to grips with menus when using the Internationalisation (i18n) suite for Drupal 7.
I have two languages set up for the site I'm working on - English and Welsh.
In the Multilingual Options for Main Menu, I've set it to Translate and Localise.
This appears to be fine, but creating the Welsh versions of pages creates nodes that themselves are not linked to the menu, so when they're displayed on the front-end, the menu structure is lost.
However if you do create a menu link for the translated page, you create a new menu item that essentially doubles up the menu size.
Which method is one meant to use? Do you have one menu structure per language and therefore try and work the code displaying the menus to only show the current language or can you somehow let Drupal know that English page N and Welsh page Y both attach to the same menu item?
As ever, any and all assistance given is greatly appreciated.
~Matt
Your best help will come from the drupal docs.
There are a few ways to setup multilingual websites and it wouldn't be possible to cover it all here.
https://drupal.org/node/275705
Follow the above tutorial as you will need to install quite a few modules. My guess is you may have to revisit your Drupal structure before being able to solve your issue.
I've had to work on a lot of French/English websites and the best thing I find is having separate menus for each language. Then use blocks to show your menus using the Language visibility settings. One better is to use the Menu Block module.
With this method you can end up having a lot of menus (as each menu needs to be duplicated per language). However I find content editors can much better grasp this separation, over the confusion of mixing menu items from different languages in the same menu.

Best practices to implement custom functionality on website

I was wondering if someone with Drupal experience could advice what are the best practices in the following situations. I think they are all common tasks for any website that you build.
Display a custom HTML of a certain content type at front-page (e.g., only the link and title).
Should I build a module only for this?
Customize the login form HMTL, including inputs, labels etc, to something very different from the default login block.
Again, another module?
Format the node view of some content types; for example: showing additional fields values. I have some Joomla experience and with it, it's very easy to override the template on your theme.
But with Drupal, it seems HTML is hard-coded on PHP files and there are very few thing that uses templates. Or am I missing something?
You should create a view (from Views module), and for this create display 'block'. This block you can use later on your site. Within your view settings you can choose what and how you will display.
It depends what you would like to put there. If you put just some static text, change theme could be a solution. But still, a bit smelly. What you should do, is to create a module use hook_form_FORM_ID_alter and add both - field to your form, and code to use values which user added.
Change templates for this content type in your custom theme; or use Panels module - here you have nice introduction; or use Display Suite module - which do pretty much the some work as creating a template
html is in php files, but where else can it go? Drupal also has it template overwrite system. The customization of the theme can be usually done using that alone.
As for your questions (there are also other alternative)
load the content type in view/block, display in list format on home page.
create your own theme for css changes. create custom tpl.php for
layout, and div naming etc.
same as above.
It doesn't hurt to create a new module, but generally it's not necessary unless you are going for something like a muti-step form.
You can use both Views & Panels in order to achieve what you've mentioned above.
For instance, Panels gives you the option to override the home page with your own content. This content can be organized with Views.
From drupal.org:
"The Views module provides a flexible method for Drupal site designers to control how lists and tables of content (nodes in Views 1, almost anything in Views 2) are presented."
"The Panels module allows a site administrator to create customized layouts for multiple uses. At its core it is a drag and drop content manager that lets you visually design a layout and place content within that layout."

adding a menu tab?

I am making a top menu, and it looks like this:
http://i.stack.imgur.com/5O5G5.png
The contact tab will remain in its place and the home tab has to be first.
IF the user wants to add another tab, they can in the cms editior (DNN) they would just create the link and wrap the div tag about the link etc..
im stuck to how i can get the css to add the menu tab and push the home tab to the left as the menu grows?
If sounds like you are trying to manually build the menu using HTML. What you need to do is ensure that you have the DNN navigation control as part of your skin and it will handle adding the menu items for you. You'll be able to modify the menu to look however you like using CSS.
The best way to learn DNN skinning is to look at one of the existing skins (found in /Portals/_default/skins/) and then copy one of the skins and start making changes to change it to your desired look.
The DNN skinning architecture is very well done and easy to pick up for anyone who knows ASP.NET (though it is different from Master Pages). The hardest part is picking and learning to work with the various navigation providers. Most people work with DNNMenu which is more complicated than it needs to be on the CSS Side. The DDR Menu which will be the default provider for DNN 6+ should be easier to work with. But the documentation for it isn't complete yet so it takes some learning to get started with it.

How to have a three column home page in Drupal

The home page of this site will have basically a 3 column layout.
I can create these as either content or blocks. I like using content because its easy for the user to understand, they login to the site, they browse to the page they want to edit, they click edit, but with blocks they have to go into Administer > Blocks etc
Any suggestions on this?
I would be managing the actual content as nodes(content) and then looking at blocks(or something like it) to arrange them how you like in your template regions.
If you are looking at creating custom home and/or landing pages, you might also want to look at http://drupal.org/project/panels - it can be a little heavy, but quite powerful for arranging content into columns and whatnot.
Not really sure what you're asking...
Administer > Blocks is for moving the blocks around into regions / disabling them, not really for creating content.
You can use the Node as Block module to easily turn your nodes into blocks, and they would still edit it from the content administration section.
Or, you could create a blank block, and in its associated template file (block-whatever.tpl.php) embed the node (node_embed, pretty much what the Node as Block module does) or query for it with a view and embed that (views_embed_view)
Or, if you're using views, you could create a view that queries for the node(s) you want and create a block display for that.
When you're actually building the Drupal site, you should consider what paradigm you're most comfortable with since there are so many ways to get your content together.
i would say boxes will help you. http://drupal.org/project/boxes
Many themes have block edit links/images as a part of them. Fusion is one such example.
I would suggest looking into Panels for layout and block editing, and also to download a version of open atrium. The layout management is uses is much easier than the administer blocks pattern.

Resources