Jump to content

jwilkins

Members
  • Content count

    62
  • Joined

  • Last visited

Posts posted by jwilkins


  1. Rob,

     

    I just wanted to add 'another' big thumbs up to you and your KissMT Dynamic SEO Meta & Canonical Header Tags contribution. Since installing, I have seen an increase in sales by nearly 300%! That's without spending any time in making further use of your extended options. So, 300% increase 'out-of-the-box'. Not bad going! I highly recommend anyone using the other header tag contributions giving FWR Media's module a go instead!

     

    Thanks again,

    James


  2. I appreciate your work. I'm going to have a better look at it this weekend.

     

    When I made the conversion, there was a trade-off between doing stuff 'better', such as changing the infoboxes, and keeping it close to the stock site.

    I totally agree.. You've done an excellent job at retaining the original look, something which is very hard to do (considering how outdated the stock site looks! ;) ). Visually there won't be much difference apart from the product_listing table and a few "quirks" on the infobox styling (which I haven't got around to fixing just yet), but all the catalog files (and stylesheet) are now W3C compliant and I'm making good progress on the admin end..


  3. Jwilkins,

     

    It sounds like then your copy,

    http://code.google.com/p/blackgoggles-tableless-osc-plus/downloads/list

    has contributions installed? Which ultimately I think folks might prefer, but then that would mean the shop has to be installed with the admin side and database updated.

     

    Right now the OSC to CSS is 'contribution-free'.

    Ultimately that's what it will become, pre-built with contributions installed. However, at the moment, the site (built off a snapshot of GitHub 26/02/2010) is free from contributions that require any installation. That being said, it's a 'full site', so you can drop it into your dev environment (recommended) and run it up. It's good to go.

     

    In place of some of your code, I added a contribution that removed the need for the infoBox class (infoboxes now use <ul><li></li></ul> and CSS, plus your CSS product_listing enhancement (referenced on the download page at code.google.com)), which had a 'better' feel to it.

     

    Of course, this goes beyond what you had in place (some extra code has been removed, left over for Article Manager and X-Sell to make it a more 'stock' site), but for someone adept at 'merge-compare', or for yourself to merge the valid HTML into your contribution, it may act as a usefull addition. If not, then that's cool :)

     

    James


  4. When you have what you like for me to test for putting up on the contribution, post the link, and also post how you like to be identified, link, name so I can give credit where credit is due.

    I think that was intended for me?? If so, you can grab a copy now.. it's on Google Code, so anyone can take a copy.. http://code.google.com/p/blackgoggles-tableless-osc-plus/downloads/list

     

    This is "work in progress" at the minute and part of a larger picture.. i.e a "full" store all the "usual" contributions in place for people to use if they like. I plan to firstly valdiate the admin, then convert this to tableless, then add in some of the more usefull contributions, then to re-work the whole thing so that it feels a bit more Web 2.0.

     

    You'll notice that it's in 'RC' state at the moment.. so credits, working notes, finalised framework from the osC team, etc all need to be applied as I make some more progress.

     

    No credits are needed for me.. it's all your work to date anyway :thumbsup:


  5. This may or may not be of any use to people, but I have combined this contribution along with a GitHub snapshot as @26/03/2010. I needed to make a few adjustments to this contribution for HTML validation purposes and remove some of the code left over from testing other contributions (X-Sell, Article Manager etc). So now, the contribution validates across all pages (including all account, checkout pages etc) and is compatible with osCommerce's upcoming release.

     

    Due to the difference in base code, I haven't 'polluted' this contribution, but attach a link to where I'm further developing:

     

    http://code.google.com/p/blackgoggles-tableless-osc-plus/

     

    James


  6. I just wanted to pass on a message of gratitude to Rob for this excellent module and to encourage anyone who hasn't yet applied it to their stores, to do so!

     

    Why have I said the above? Well, since moving away from HTSEO (which was fiddly and time consuming) and now using KissMT instead, every facet of my SERP results has improved. Not only in the result pages (now that Google has begun re-crawling my site with great effect), but the fact that the effort by Rob has turned into sales... yes, £££!

     

    I have not as yet begun using KissMT to its full potential, rather just use an 'out of the box' scenario whcih has now generated me more income over the past 3 weeks than ever before! So I urge people to give KissMT a go! For those, who like myself, have a lot of projects on the go and use their ecommerce site as a secondary or tertiary source of income, this module will suit you down to the ground.. you don't have to do anything at all! Just think about your product descriptions (which you should have done anyway) and away you go!

     

    Once again, thanks Rob.. this has worked brilliantly for me!


  7. Ok, cool, will check the other files out and test (although I don't have php 5.3 yet but who knows when the host decides to upgrade and not tell me (again)...

     

    Thanks for the heads up. Now, if I send you my "To Do" list do you fancy having a bash? :thumbsup:

    Lol.. no problem.. I'll add it to my "to do" list too.. this "game" is never ending!

     

    Re: PHP 5.3 - there are a number of localhosts out there now offering PHP 5.3 as their runtime. It may be worth getting your hands on one to stay ahead of your host. You'll be surprised at how many deprecated functions need to be dealt with.. not just with this contribution..


  8. Jack,

     

    Just some thoughts and a bit of code I changed to suit. A friends site had a large number of disabled products that were being extracted within the all-products scrip. He wants to be able to retain the core osC function, but also run his all products code to output only those products that are set to active.

     

    Therefore I have changed the code lines below in *catalog*/all-products.php

    Original code:

    $firstletter = tep_sanitize_string($_GET['fl']);
    $where = '';
    if (in_array($firstletter, $letters) || in_array($firstletter, $numbers))
    {
       $where="where pd.products_name like '$firstletter%' AND p.products_status='1' ";
       $breadcrumb->add(NAVBAR_TITLE . '-'. $firstletter, tep_href_link(FILENAME_ALLPRODS_SEO, 'fl='.$firstletter, 'NONSSL')); 
    }
    

     

    Changed to:

    $where = "WHERE p.products_status='1' ";
    if (in_array($firstletter, $letters) || in_array($firstletter, $numbers))
    {
       $where= $where . "AND pd.products_name like '$firstletter%' ";
       $breadcrumb->add(NAVBAR_TITLE . '-'. $firstletter, tep_href_link(FILENAME_ALLPRODS_SEO, 'fl='.$firstletter, 'NONSSL')); 
    }
    

     

    And then a bit further down the file:

                $exist_query = tep_db_query("select 1 from " . TABLE_PRODUCTS_DESCRIPTION . " pd inner join " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c on pd.products_id = p2c.products_id left join " . TABLE_CATEGORIES . " c on c.categories_id = p2c.categories_id " . $whereLetters . " and language_id = " . (int)$languages_id . " limit 1");
    

     

    To:

                $exist_query = tep_db_query("select 1 from " . TABLE_PRODUCTS . " a, " . TABLE_PRODUCTS_DESCRIPTION . " pd inner join " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c on pd.products_id = p2c.products_id left join " . TABLE_CATEGORIES . " c on c.categories_id = p2c.categories_id " . $whereLetters . " and language_id = " . (int)$languages_id . " and a.products_id = pd.products_id and a.products_status = '1' limit 1");
    

     

    And one last one:

                  $exist_query = tep_db_query("select 1 from " . TABLE_PRODUCTS_DESCRIPTION . " pd inner join " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c on pd.products_id = p2c.products_id left join " . TABLE_CATEGORIES . " c on c.categories_id = p2c.categories_id " . $whereNumbers . " and language_id = " . (int)$languages_id . " limit 1");
    

     

    To:

                  $exist_query = tep_db_query("select 1 from " . TABLE_PRODUCTS . " a, " .TABLE_PRODUCTS_DESCRIPTION . " pd inner join " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c on pd.products_id = p2c.products_id left join " . TABLE_CATEGORIES . " c on c.categories_id = p2c.categories_id " . $whereNumbers . " and language_id = " . (int)$languages_id . " and a.products_id = pd.products_id and a.products_status = '1' limit 1");
    

     

    This now only pulls those products that are set to 'active' within the database and eradicates the listing of inactive products.

     

    I just thought I'd pass the idea along...

     

    James


  9. Hi Tigergirl,

     

    No problem.. In the latest version by Chris (and possibly ones preceding (although I haven't checked)), the function split() has been used. This has become deprecated (throws a deprecated error) in PHP 5.3.x and will be removed by PHP 6.0.x

     

    The files I edited for the updated package were all located in *catalog*/includes/modules/shipping/ *and then any rm__.php file for this contribution.

     

    The split() function can be replaced by a few others, I chose preg_split().

     

    If you like, PM me and I'll reply with my email address, whereby you can (if you wish) send over the files associated with this shipping contribution and I'll update them for you.


  10. PHP 5.3 deprecated function split()

     

    Hi Chris,

     

    Just working my way through PHP 5.3 locally (before my host upgrades!) and came across a the need to replace split() in the includes/modlues/shipping/xxx.php files. I have posted below my "workings", replacing split() with preg_split() (although explode() or others may be better used?!)

     

    For those who wish to stay ahead of PHP 5.3, these are the amendments to make (which will clear the deprecated warnings for split()).

     

    *catalog*/includes/modules/shipping/rmfirst.php find:

    	// Check if destination is a valid one for this method
    	if (defined('MODULE_SHIPPING_RMFIRST_COUNTRIES_' . $this->num_zones)) {
    		$countries_table = constant('MODULE_SHIPPING_RMFIRST_COUNTRIES_' . $this->num_zones);
    		$country_zones = split("[,]", $countries_table);
    

     

    Replace with:

    	// Check if destination is a valid one for this method
    	if (defined('MODULE_SHIPPING_RMFIRST_COUNTRIES_' . $this->num_zones)) {
    		$countries_table = constant('MODULE_SHIPPING_RMFIRST_COUNTRIES_' . $this->num_zones);
    		$country_zones = preg_split("/[,]/", $countries_table);
    

     

    Next find:

    	// Check if destination is a valid one for this method
    	$countries_table = constant('MODULE_SHIPPING_RMFIRST_COUNTRIES_' . $this->num_zones);
    	$country_zones = split("[,]", $countries_table);
    

     

    Replace with:

    	// Check if destination is a valid one for this method
    	$countries_table = constant('MODULE_SHIPPING_RMFIRST_COUNTRIES_' . $this->num_zones);
    	$country_zones = preg_split("/[,]/", $countries_table);
    

     

    Next find:

    		// Find the shipping cost
    		$zones_table = split("[:,]" , $zones_cost);
    

     

    Replace with:

    		// Find the shipping cost
    		$zones_table = preg_split("/[:,]/" , $zones_cost);
    

     

    *catalog*/includes/modules/shipping/rmfirstrec.php find:

    	// Check if destination is a valid one for this method
    	if (defined('MODULE_SHIPPING_RMFIRSTREC_COUNTRIES_' . $this->num_zones)) {
    		$countries_table = constant('MODULE_SHIPPING_RMFIRSTREC_COUNTRIES_' . $this->num_zones);
    		$country_zones = split("[,]", $countries_table);
    

     

    Replace with:

    	// Check if destination is a valid one for this method
    	if (defined('MODULE_SHIPPING_RMFIRSTREC_COUNTRIES_' . $this->num_zones)) {
    		$countries_table = constant('MODULE_SHIPPING_RMFIRSTREC_COUNTRIES_' . $this->num_zones);
    		$country_zones = preg_split("/[,]/", $countries_table);
    

     

    Next find:

    			// Check if insurance is available	
    			$compensation_table = split("[:,]" , $compensation_cost);
    

     

    Replace with:

    			// Check if insurance is available
    			$compensation_table = preg_split("/[:,]/" , $compensation_cost);
    

     

    Next find:

    	// Check if destination is a valid one for this method
    	if (defined('MODULE_SHIPPING_RMFIRSTREC_COUNTRIES_' . $this->num_zones)) {
    		$countries_table = constant('MODULE_SHIPPING_RMFIRSTREC_COUNTRIES_' . $this->num_zones);
    		$country_zones = split("[,]", $countries_table);
    
    

     

    Replace with:

    	// Check if destination is a valid one for this method
    	if (defined('MODULE_SHIPPING_RMFIRSTREC_COUNTRIES_' . $this->num_zones)) {
    		$countries_table = constant('MODULE_SHIPPING_RMFIRSTREC_COUNTRIES_' . $this->num_zones);
    		$country_zones = preg_split("/[,]/", $countries_table);
    

     

    Next find:

    			// Get any insurance values entered
    			$compensation_cost = constant('MODULE_SHIPPING_RMFIRSTREC_COMPENSATION_' . $this->num_zones);
    			$compensation_table = split("[:,]" , $compensation_cost);
    

     

    Replace with:

    			// Get any insurance values entered
    			$compensation_cost = constant('MODULE_SHIPPING_RMFIRSTREC_COMPENSATION_' . $this->num_zones);
    			$compensation_table = preg_split("/[:,]/" , $compensation_cost);
    

     

    Next find:

    			// Get the cost to ship to the destination zone
    			$zones_cost = constant('MODULE_SHIPPING_RMFIRSTREC_COST_' . $this->num_zones);
    			$zones_table = split("[:,]" , $zones_cost);
    

     

    Replace with:

    			// Get the cost to ship to the destination zone
    			$zones_cost = constant('MODULE_SHIPPING_RMFIRSTREC_COST_' . $this->num_zones);
    			$zones_table = preg_split("/[:,]/" , $zones_cost);
    

     

    This may take some time typing out the necessary adjustments for all files. Chris, I may upload a *new* fileset in the contribution page (could be a hell of a lot quicker!). However, let me know if you would rather compile the changes yourself (you may have updates to add anyway!)

     

    Cheers

    James


  11. PHP 5.3 deprecated function ereg_replace()

     

    Just working my way through PHP 5.3 locally and came across a the need to replace ereg_replace() with preg_replace(). In order to fix the deprecated function, navigate to:

     

    *catalog*/includes/functions/general.php and find this block of code:

     function tep_limit_text ($text, $maxchar, $wordlength = 40) {
       $text = str_replace ("\n", ' ', $text);
       $text = str_replace ("\r", ' ', $text);
       $text = str_replace ('<br />', ' ', $text);
       $text = wordwrap ($text, $wordlength, ' ', true);
       $text = ereg_replace ("[ ]+", ' ', $text);
       $text_length = strlen ($text);
       $text_array = explode (" ", $text);
    

     

    And change to:

     function tep_limit_text ($text, $maxchar, $wordlength = 40) {
       $text = str_replace ("\n", ' ', $text);
       $text = str_replace ("\r", ' ', $text);
       $text = str_replace ('<br />', ' ', $text);
       $text = wordwrap ($text, $wordlength, ' ', true);
       $text = preg_replace ("/[ ]+/", ' ', $text);
       $text_length = strlen ($text);
       $text_array = explode (" ", $text);
    

     

    This will fix a notice in your column_left/column_right.php

     

    James


  12. The index page is 90% of the time the landing page for customers. Cramming information into that welcome box is a superb SEO technique. However, it soon fills up and can look out of place with large amounts of text.....

    I see what you mean.. this should be fairly easy to implement on your site, depending on how your index.php is set out and how you administer the text on your index page. Let me know how you're set-up and I'll have a look at the code for you..

     

    James


  13. NIce site. Well laid out, pleasing to view and use.

     

    George

     

    PS here's a little fix for Wish list that will let your user send an email or return to shopping without hitting your menu or their back-button if they do not want to mail the list to someone. Replaces the send email button. Change your graphics accordingly.

     

    <td colspan="2" align="center">
    <?php
    	$back = sizeof($navigation->path)-2;
    	if (isset($navigation->path[$back])) {
    	echo '<a href="' . tep_href_link($navigation->path[$back]['page'], tep_array_to_string($navigation->path[$back]['get'], array('action')), $navigation->path[$back]['mode']) . '">' . tep_image_button('button_continue_shopping.gif', IMAGE_BUTTON_CONTINUE_SHOPPING) . '</a> or '; } 
    	echo tep_image_submit('button_send.gif', IMAGE_BUTTON_SEND_EMAIL, 'name="email_prod" value="email_prod"'); ?>
    	</td>

    You can see it at my ugly test site, http://www.designerdogregistry.com/

    George,

     

    Thank you for your kind comments! Isn't it surprising what you can create when you put your mind to it?!

     

    Re: your wishlist code - thanks again - I shall certainly consider using this on my site, very usefull indeed!

     

    Regards

    James


  14. It's an interesting concept- I've done this a different way. The way I did it was to simply hide the extra info using css, then have it appear when an action is performed (eg click on a read more link).

     

    You can see an example of what I am talking about here;

    http://www.easymenu.co.uk/aboutmenubuilder.asp

    Click your mouse in the email input box (you don't need to put in an email address).

     

    There are advantages & disadvantages to doing this your way and the way I did it.

    My way is certainly "sexier" lol

    Burt,

     

    Thanks for your comments, it's always good to get input into an idea you're working on! I should really be spending more time on populating my site, rather than coding things! However, it was alway meant to be a "simple" additional space to expand the description area. I may consider adding an "extra" lightbox/popup... but I have to say that I like your CSS idea! Looks really good.

     

    What I want to try and marry is: ease of use for the customer who wants to "read more" (reducing number of clicks etc) versus best/easiest route for a bot to index.. any thoughts on this would be welcome.

     

    Thanks again for the input!

     

    James


  15. An updated version has now been uploaded...

     

    This includes a suggestion by tomh (thanks Tom), to include an "add to cart" function to the bottom of the read_more page.

     

    Once again, the addition is fully W3C valid..

     

    Further improvements will be: address the read_more link text and to take a look at a popup/lightbox version rather than feeding through to another stand-alone file (as suggested by tomh)...

     

    Any other suggestions/development ideas welcome!

     

    James


  16. Version 1.1.1 Applies a "fix" to not correctly displaying the description on /read_more.php - omitted class="main".

     

    Update guides included within the new download or use the edit below:

     

    Find:

    <td><?php echo stripslashes($product_info['products_read_more']); ?></td>

     

     

    Replace with:

    <td class="main"><?php echo stripslashes($product_info['products_read_more']); ?></td>

     

     

    Now the description text will be inline with your stylesheet.css

     

    Done!


  17. Development

     

    1 - Integrate with Ultimate SEO URLs 2.1d - so your "Read More..." page will display as /my-great-product-prm-01.html

     

    2 - Modular integration with FWR Media's Ultimate SEO URLs 5 - rather than my included "edit" of Usu_Products.php

     

    Possibly a host more too...

     

    Any development ideas welcome and please post any bugs found on this forum thread.

     

    James


  18. Read More on product_info

     

    Support/development thread

     

    This simple modification to osCommerce allows one to provide more information relating to your products through a "Read_More" link on product_info.php. The read_more information link only appears if the database column is NOT NULL.

     

    Application/usage - I have plentiful information to provide on my products, some of which are quite unique. I didn't however want to "overload" the customer with too much information on the product_info page, rather allow the option to "Read More.." if they were interested. Thus the genesis of this module. Added SEO benefits with another area to build your word count!

     

    This module is fully W3C compliant @v1.0

     

    All bug fixes and development ideas welcome

     

    You can download the current version HERE


  19. Rob,

     

    I am putting together a very simplistic contribution that I would like to integrate a "drop on top" file-set for USU5.

     

    The idea is based on those members who wish to expand their product_description based on further information they have to impart on their customer base, without the wish to have an "expanded" product_info page or "bamboozle" the customer. The code allows an if NOT NULL "Read more..." text link through to a stand-alone file whereby more information can be accessed via the specific product_id.

     

    I have (locally) just used the /includes/module/Ultimate_Seourls5/modules/Usu_Products.php as the file to produce my -prm- indicator. I was, however wanting (for modular purposes) to provide a simple addon /.../Usu_Read_More.php so as to reduce the need to edit your code.

     

    However, is the product_id dependancy available to use for modules outside the Usu_Products.php file? I have attempted to "clone" the Usu_Products.php logic, omitting references to product_reviews etc, but have found an error 404 when I do. I can a only assume that this is due to the product_id previously being declared?

     

    Would you be able to suggest a work-around? Or if the product_id is a dependant, is the only way to integrate a new module, to provide an amended Usu_Products.php file?

     

    Kind regards,

    James

×