Soma Posted March 3, 2019 Posted March 3, 2019 Are you sure you did everything correct? I also installed a new latest master PW3.0.123, and added 2 multisites to test. Works fine here. Can you show the config or tell more about what you did? The allowed httpHosts should be entered in the config as well. And the multisite config is as shown in the readme. The default 404 page has always been the basic-page template in PW, and the ID is what you enter in the multisite config. This works fine. 1
bramwolf Posted March 4, 2019 Posted March 4, 2019 Hi Guys, I'm looking for a bit of input to find out what might be the best option for what I'm trying to achieve. What I want to create is one site, approachable from two domains. Domain1 should have the entire normal processwire site, and domain2 should be an almost exact copy of the original but with slight differences. The things that should be different on domein2: - On domain1 there are a lot a vacations available, all of these have their own page with all the info Including a checkbox field. If this field is checked it should be displayed on domein two otherwise it should be skipped - Domain2 should have different contact info on the contact page from domain1 - If the data from domain1 changes, this should automatically be reflected in domain2 It feels to me like I wouldn't need a entire MultiSite since I basically would want to show the site exactly as it is on domain1 but with a few conditions. I was thinking along the lines of: redirecting domain2 to domain1, and have the URL mask domain1. And in the template add something like this: if($_SERVER['SERVER_NAME'] == 'domain2.com'){ $domain2 = true; } if($domain2 == true && $page->checkbox == 1) { // show conditional domain2 content } And for the contact page maybe a second set of fields also embedded into the contact template? Again if $domain2 == true show the second set, otherwise the original set of contact fields. Does anyone think this is indeed the way to go, or have any better ideas of how to approach this? ?Any insights are greatly appreciated ? Thanks! Bram
dragan Posted March 6, 2019 Posted March 6, 2019 On 3/3/2019 at 2:58 PM, Soma said: Are you sure you did everything correct? Yes. However, I tried it first on top of a heavily customized site. I guess there were too many hooks or modules etc. that got in the way. This evening, trying it out on a clean fresh latest dev installation, it works like a charm. ??
dragan Posted March 10, 2019 Posted March 10, 2019 @Soma in your README, at the bottom, you write: Quote Since the whole concept is all a pretty hack, I found that it comes with some complications that can't be solved in an elegant way. So for example the biggest issue is that you can't crosslink pages via the RTE Link plugin, since it doesn't know about Multisite. So you'll end with wrong URL's when for example you link from a page of one site to a page of another site. If that's an issue it's still possible to copy the ProcessPageEditLink.module and modify the root parent for the page tree select. I'd be glad to help out with an example there. I was doing a few tests just now. For me, it all works wonderfully (well, at least in a local setup). Did you change something recently in that regard and forgot to edit the readme?
Soma Posted March 11, 2019 Posted March 11, 2019 16 hours ago, dragan said: @Soma in your README, at the bottom, you write: I was doing a few tests just now. For me, it all works wonderfully (well, at least in a local setup). Did you change something recently in that regard and forgot to edit the readme? Yeah that's not anymore. There's a parser on page render now.
Beluga Posted March 31, 2019 Posted March 31, 2019 The module is working otherwise great (thanks a lot!), but when visiting www. subdomain, the URLs of the rootParent children lack the domain. $siteRoot = $page->rootParent; $nav = ""; foreach ($siteRoot->children as $child) { $nav .= "<a href='$child->url'>$child->title</a>\n"; } This produces urls like https://pagename I can use <a href='/$child->name'> instead to make them work as relative URLs, but it would be nice to know what is going wrong. Setup: - Home - mysite.com - myothersite.com $config->MultisiteDomains = array( "mysite.com" => array( "root" => "mysite.com", "http404" => 27 ), "www.mysite.com" => array( "root" => "mysite.com", "http404" => 27 ), "myothersite.com" => array( "root" => "myothersite.com", "http404" => 1017 ), "www.myothersite.com" => array( "root" => "myothersite.com", "http404" => 1017 ) ); $config->httpHosts = array('mysite.com','www.mysite.com','myothersite.com','www.myothersite.com'); If I don't have the separate www. entries in MultisiteDomains, it does not work. It just throws me to the "Home" page, if I try to navigate to www. subdomain.
wbmnfktr Posted May 7, 2019 Posted May 7, 2019 Maybe I'm missing something here but I ran into minor problems setting this up for domains that contain a hyphen. First of all the setup is multisite AND multilanguage. PW 3.0.130, Multisite Module from Github, 3 domains, 2 languages Link from ProcessWire Backend: http://abelt.test/en/alexander-abelt.test/ gets wrongly redirected to http://abelt.test/en/alexander- and not to http://alexander-abelt.test/en/. In this case it's not a real deal-breaker as it's only a setup I need for some of my domains and I know how to work around this but nonetheless I'd like to know if I have to change something or if it is a hiccup here.
Soma Posted May 7, 2019 Posted May 7, 2019 5 minutes ago, wbmnfktr said: Maybe I'm missing something here but I ran into minor problems setting this up for domains that contain a hyphen. First of all the setup is multisite AND multilanguage. PW 3.0.130, Multisite Module from Github, 3 domains, 2 languages Link from ProcessWire Backend: http://abelt.test/en/alexander-abelt.test/ gets wrongly redirected to http://abelt.test/en/alexander- and not to http://alexander-abelt.test/en/. In this case it's not a real deal-breaker as it's only a setup I need for some of my domains and I know how to work around this but nonetheless I'd like to know if I have to change something or if it is a hiccup here. I think this can happen if your multisite root page name has also the domain name in it. You should avoid that. Just rename it to something else On 3/31/2019 at 9:34 PM, Beluga said: The module is working otherwise great (thanks a lot!), but when visiting www. subdomain, the URLs of the rootParent children lack the domain. $siteRoot = $page->rootParent; $nav = ""; foreach ($siteRoot->children as $child) { $nav .= "<a href='$child->url'>$child->title</a>\n"; } This produces urls like https://pagename I can use <a href='/$child->name'> instead to make them work as relative URLs, but it would be nice to know what is going wrong. Setup: - Home - mysite.com - myothersite.com $config->MultisiteDomains = array( "mysite.com" => array( "root" => "mysite.com", "http404" => 27 ), "www.mysite.com" => array( "root" => "mysite.com", "http404" => 27 ), "myothersite.com" => array( "root" => "myothersite.com", "http404" => 1017 ), "www.myothersite.com" => array( "root" => "myothersite.com", "http404" => 1017 ) ); $config->httpHosts = array('mysite.com','www.mysite.com','myothersite.com','www.myothersite.com'); If I don't have the separate www. entries in MultisiteDomains, it does not work. It just throws me to the "Home" page, if I try to navigate to www. subdomain. My guess is that this comes from the fact you have domain.com and www.domain.com. You want to avoid that, cause the script isn't clever enough to know which is which. In any case you want to avoid having two domains setup for the same site. You should redirect your www to non www or the other way around. 1
wbmnfktr Posted May 7, 2019 Posted May 7, 2019 4 minutes ago, Soma said: I think this can happen if your multisite root page name has also the domain name in it. You should avoid that. Just rename it to something else Ok... I see the problem. alexander-abelt.test shares one of the other domains abelt.test in it which I can't really avoid as these are or will be my domains (just with another .tld of course) I want to use later on. As this has no further effects on maintaining content, building menus and whatever so far I guess I can ignore that linking/redirecting issue for now. Thanks for pointing that out.
Soma Posted May 7, 2019 Posted May 7, 2019 Ah reading againg. 9 minutes ago, wbmnfktr said: Ok... I see the problem. alexander-abelt.test shares one of the other domains abelt.test in it which I can't really avoid as these are or will be my domains (just with another .tld of course) I want to use later on. As this has no further effects on maintaining content, building menus and whatever so far I guess I can ignore that linking/redirecting issue for now. Thanks for pointing that out. Ah reading again, I'm not 100% sure why this happens in your case. (but most likely what i said anyway :)) What is the setup config? And what Module version?
wbmnfktr Posted May 7, 2019 Posted May 7, 2019 2 minutes ago, Soma said: but most likely what i said anyway ? It works aside from that redirect issue so... I guess I will survive. ? 2 minutes ago, Soma said: What is the setup config? And what Module version? PW 3.0.130, Multisite Module from Github (says 0.1.2), 3 domains, 2 languages on Linux (Ubuntu), Apache 2.4, PHP 7.2 Page tree: config.php $config->MultisiteDomains = array( "abelt.test" => array( // domain name is used to map to root page "root" => "abelt.test", // page name for the root page "http404" => 1031 ), "alexander-abelt.test" => array( // funktioniert nicht mit /en/ auf Home "root" => "alexander-abelt.test", "http404" => 1029 ), "kettenburg14.test" => array( "root" => "kettenburg14.test", "http404" => 1030 ) ); $config->httpHosts = array('abelt.test', 'alexander-abelt.test', 'kettenburg14.test'); // $config->httpHosts = array_keys($config->MultisiteDomains);
Soma Posted May 7, 2019 Posted May 7, 2019 4 minutes ago, wbmnfktr said: It works aside from that redirect issue so... I guess I will survive. ? PW 3.0.130, Multisite Module from Github (says 0.1.2), 3 domains, 2 languages on Linux (Ubuntu), Apache 2.4, PHP 7.2 Page tree: config.php $config->MultisiteDomains = array( "abelt.test" => array( // domain name is used to map to root page "root" => "abelt.test", // page name for the root page "http404" => 1031 ), "alexander-abelt.test" => array( // funktioniert nicht mit /en/ auf Home "root" => "alexander-abelt.test", "http404" => 1029 ), "kettenburg14.test" => array( "root" => "kettenburg14.test", "http404" => 1030 ) ); $config->httpHosts = array('abelt.test', 'alexander-abelt.test', 'kettenburg14.test'); // $config->httpHosts = array_keys($config->MultisiteDomains); Yes the problem is most likely that both sites share the same names in it. abelt.test is in both setups and even in the root name. Just rename the root to something else more unique would do the trick. It's not something you would see anyway. "abelt.test" => array( // domain name is used to map to root page "root" => "abelt", // page name for the root page "http404" => 1031 ), "alexander-abelt.test" => array( // funktioniert nicht mit /en/ auf Home "root" => "alexander", "http404" => 1029 ), 1 1
wbmnfktr Posted May 7, 2019 Posted May 7, 2019 That did the trick perfectly! Changing root and the page names fixed it. Didn't really get that the page's name doesn't have to be the domain actually.
wbmnfktr Posted May 7, 2019 Posted May 7, 2019 An additional sitenote here: Changing the root name to something different than the domain is not enough. If that page name appears anywhere else at the end of an URL the hiccup is back. root = abelt Problematic page URL = /about-abelt/ Problematic page URL = /about/abelt/ Working page URL = /about-abelt-whatever/ As to make sure I don't run into any issues with this I changed my root page names to something a cat would write while walking over the keyboard. An additional sitenote here: Changing the root name to something different than the domain is not enough. If that page name appears anywhere else at the end of an URL the hiccup is back. root = abelt Problematic page URL = /about-abelt/ Problematic page URL = /about/abelt/ Working page URL = /about-abelt-whatever/ As to make sure I don't run into any issues with this I changed my root page names to something a cat would write while walking over the keyboard.
Soma Posted May 7, 2019 Posted May 7, 2019 21 minutes ago, wbmnfktr said: An additional sitenote here: Changing the root name to something different than the domain is not enough. If that page name appears anywhere else at the end of an URL the hiccup is back. root = abelt Problematic page URL = /about-abelt/ Problematic page URL = /about/abelt/ Working page URL = /about-abelt-whatever/ As to make sure I don't run into any issues with this I changed my root page names to something a cat would write while walking over the keyboard. An additional sitenote here: Changing the root name to something different than the domain is not enough. If that page name appears anywhere else at the end of an URL the hiccup is back. root = abelt Problematic page URL = /about-abelt/ Problematic page URL = /about/abelt/ Working page URL = /about-abelt-whatever/ As to make sure I don't run into any issues with this I changed my root page names to something a cat would write while walking over the keyboard. I don't have cats ? Yes that's true. I know the "redirect if domain name is found in url" would need even a much more sophisticated parsing method, but it gets too complicated for my brain. I think having random strings as root name would be a much easier solution. 1
wbmnfktr Posted May 7, 2019 Posted May 7, 2019 1 minute ago, Soma said: I don't have cats That could become a problem then. You should add it as a requirement to the module nonetheless. ? 2 minutes ago, Soma said: would need even a much more sophisticated parsing method, but it gets too complicated for my brain. Not needed when everything was set up correctly with this things in mind. You know about that and do the necessary things. I'm relatively new to this setup and had to work through this. Now I know too. 2 minutes ago, Soma said: I think having random strings as root name would be a much easier solution. It is. Actually it could make other things easier when debugging. As I see some weird strings instead of domain(.tld) now I don't falsely think of domain names and such things. I know right away it's something different and where it comes from.
arjen Posted May 22, 2019 Posted May 22, 2019 How do you guys handle developing on local machines regarding Multisite? Often I download the production database and I have different config.php, but I'm starting to dislike that approach ? I can off course put all the environment stuff in an .ini and read with parse_ini. $config->MultisiteDomains = array( 'www.realdomain.com' => array( 'root' => 'www.realdomain.com', 'http404' => 1045 ), 'realdomain.localhost' => array( 'root' => 'realdomain.localhost', 'http404' => 1045 ), 'www.anotherrealdomain.com' => array( 'root' => 'www.anotherrealdomain.com', 'http404' => 1046 ), 'anotherrealdomain.localhost' => array( 'root' => 'anotherrealdomain.localhost', 'http404' => 1046 ), ); I have a lot of domains in the multisite. Would love to hear your approaches.
Soma Posted May 22, 2019 Posted May 22, 2019 8 minutes ago, arjen said: How do you guys handle developing on local machines regarding Multisite? Often I download the production database and I have different config.php, but I'm starting to dislike that approach ? $config->MultisiteDomains = array( 'www.realdomain.com' => array( 'root' => 'www.realdomain.com', 'http404' => 1045 ), 'realdomain.localhost' => array( 'root' => 'realdomain.localhost', 'http404' => 1045 ), 'www.anotherrealdomain.com' => array( 'root' => 'www.anotherrealdomain.com', 'http404' => 1046 ), 'anotherrealdomain.localhost' => array( 'root' => 'anotherrealdomain.localhost', 'http404' => 1046 ), ); I have a lot of domains in the multisite. Would love to hear your approaches. I have a config-dev.php for dev server or local setup. and the "root" stays the same just the domains are different. 1
arjen Posted May 22, 2019 Posted May 22, 2019 Ah, the good old -dev approach. That might work here too. I used to have it everywhere, but I've switched to more generic config.php which reads a config.ini which is outside my version control. The big disadvantage here is when you have a lot of customisations in your config.php. Thanks for reminding me.
Spiria Posted May 22, 2019 Posted May 22, 2019 We have a local config.env.php file which is read by our general config.php. Everything that is commun is in config.php, but local settings are kept in config.env.php. In config.php: /** * Environment configuration file * */ $configFile = $config->paths->site . 'config.env.php'; @require_once($configFile); 1
dragan Posted May 22, 2019 Posted May 22, 2019 2 hours ago, arjen said: How do you guys handle developing on local machines regarding Multisite? You can also edit your local HOSTS file, so the domains always stay the same. Just remember to comment your hosts file when working on the live site ? 1
teppo Posted July 20, 2019 Posted July 20, 2019 @apeisa @Soma Just noticed that the modules directory entry for this module still points to the old repository, and also doesn't list Multisite as being PW3.x compatible. Would it make sense to update the entry to point to Soma's repository? We just did a similar shift for AdminBar, and Adrian made the necessary changes in the modules repo. Also, I'm currently not entirely sure which branch I should use – last I checked it seemed that "dev" was the one to use, but since then that has apparently been removed (or renamed) and now there are two branches left: master and dev2. Master is the one with most recent updates, so is that preferred over dev2, or vice versa? Sorry for all the silly questions ? 2
apeisa Posted July 20, 2019 Author Posted July 20, 2019 Totally OK for me. Another module that I haven't had use in about 5 years...
Robin S Posted October 1, 2019 Posted October 1, 2019 On 7/20/2019 at 10:18 PM, teppo said: Also, I'm currently not entirely sure which branch I should use – last I checked it seemed that "dev" was the one to use, but since then that has apparently been removed (or renamed) and now there are two branches left: master and dev2. Master is the one with most recent updates, so is that preferred over dev2, or vice versa? I also have this question. Which is the recommended branch to use? @Soma
Soma Posted October 7, 2019 Posted October 7, 2019 The dev2 I made to the master couple months ago. So the new commit is just a minor addition to the url parser. I think I had difficulties with making the dev2 to master and I couldn't delete the dev2 branch. ? 1
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now