Drupal and Multi-sites? - drupal

I just want some opinions on what's the best way to go about meeting the following requirements.
I have
One main Drupal Installation
It is a typical "listings" site where users can list items
One user can have how many ever "listings" that are linked to his account
I want to be able to create sub-accounts, that use the same base site. However, for each subsite:
Only the users listings must appear on his site
It must have a completely different theme.
It must have its own menu items
The site must run off it's own domain OR subdomain
I need some answers:
Is this possible, or will each user need a completely new Drupal installation and just use a web service or something to get its listings from the main site?
What modules / components will make my life easier?
Any other suggestions to make this as simple as possible?

The problem description is not detailed enough to give a fully sound advice (and - additionally - it looks like you could probably get better advice on a drupal specific forum, as the question seems more related to installation and configuration than to programming), however - from what I understand - it looks to me that your solution could give in either of the two directions:
Tweaking a single installation to appear as different sites
Creating multiple sites that shares the same codebase and part of the data
The tweaking solution has the advantage that you have only one DB to mantain, but there is no actual real separation between the subsites. You could implement this by:
SUBSITES: mapping various subdomains on the same IP
CONTENT: using the native permission system to filter which list items to display (for example: each logged user can display only nodes created by himself, or set to be visible to its role, or having as associated taxonomy term its username...)
THEMES : if subsites will be used only by logged-in users, use the same mechanism that you would use for filtering content [each user can natively pick a different theme if you allow them to], if they must appear with a different look also to anonymous users, then use the URI to pick up the appropriate theme (if visitor X reaches the site via user1.example.com the site will have the blue theme, whilst if the URI is user2.example.com the theme will be pink).
The multiple sites solution has the advantage that you have a real separation between subsites (with even a different DB). But you would then have to either sync or transfer "on the fly" data between the main site and the subsites. If you go for this solution, you should probably take a look at the following links:
the services module, which allows to easy set up webservices
this page explaining how to connect drupal to different databases (surely faster than using webservices... reasonable solution if you for example have sites and subsites running on the same server)

I didn't want to stick this in a small comment but I am in agreement with mac on many of his points (upvote!).
The best way would be to create your subdomains and have them be symbolic links in the site folder to the default / main-domain folder.
Given what you have told us, you are much better off creating a module that creates its own node types (or even just CCK) and use a combination of the permission system (CCK offers this as well through content_permission), Views, etc. No need for separate sites, just need users to look at their own content.
The beauty of this approach is you can use Flag to allow user's to friend each other, use Views to allow them to see friend's lists, etc.
Theme's can be set on the account level, so no issues there.
"Have their own men" - does this mean have their own block on the sidebar or header than has customized links or a completely different menu SYSTEM? Will need clarification before I can answer that.

Related

How to create multi site on WordPress

I want to create somethink like this. But i don't know how exactly to do it. As you can see, we have multilingual and multicontent site (btutton at the top of site).
First decision it's create two folders in main domain directory and install two different sites. But i think it's not good idea, because it would be to hard manage this sites.
Please help.
you can create a multisite using Wordpress Network .
I don't think a multi site is the way to go. Multi sites are useful when you have multiple sites that use the same styling, plugins, custom PHP, etc but unique content. Typically, multi sites each have their own domain.
It depends a little bit on how distinct you want your two sub-sites to be, but if you're trying to replicate the Vogel's website, I would suggest you just create a few extra pages for your unique content. If you look at the Vogel's site, the consumer/professional toggle is essentially just a link to two different landing pages. You can easily save the choice that users make via cookies so they always see that page as the homepage in the future.
For the multilingual aspect, you can use a plugin like WPML to take care of that for you. It really isn't necessary to build an entirely new site unless you expect everything (including styling, plugins, etc) to be completely different.

Drupal website with 20 languages, Should I go with Multisites OR one Multilingual site?

So, I have to build a website with 20 different languages, each language will have custom domain name. The Website will display products with details, some of the products will be available in two under tow different domains(language/ region), the others will be only for one. Accounts on the website will be available for people from the company to put translation and manage their own content based on their own language, BUT we need some users can have ability to access all of the translation with one login.
Now, by default I was thinking about One website with multi language, then I thought about having multisites installation since that make it easy for the people who have to translate their own content without dealing with seeing the other content or hit 'Translation button'.
Pros and Cons I came up with:
it would be easier to have for the people from different countries to
deal with their own content and have full customization to their own
instance, While for one instance site it will be complicated since I
have over 50,000 products.
it would be hard in the future to add new functionality for the
Multisites since we have to add it for the 20 instance. (not sure if
thats correct), while if we use One website it will be one change for
all.
What about one login?? not sure if there is a module support that.
But yeah this is my situation, Please help me from your experience to decide which one would be the best choice and why. Take in mind all of the will share same look and feel. But they will be 20 languages with 20 custom domains and 10s of thousands products and nodes. Should I go with D7 or D8?
Thank you, I appreciated.
Multi language is your solution here because you are sharing product and administrators/webmasters.
The module domain access (https://www.drupal.org/project/domain) will give you what you need in term of domain name management.
Multisite does not share configuration so if you want to add something to all domain you will have to configure it 20 times.
And if you need to add some modules for only 1 domain you can use Context (https://www.drupal.org/project/context) to specify your rules of display.
If I were you I will go with D7 because there is lot more stuff available right now, but the migration will be hard if you think about migrate to D8. And many modules are not develop for D8 right now so it s more secure to use Drupa7.

security issues with user-supplied CSS?

I am not very good at putting on my "black hat" and figuring out what a nefarious user might be able to do with a certain type of open door. I'm working on an app that is planned to have such a door and would like some help figuring out how to protect it.
Imagine a site that is a distant cousin to WordPress. It is a content creation and hosting site for specific vertical markets with features to make it more appealing to those markets (compared to the many existing more general alternatives).
On such a site you want to enable the users to cook up their own look and feel for their content. I'm planning a sort of 3 tiered approach to that. 1) provide some selectable "templates" to choose between, 2) provide specific points of additional adjustability (vis. select background color, font-family, etc.) and 3) as a backup for the truly format obsessed customers, the ability to supply a CSS file for use on their pages.
It is about the security hole(s) that might be created by this last item that I wish some help. First and foremost, what sorts of nefarious things can a black hat accomplish from unfettered access to such a door? Is there anything they could do there that would adversely affect any pages that don't specifically include that CSS? Is there anything they could do through malicious CSS to gain some sort of system access? Is there any standard way of filtering user-supplied CSS to prevent (most of) these exploits?
thanks much!
Unless you're doing some sort of preprocessing (LESS, SASS, etc), there should be no risk to your server. The risk is that your users could modify the page in ways you weren't expecting.
Will your site contain any content that users aren't allowed to modify? Maybe a unified toolbar at the top where any user can sign in to their dashboard? A user could modify the CSS on their page to create a phishing attack for other users of the system.
Are you going to put ads on the page? A user could modify the CSS to direct any ad clicks to their own destination.
If any of the content on the page is outside of your users' control, you probably shouldn't let them upload custom css.
If the entire page can be controlled by the user (like in a custom site hosting environment), then custom css should be fine.
Do not allow them to upload anything of the sort, give them a user interface to modify their look and feel. This way you are limiting the damage they can do.

Wordpress - preserving office location in blog

Here's a puzzler: I'm doing a site for a client that starts with a landing page that links to his four law offices, each with a color coded header and office info. They all have content specific to their offices, no problem. But they also have some content that's universal, like a blog. How do I put the blog in for all the offices but preserve the office info on those pages? No, I do not want to use frames, but yes, that's the idea I'm talking about.
Couple different ways you could approach this, generally depending on how much information you need to share across the offices, whether you have requirements on how these different offices are administered, and generally how similar the content is.
The first decision to make is whether to use Single Site setup (in which they technically operate as one WP site), or a Multi-Site setup (in which you could use one common theme, but the posts/pages are administered independently - you could still use a plugin like http://wordpress.org/plugins/network-latest-posts/ to share blog posts, but you'd want to make sure it meets your needs beforehand). More on this decision here: http://mashable.com/2012/07/26/beginner-guide-wordpress-multisite/, and setup here: http://codex.wordpress.org/Create_A_Network.
If you opted to go single-site, then one simple option may be to create page hierarchies, with the parent-level pages as Office A, Office B, Office C. If it's only a couple things that need to change based on the office (e.g. header colors, simple branding or info), then you could make a function that checks highest parent-level page (using get_post_ancestors - http://codex.wordpress.org/Function_Reference/get_post_ancestors), and use that result to determine which offices' branding you should use.
Best of luck!

WP Document Revisions and user groups with different permissions per group

I have a question regarding WP Document Revisions. I have a client with a parent company and 14 sister companies underneath it. What they're looking to do is to have a document repository where all documents get stored, but the trick is that each sister company has their own financials that should stay visible only to top management in that sister company but needs to be visible to all Executives in the parent company.
I've looked into WP Document Revisions and it does pretty much what I want concerning the document part, what I can't figure out though is how to create user groups and setting permissions for those user groups. In other words:
Set up an Executive Team group with permissions to view and edit the documents
Set up an Top Management group per 14 sister companies each with their own permissions
And then when the different users log in they should only see the documents that's set with their individual permissions.
Can anyone please help me with this, I've searched high and low but can't seem to find an answer, even if there's a different plugin that would better enable me to do the above, I'd be grateful for the help.
Regards,
Anina
I am the lead developer of WP Document Revisions. The above should be relatively easy to do as you described. There are two ways to do it:
First, you could set up a WordPress multisite install, and have individual subsites for each subsidiary, with one parent site for the parent corporation. Executives would have a login on all sites, while managers would have a login for their individual subsite, and for the single parent site. The advantage to this approach would be flexibility (if you'd like to use the workspace for other tasks, branding, etc.) but this flexibility would come at the cost of complexity (setting up 14 subsites).
The alternative approach, and perhaps what I would recommend depending on your needs, would be to group documents into a custom taxonomy (perhaps "companies"), and then base capabilities on what company the document is assigned to. This would allow you to have one single site, and could assign capabilities based on the proven and tested WordPress Roles and Capabilities system.
The functionality described in the second option does not yet exist out of the box, but is a relatively minor undertaking and is actually already under development for a potential "Pro" version of the plugin.
I hope the above is helpful. If you would be interested in discussing customizing the plugin to your needs, either as described above, or otherwise, please feel free to contact me directly.
Update: Updated link to contact information as Stack Exchange was blocking e-mail links.
I believe I have a working version of an add-on plugin that should do exactly what you're looking for. The file is here ( https://github.com/benbalter/WP-Document-Revisions-Code-Cookbook/blob/master/taxonomy-permissions.php ) and would be installed like any other plugin.
A bit more information is listed on the last question of the FAQ ( https://github.com/benbalter/WP-Document-Revisions/wiki/Frequently-Asked-Questions ), but in short, out of the box it will make a "departments" taxonomy, and will create capabilities based on any departments added. You would then install and activate Members, if you have not already, and use the interface members provides to add roles and assign capabilities.
You can tell the plugin to create and use any different taxonomy (e.g., "company" instead of "departments"), as described within the file.
It may not be 100% stable as it hasn't been tested in the wild yet, but it should work. Please let me know if it works for you, or if you'd prefer to have me set it up, etc.

Resources