You are here:  » Multiple Site Search


Multiple Site Search

Submitted by mikecdprice on Tue, 2014-09-23 05:30 in

Hello,

Is it possible to install price tapestry for each merchant catalog where they would appear on the merchant page.

The user would click on the merchant, it would only show the merchants categories and the user can search the merchants catalog.

If they wanted to search ALL merchants (each on their own _prefix) is it possible it would show the results?

Is this possible?

Submitted by support on Tue, 2014-09-23 11:28

Hello Mike,

Not easily I'm afraid - of course it could be done, but would require many conditional changes however there is possibly a much easier way to achieve what you want. You could create multiple installations of Price Tapestry, using sub-directories equivalent to the merchant name e.g.

/Merchant-A/
/Merchant-B/

etc..

...and then simply replace the index.php with the minimal code required to show all results, which is just:

<?php
  $_GET
["q"] = "bw:";
  require(
"search.php");
?>

Only minor modifications would then be necessary to your template, for example by removing the link to browse by merchant from html/searchform.php (if using 14/06A as your base, otherwise no changes required as the link is in index.php in earlier distributions).

If you are familiar with basic Linux server admin you could create a common top level /html/ folder so that you only need to maintain one copy of your template, for example with a layout that would look like:

/Merchant-A/
/Merchant-B/
/html/

And then replace the html/ sub-directory of each installation with soft link to the top level common version e.g.

html => ../html/

Let me know if you need any help setting that up of course if the above is something you'd like to try...

Cheers,
David.
--
PriceTapestry.com

Submitted by novashariff on Mon, 2015-04-27 08:41

Hi David,

If i want to do the same for different categories and create different sub-folders for each category with price tapestry installation, do i have to do the same for database like create an new database or create tables in the same database with different prefix ?

i want to keep a common search for all categories, is it possible?

my second question is:

How will the feeds recognise the categories when we upload feeds? like in which category, as i will be creating my own categories. how to assign a feed to a particular category?

pls advice.

Submitted by support on Mon, 2015-04-27 08:56

Hello novashariff, and welcome to the forum.

No need to create separate databases - in fact, it makes a common search much more straight forward. Instead, just use a different value for $config_databaseTablePrefix in each installation.

I will follow up to this reply shortly with generic common search code for the benefit of other users implementing this approach.

What I normally suggest with the multiple installation approach is to assign one installation as your "master" installation, and in this installation use the Automation Tool to manage jobs for all feeds, so it will only be your master installation that contains feeds in its /feeds/ folder.

Then, in your master installation, go the /admin/ > Tools > Support info and make a note of the Install Path, which will be something like:

/home/username/public_html/master/

To this, add feeds/ to derive the file system path of the feeds/ folder of your master installation, e.g.

/home/username/public_html/master/feeds/

...and use this as the value for $config_feedDirectory at line 4 inconfig.advanced.php, e.g:

  $config_feedDirectory = "/home/username/public_html/master/feeds/";

This approach means that you can use any feed in any installation, and the usual way to limit the import to only those categories required for any particular installation is a Drop Record If Not RegExp filter against the category field, using a value e.g.

(Category 1|Category 2|Category 3)

i.e. a pipe separated list of each category that is to be imported, all enclosed in brackets which makes a valid RegExp - make sure that there are no superfluous spaces at all.

When you come to setting up CRON, for the master installation use cron.php with the command derived for you via Setup > CRON e.g.

cd /home/username/public_html/master/scripts;/usr/bin/php cron.php

...and for all other installations just schedule import.php @ALL e.g.

cd /home/username/public_html/other/scripts;/usr/bin/php import.php @ALL

Hope this helps!

Cheers,
David.
--
PriceTapestry.com

Submitted by support on Mon, 2015-04-27 15:03

Hi everyone,

I've created a top level "site search" script for searching multiple sub-directory installations and displaying the installation category name (linked to search.php in that installation) and result count. The script is available for download, and the code body can be preceded and followed with your home page header / footer content or used as required.

The code begins with a $sites array that needs to be populated with the list of sub-directory category installations to be included in the search, for example:

  $sites["Category 1"] = "installation-one/";
  $sites["Category 2"] = "installation-two/";

...where the array keys are the category name to be displayed, and the corresponding values the relative installation-folder name of that category installation, including the tailing "/".

Cheers,
David.
--
PriceTapestry.com

Submitted by bodybuildingcom... on Wed, 2018-01-17 23:02

Hi David,

I am wondering how to implement the 'sitesearch' into the new 16/10A version? I have downloaded the 'Multiple Site Search' from your download area, but I realise the above instructions were written nearly three years ago. I am wondering if it is still valid?

I had to move away from my previous niche idea as the feeds were not really great. For my new niche idea, I am breaking down the site into different sub categories.

I would need a search form/search box which can search the various categories. I have seen at least two different versions on the forum from previous years, but I would assume these would be outdated with version 16/10A.

Thanks.

Norbert

Submitted by support on Thu, 2018-01-18 11:33

Hello Norbert,

Site search as per the download is good for 16/10A!

Cheers,
David.
--
PriceTapestry.com

Submitted by Antony on Fri, 2020-06-05 07:24

Hi David, hope you're well!

I have a multiple instal for various countries, and Im working on the top level index page where I would like to use one of the instal directories (ie. /UK/ or /US/) as a "source" to render common elements to maintain consistancy. for instance is could use the example.php but I cant work out how I would go by amending "requires" (bellow).

Is it even possible to do or do you have any suggestions?

Thanks

Antony

require("includes/common.php");

require("html/header.php");

require("html/menu.php");

require("html/banner.php");

...

require("html/footer.php");

Submitted by support on Fri, 2020-06-05 07:40

Hi Antony,

What I would suggest would be to put a copy of the html/ folder in the top level to use not only as the "master" but also to serve default.css and vendor scripts (jQuery etc.).

With that in place, first edit html/header.php (in the new master top level html/ folder) and look for the following code beginning at line 22:

      <link rel='stylesheet' href='<?php print $config_baseHREF?>html/vendor/foundation.min.css' />
      <link rel='stylesheet' href='<?php print $config_baseHREF?>html/vendor/foundation-icons.css' />
      <link rel='stylesheet' href='<?php print $config_baseHREF?>html/default.css' />
      <script src='<?php print $config_baseHREF?>html/vendor/jquery.min.js'></script>
      <script src='<?php print $config_baseHREF?>html/vendor/foundation.min.js'></script>
      <script src='<?php print $config_baseHREF?>html/vendor/foundation.topbar.js'></script>

...and REPLACE with:

      <link rel='stylesheet' href='/html/vendor/foundation.min.css' />
      <link rel='stylesheet' href='/html/vendor/foundation-icons.css' />
      <link rel='stylesheet' href='/html/default.css' />
      <script src='/html/vendor/jquery.min.js'></script>
      <script src='/html/vendor/foundation.min.js'></script>
      <script src='/html/vendor/foundation.topbar.js'></script>

And then in the main scripts, in place of html/ use ../html/ for example where you have the following code:

 require("html/header.php");

...REPLACE with:

 require("../html/header.php");

Hope this helps!

Cheers,
David.
--
PriceTapestry.com

Submitted by Antony on Fri, 2020-06-05 08:04

Hi David, thank you for your response ... I see what you mean. All paths within each instal would point to ONE NEW html folder rather than within its respective folder. So could actually have multiple advandages as well so any changes wont have to be replicated... is that it?

Great thanks!

Ant

Submitted by support on Fri, 2020-06-05 08:16

Hi Ant,

Exactly. After creating the one new top level html/ folder and made the scripts point to that instead of a sub-directory of their installation, you can just make changes in one place and they will instantly apply to all installations...

Cheers,
David.
--
PriceTapestry.com