Jump to content


  • Content count

  • Joined

  • Last visited

About mhormann

  • Birthday 07/19/1959

Profile Information

  • Real Name
    Matthias C Hormann
  • Location
    This same small planet where we ALL live.
  • Website
  1. mhormann

    Super no right click help!

    My strong opinion on things like this is: STAY AWAY. BECAUSE YOUR CUSTOMERS WILL. STAY AWAY. FROM YOUR STORE. And, hey, it's always easy to copy stuff nevertheless, if you want to. The only 'good' I can see in this contrib is that it claims to make the nasty 'image toolbar' on IE go away—but that should just not be in the BROWSER in the first place. It goes on everyones nerves. Believe me, if you start doing stuff like that, you'll lose more customers than you would lose by somebody copying a line of text or an image. I myself, for instance, just HATE it when web sites start (trying) to mess around with my browser, like changing size, defining window positions or deciding FOR ME which toolsbars and panes I have to use. This should just not be possible. Basta. Typical result: I just go away, try to set everything back to what I want in my browser, waste time on that, build up some hate against the web site and DEFINITELY never come back—be their offer as good as anything. And you can't imagine how many frustrated customers have called me for help because websites have made their browser's address or navigation bar vanish and things like that. Better focus on making your customers say "Wow!" instead of making them angry. Letting both sides win is they key, I feel... Matthias
  2. Just to let everyone know, I had to postpone work on this for a while, since I stumbled over image problems while doing it, and so I had to write "The Incredible Image Machine" first. This is now almost finished and will be released shortly, so I'll probably have some time again for the category/manufacturer stuff. Happy New Year!
  3. mhormann

    Complete Header Tags Help

    You might want to take a look here.
  4. mhormann

    Automatic Thumbnails Contrib 1484

    Problem is you can't specify 'quality' with imagecopyresample, and he outputs just the same type as came in, so cannot be sure if it is jpeg (and then use quality factor to save). Just wait for the new one... ;-) [or be sure it's ALL jpegs and then do like radders said]
  5. One more idea (and question): Would a 'global' admin switch be good like: 'Use LARGE images (y/n)?' which would be used throughout category, manufacturer, and product display to show LARGE images (say 200x300) instead of SMALL images (100x80)? If set to 'No', should all three have a 'popup' option like Product Info? Should this be selectable in the user's account info? (Like 'I have a slow modem and want small images only') Gawds what am I doing... committing myself to unpaid programming for weeks... ;-) Well, just let me know.
  6. Hi, all! I've been discussing with iwik, but want more feedback now in order to make a new contrib that somehow "does it all" and stays usable for most of us: Category Name as Page Heading (incl. sub-categories) Manufacturer Name as Page Heading Manufacturer Description (HTML), i.e. for people using manufacturers for "authors" or the like Category Description (HTML), to give customers more info on specific categories Category & Manufacturer Description should have the same 'look & feel' Both should be language-compatible (different language=different text) Should look good both when filled-in or not Should be easy to integrate with my coming-up modified 'universal' Header Tag Controller (based on Linda's) Should thus allow better SEO I've come up with the following scheme until now: Category & Manufacturer Description plus the 'better' Page Headings will go in ONE contribution—this will make it have the same 'look & feel' and integrating easier. The 'universal' Header Tag Controller changes will be a 'new' HTC 'version' as an update to the existing one. So it will be easy for those of us using it already. Both will work 'hand-in-hand' so HTC users might even use the new 'descriptions' for the <meta name="Description"...> field. Here's how far I've come today, and afterwards I'll ask you some questions... Now, my questions: Suggestions, please! What is bad, what could be better? Does anyone know if I can rely on 'almost' any browser being cable of doing a 'rowspan=3' on table data? Would a 'fixed' (set in admin) image size be wanted, apart from the size we already have for 'heading images'? (in my example 200x300 px?) Or just 'leave it out and take what comes'? On a mySQL 'TEXT' type field, what exactly does the attribute 'Fulltext' do? The admin 'interface' is now only done for Manufacturers, and it is simply ugly—just enough for copy/paste. I desire to have it like the admin 'product description'. Is anyone out there willing to help me here who has a good understanding of osC 'inner workings' and is willing to code following the 'osC Style'? Now I'm eagerly awaiting your feedback... (so I won't miss my kids so much on Christmas and having something to do...) Regards, Matthias
  7. Perfect. Thanks for your ongoing support, really! You might want to include 'xenu' in your spiders.txt, since some might now be more aware of this nice tool and start spidering around... and it can hit your site hard, if your robots.txt isn't carefully layed out. Btw, many SEOs use it also. My first try on a simple osC test installation gave around 65,000 links it spidered along, and about 510 MB log file. Imagine that guy hitting your site with 100 threads simultaneously plus CREATING SESSIONS. Phew! If you need to contact the Xenu's author, Tilman Hausherr, let me know. He's quite helpful and actually wrote my instructions down on how to "set sessions off for Xenu". He told me most users of his spider got sessions and was quite amazed that we could simply "switch them off"... ;-)
  8. Since I'm just spidering myself into a zillion sessions ;-) ... Say, if I wanted to set variants of a spider that comes up as either Xenu Xenu Link Sleuth 1.1e Xenu Link Sleuth 1.2f what would I put in? Just Xenu or better xenu Is it case-sensitive? Would it also catch if using "Link Sleuth" for example?
  9. I've made a few updates since... will post them later on. In the meantime, just be sure NOT to be too ambigous: The example using "shipping.php" is actually BAD! Since we do a simple 'strstr()' for the match, it would also catch "checkout_shipping.php"! (Not much of a problem actually, just name the array key "/shipping.php"...) And, yes: Be sure WHAT you put in the "all keys" and "all descriptions" if you append them using HTDA or HTKA = '1'. <OFFTOPIC> The description shouldn't get longer than about 180-255 characters, the keys also need some watching. There's different opinions on this, some say up to 900-1024 characters is okay, some say "don't put more than 9 well-crafted keywords in"... YOUR decision. To MY opinion, an "auto-keywords" generator must be VERY well crafted if you don't want to get punished by the SEs. And actually, if your content is rich enough, there should be no problem whatsoever. Just remember you CAN modify stylesheets and you CAN use H2..H4 and EM and STRONG in product descriptions... ;-) But don't overdo it. Too much keyword density gets you punished. </OFFTOPIC> For those who are not yet so experienced: If you define 'extra pages' like above said, don't forget to put the code in the page, i.e. modify for example '/catalog/shipping.php' like this: <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"> <html <?php echo HTML_PARAMS; ?>> <head> <?php // START: Header Tags Controller // Replaced by header_tags.php if ( file_exists(DIR_WS_INCLUDES . 'header_tags.php') ) { require(DIR_WS_INCLUDES . 'header_tags.php'); } else { ?> <title><?php echo TITLE; ?></title> <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>"> <?php } // END: Header Tags Controller ?> <base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>"> <link rel="stylesheet" type="text/css" href="stylesheet.css"> </head> This EXAMPLE does include some lines that are there before and need NOT be changed! It is just an example to show you where to modify what. Enjoy! Matthias
  10. Hi everyone. I just did a quick 'hack' to Header Tag Controller (v2.3.7) in order to be able to have some tags on several 'extra' (i.e., static) pages. I'd very much like some feedback from PHP/osC experts, since I'm not so sure if my modifications actually make sense or just increase load times too much. The idea was to have a flexible, language-dependent means of adding some tags to pages like 'conditions.php', 'privacy.php' and some others. As far as I know there is no simple way of declaring constant arrays, so I came up with the following—please comment: In '/catalog/includes/languages/english/header_tags.php', I add this: // define array of extra pages we want meta information for unset($HTCE); // unset it first $HTCE['shipping.php']['HTTA'] = '1'; // Include HEAD_TITLE_TAG_ALL in Title (0=no, 1=yes)? $HTCE['shipping.php']['HTDA'] = '1'; // Include HEAD_DESC_TAG_ALL in Description (0=no, 1=yes)? $HTCE['shipping.php']['HTKA'] = '1'; // Include HEAD_KEY_TAG_ALL in Keywords (0=no, 1=yes)? $HTCE['shipping.php']['HTTT'] = 'Shipping Header Tag Title Text'; $HTCE['shipping.php']['HTDT'] = 'Shipping Header Tag Description Text'; $HTCE['shipping.php']['HTKT'] = 'Shipping Header Tag Key Text'; $HTCE['privacy.php']['HTTA'] = '1'; $HTCE['privacy.php']['HTDA'] = '1'; $HTCE['privacy.php']['HTKA'] = '1'; $HTCE['privacy.php']['HTTT'] = 'Privacy Page Title'; $HTCE['privacy.php']['HTDT'] = 'Privacy Page Description'; $HTCE['privacy.php']['HTKT'] = 'Privacy Page Keywords'; In '/catalog/includes/header_tags.php', I modify the 'case ... default' as follows: // ALL OTHER PAGES NOT DEFINED ABOVE default: $found_extra = false; // Any extra pages defined in 'includes/languages/<language>/header_tags.php'? if (is_array($HTCE)) { // Yes, go check foreach ($HTCE as $the_filename => $the_extra) { // Is it this page? if (strstr($_SERVER['PHP_SELF'],$the_filename) or strstr($PHP_SELF,$the_filename)) { // We're it, go ahead $found_extra = true; // Make title $the_title = ($the_extra['HTTA'] == '1') ? $the_extra['HTTT'] . ' - ' . HEAD_TITLE_TAG_ALL : $the_extra['HTTT']; // Make Description $the_desc = ($the_extra['HTDA'] == '1') ? $the_extra['HTDT'] . ' ' . HEAD_DESC_TAG_ALL : $the_extra['HTDT']; // Make Keywords $the_key_words = ($the_extra['HTKA'] == '1') ? $the_extra['HTKT'] . ' ' . HEAD_DESC_TAG_ALL : $the_extra['HTKT']; break; } } } if (!$found_extra) { // None of the above cases, and no 'extra' page, go for the defaults $the_desc = HEAD_DESC_TAG_ALL; $the_key_words = HEAD_KEY_TAG_ALL; $the_title = HEAD_TITLE_TAG_ALL; } break; To my eyes it looks like a simple and flexible solution, but what do you think? Looking forward to your input, Matthias
  11. Thanks for the great idea to keep 'spiders.txt' up-to-date, Steve! If you haven't already, you might want to take a look at Search Engine World's 'robots4.txt', this is a nice list of 'known-well-behaving' spiders. I have used this info at times, since it also includes some of those that 'disguise' as browsers. Regards, and keep it up! Matthias
  12. mhormann

    cc_show() Class Support Thread

    By the way, in the line 'field' => $cc_show_cc->get_cc_images(false, '', '', '')), you can as well abbreviate to 'field' => $cc_show_cc->get_cc_images(false)), This would set parenthesis OFF and leave all others at default (align middle, width & height unchanged).
  13. mhormann

    cc_show() Class Support Thread

    jrickard: I've taken your code into my cc.php to check out, and everything is fine... (except you have another version, including the CVVNUMBER stuff, but the code seems alright). First things that come to mind: 1. You DID copy 'cc_show.php' to '/catalog/includes/classes/', right? If that's not done, it should give some PHP warnings & fatal error anyway. But then it also dies and leaves you with an empty screen below 'Payment Modules'. 2. You put your cc icon files in '/catalog/modules/payment/images/cc/'. Then again, if the directory or the files are missing, cc_show() is robust enough to handle that—it simply returns an empty string in that case (i.e., no images shown). 3. You did not, by chance, overlook the small little tiny 'return $selection;' statement AFTER all these title and field thingies???? THAT would indeed make the whole module NOT show up during selection phase. Here is the code you had, put into my cc.php and for comparison I give you the WHOLE function selection() here: function selection() { global $order; // Modified to work with cc_show() class and show credit cards accepted // Images stored in '/catalog/includes/modules/payment/images/cc/' include_once(DIR_WS_CLASSES . 'cc_show.php'); // NEW $cc_show_cc = new cc_show(DIR_WS_MODULES .'payment/images/cc/'); for ($i=1; $i<13; $i++) { $expires_month[] = array('id' => sprintf('%02d', $i), 'text' => strftime('%B',mktime(0,0,0,$i,1,2000))); } $today = getdate(); for ($i=$today['year']; $i < $today['year']+10; $i++) { $expires_year[] = array('id' => strftime('%y',mktime(0,0,0,1,1,$i)), 'text' => strftime('%Y',mktime(0,0,0,1,1,$i))); } $selection = array('id' => $this->code, 'module' => $this->title, 'fields' => array(array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARDS_ACCEPTED, 'field' => $cc_show_cc->get_cc_images(false, '', '', '')), array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_OWNER, 'field' => tep_draw_input_field('cc_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'])), array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_NUMBER, 'field' => tep_draw_input_field('cc_number')), array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_EXPIRES, 'field' => tep_draw_pull_down_menu('cc_expires_month', $expires_month) . ' ' . tep_draw_pull_down_menu('cc_expires_year', $expires_year)), array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_CVVNUMBER . ' ' .'<a href="javascript:popupWindow(\'' . tep_href_link(FILENAME_POPUP_CVV, '', 'SSL') . '\')">' . TEXT_CVV_LINK . '</a>', 'field' => tep_draw_input_field('cvvnumber')))); // End modified code return $selection; } So, now I REALLY oughta go to bed... :-))) Hope it helps, let me know... Regards, Matthias
  14. So this will be the support thread for my cc_show() class. First issue: http://forums.oscommerce.com/index.php?showtopic=125468# continued here... I'm pondering and checking, will come back (only it's now 4.49 AM, so I ought to get some sleep). Matthias
  15. I saw that with Jean-Luc Friez's update of Down for Maintenance v1.2 we now have the option of auto-updating the Admin's IP (in case you dial-in)—which is a very useful feature. The only problem is a very minor thing in the code that got overlooked: To make the contrib work, you HAVE to have an unused 'Configuration Group ID' (this is what people tell you to change in the SQL file, i.e. make it > 15). Now Jean-Luc already set it to '16' for all of us using MS2, only the Admin IP check still checks for a hard-coded '15' in the file '/catalog/admin/configuration.php'. You MUST modify this number to be THE SAME as the one in the SQL statements: Open '/catalog/admin/configuration.php' and find: // *** Add for getting the actual IP (when not fix) if ($HTTP_GET_VARS['gID'] == '15') { $IP_Admin = tep_db_prepare_input(getenv(REMOTE_ADDR)); $IP_Admin_DB_query = tep_db_query ("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'EXCLUDE_ADMIN_IP_FOR_MAINTENANCE'"); $IP_Admin_DB = tep_db_fetch_array($IP_Admin_DB_query); if ($IP_Admin_DB['configuration_value'] != $IP_Admin) { tep_db_query("update " . TABLE_CONFIGURATION . " set configuration_value = '" . $IP_Admin . "' where configuration_key = 'EXCLUDE_ADMIN_IP_FOR_MAINTENANCE'"); } } // *** end Edit so it will use YOUR NUMBER as group ID instead: if ($HTTP_GET_VARS['gID'] == '16') { (I used a 16 here, the number that currently is in the SQL file.) And voil?! It will auto-update your IP whenever you go to 'Site Maintenance' in your Admin Panel. Regards, Matthias