Jump to content

ecartz

♥Ambassador
  • Content count

    2,235
  • Joined

  • Last visited

  • Days Won

    9

Reputation Activity

  1. Thanks
    ecartz got a reaction from Denzel in Use Search-Engine Safe URLs   
    False.  Once upon a time, search engines paid attention to things that were in the domain and path but not query parameters.  So it made sense to put things like product ID in the path rather than query parameters.  But all major search engines (Google, Bing, Yahoo, etc.) can handle query parameters now. 
    It was never quite right anyway and is totally useless now.  It just makes it look like you have duplicate pages.  The only reason it's still in core is that I haven't deleted it yet.  Maybe next month. 
    If you really want better URLs, then install something like Ultimate SEO URLs or similar. 
    That's not quite right.  It takes the = signs out too.  https://www.myshop.com/product_info.php/sort/4d/cPath/22/products_id/829
    What it should do is make it look like https://www.example.com/product_info.php/products_id/829?sort=4d&cPath=22 but it's really an inferior solution.  Better to use an SEO URLs contribution so you can get the keyword benefits.  E.g. https://www.example.com/stamps.html?sort=4d&cPath=22
    Note that Amazon.com does this like https://www.example.com/1989-German-first-class-stamp/dp/[product_id]?what=ever and then just ignores the first thing after the domain.  But they only do that for new products.  For old products, they leave the https://www.amazon.com/exec/obidos URLs even though Obidos has been turned off for more than ten years. 
    Anyway, when I delete SEF URLs, I plan to make it easier for people to make their own URL Apps.  Ideally I'd like to upload SEF URLs as an App in the marketplace. 
  2. Thanks
    ecartz got a reaction from Denzel in Use Search-Engine Safe URLs   
    False.  Once upon a time, search engines paid attention to things that were in the domain and path but not query parameters.  So it made sense to put things like product ID in the path rather than query parameters.  But all major search engines (Google, Bing, Yahoo, etc.) can handle query parameters now. 
    It was never quite right anyway and is totally useless now.  It just makes it look like you have duplicate pages.  The only reason it's still in core is that I haven't deleted it yet.  Maybe next month. 
    If you really want better URLs, then install something like Ultimate SEO URLs or similar. 
    That's not quite right.  It takes the = signs out too.  https://www.myshop.com/product_info.php/sort/4d/cPath/22/products_id/829
    What it should do is make it look like https://www.example.com/product_info.php/products_id/829?sort=4d&cPath=22 but it's really an inferior solution.  Better to use an SEO URLs contribution so you can get the keyword benefits.  E.g. https://www.example.com/stamps.html?sort=4d&cPath=22
    Note that Amazon.com does this like https://www.example.com/1989-German-first-class-stamp/dp/[product_id]?what=ever and then just ignores the first thing after the domain.  But they only do that for new products.  For old products, they leave the https://www.amazon.com/exec/obidos URLs even though Obidos has been turned off for more than ten years. 
    Anyway, when I delete SEF URLs, I plan to make it easier for people to make their own URL Apps.  Ideally I'd like to upload SEF URLs as an App in the marketplace. 
  3. Like
    ecartz got a reaction from TomB01 in USPS Rate V4, Intl Rate V2 (official support thread)   
    The ones that remain are the ones that change from store to store.  For example, your catalog directory might be in the root at / or at /catalog/ or at something like /shop/.  Each store can choose to do something different.  Meanwhile, images/icons/ is always images/icons/ -- there is very little reason to ever change it.  Even if you did want to change it in the URL, you could use something like mod_rewrite so that the directory structure would stay the same. 
    In general, most of the constant ones have gone, leaving only the few variable choices.  I find it rather unlikely that we'd take out more of the DIR_WS values (except possibly DIR_WS_HTTPS_CATALOG).  More likely to go would be HTTPS values and USE_PCONNECT.  USE_PCONNECT because mysqli does that in the DB_SERVER.  The HTTPS values because very few stores used mixed HTTP and HTTPS today.  So why support something that no one uses? 
    The two DIR_FS_DOWNLOAD values may go.  And STORE_SESSIONS. 
    The following are pretty safe, although the HTTP ones might get renamed (or not): 
    define('HTTP_SERVER', ''); // eg, http://localhost - should not be empty for productive servers define('HTTP_COOKIE_DOMAIN', ''); define('HTTP_COOKIE_PATH', ''); define('DIR_FS_CATALOG', dirname($_SERVER['SCRIPT_FILENAME']) . '/'); // define our database connection define('DB_SERVER', ''); // eg, localhost - should not be empty for productive servers define('DB_SERVER_USERNAME', ''); define('DB_SERVER_PASSWORD', ''); define('DB_DATABASE', 'osCommerce'); DIR_WS_CATALOG is defined elsewhere, but also pretty safe. 
  4. Thanks
    ecartz got a reaction from Denzel in Use Search-Engine Safe URLs   
    False.  Once upon a time, search engines paid attention to things that were in the domain and path but not query parameters.  So it made sense to put things like product ID in the path rather than query parameters.  But all major search engines (Google, Bing, Yahoo, etc.) can handle query parameters now. 
    It was never quite right anyway and is totally useless now.  It just makes it look like you have duplicate pages.  The only reason it's still in core is that I haven't deleted it yet.  Maybe next month. 
    If you really want better URLs, then install something like Ultimate SEO URLs or similar. 
    That's not quite right.  It takes the = signs out too.  https://www.myshop.com/product_info.php/sort/4d/cPath/22/products_id/829
    What it should do is make it look like https://www.example.com/product_info.php/products_id/829?sort=4d&cPath=22 but it's really an inferior solution.  Better to use an SEO URLs contribution so you can get the keyword benefits.  E.g. https://www.example.com/stamps.html?sort=4d&cPath=22
    Note that Amazon.com does this like https://www.example.com/1989-German-first-class-stamp/dp/[product_id]?what=ever and then just ignores the first thing after the domain.  But they only do that for new products.  For old products, they leave the https://www.amazon.com/exec/obidos URLs even though Obidos has been turned off for more than ten years. 
    Anyway, when I delete SEF URLs, I plan to make it easier for people to make their own URL Apps.  Ideally I'd like to upload SEF URLs as an App in the marketplace. 
  5. Like
    ecartz got a reaction from TomB01 in USPS Rate V4, Intl Rate V2 (official support thread)   
    I wouldn't say it that way.  What should be replaced is
    " . TABLE_CONFIGURATION . " and it gets replaced with
    configuration So that the string looks like
    insert into configuration ( It will sort of work if you replace TABLE_CONFIGURATION with configuration, but it will generate a notice that may appear in the logs.  And of course if anyone ever made a constant named configuration, it would break. 
    Normally, I'd recommend replacing
    $this->icon = DIR_WS_ICONS . 'shipping_usps.gif'; with
    $this->icon = DIR_WS_CATALOG . 'images/icons/shipping_usps.gif'; Because that will work regardless of where the catalog directory is located. 
    If you use the <> tool to insert code in the forums, it will be easier to tell it from the surrounding text. 
  6. Thanks
    ecartz got a reaction from Chadduck in Google XML Sitemap SEO   
    Found it.  The App is called Store Configuration Monitor and it has a bug in its helper functions.  In admin/includes/functions/general.php change the two functions to
    function tep_configuration_update($cID, $configuration_value) { $configuration_values_query = tep_db_query("select configuration_value, configuration_title, configuration_description from configuration where configuration_id = '" . (int)$cID . "'"); $configuration_values = tep_db_fetch_array($configuration_values_query); tep_db_query("insert into configuration_changes (change_date,previous_setting,new_setting,change_title,change_description) values (now(),'". tep_db_input(tep_db_prepare_input($configuration_values['configuration_value'])) ."','". tep_db_input(tep_db_prepare_input($configuration_value)) ."','". tep_db_input(tep_db_prepare_input($configuration_values['configuration_title'])) ."','". tep_db_input(tep_db_prepare_input($configuration_values['configuration_description']))."')"); // Check to see if the configuration value changed is the Store Owner's Email address - if it is send a configuration change notification to the existing Email address on file. if($cID == 3) { tep_mail(STORE_OWNER, $configuration_values['configuration_value'], EMAIL_CONFIGURATION_CHANGE_TEXT_SUBJECT, EMAIL_CONFIGURATION_CHANGE_TEXT_BODY, STORE_OWNER, $configuration_values['configuration_value']); } tep_mail(STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS, EMAIL_CONFIGURATION_CHANGE_TEXT_SUBJECT, EMAIL_CONFIGURATION_CHANGE_TEXT_BODY, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS); } function tep_module_change($action, $class) { tep_db_query("insert into configuration_changes (change_date,previous_setting,new_setting,change_title,change_description) values (now(),'','". tep_db_input(tep_db_prepare_input($action)) ."','". tep_db_input(tep_db_prepare_input($class)) ."','')"); tep_mail(STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS, EMAIL_CONFIGURATION_CHANGE_TEXT_SUBJECT, EMAIL_CONFIGURATION_CHANGE_TEXT_BODY, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS); } Then you should be able to update values normally in admin. 
  7. Like
    ecartz got a reaction from SuperPower09 in Creating Custom Sessions   
    In osCommerce, the session_start() is always done for you in includes/application_top.php.  You should not trigger it yourself.  It is done as early as possible. 
    To do what you want, try
    if (!tep_session_is_registered('custom_session')) { $GLOBALS['custom_session'] = []; tep_session_register('custom_session'); } Then just use $GLOBALS['custom_session'] as you would normally.  If in global context (outside a class or function), you can access it as $custom_session.  You'd have to do this after tep_session_start is called.  And you probably should wait until after the extract($_SESSION , EXTR_OVERWRITE+EXTR_REFS );
  8. Like
    ecartz got a reaction from greasemonkey in UPS XML 1.7 for Phoenix   
    Well, right now we don't have the necessary hook.  So let's add it.  See here.  Find
    $action = (isset($_GET['action']) ? $_GET['action'] : ''); Add before it add
    $OSCOM_Hooks->call('modules', 'preAction'); Now, in includes/hooks/admin/modules/ create a file called canadapost.php or upsxml.php or whatever.php.  I'm going to proceed as if named whatever.  In that file, create a class named hook_admin_modules_whatever, e.g.
    class hook_admin_modules_whatever { function listen_preAction() { if (isset($_GET['module']) && 'whatever.php' == $_GET['module'] && isset($_GET['action']) && 'save' == $_GET['action'] && isset($_POST['configuration'])) { foreach ($_POST['configuration'] as $key => &$value) { if (isset($value) && is_array($value)) { $value = implode(', ', $value); if (false !== strpos($value, '--none--')) { $value = str_replace(', --none--', '', $value); $value = str_replace('--none--, ', '', $value); $value = str_replace('--none--', '', $value); } } } unset($value); } } } My suggestion would be that whatever should be the name of the module.  Note that in the
    'whatever.php' == $_GET['module'] whatever must be the name of the module. 
    After you test that this works, I'll ask Gary to make the core change so that in future versions, you don't have to change admin/modules.php
  9. Like
    ecartz got a reaction from azpro in Global Product Notifications   
    Is it more important than
    1.  Allowing catalog display code to be used in admin?  So the store owner can, for example, register a new customer using the same features as are available on the catalog side. 
    2.  Allowing store owners to choose what fields (including new fields) and in what order to show on the create account page? 
    3.  Better install options for both the store itself and for Apps so that files can be uploaded without giving the web user permissions on folders. 
    4.  Allowing more control over what pages require login and which don't so that Apps like Purchase without Account don't require core changes. 
    5.  Adding more compatibility Apps for functionality removed from core. 
    6.  Allowing store owners to make language specific configuration, e.g. a different store name in different languages.  Or different payment modules installed. 
    7.  Making it easier for App developers to make modules that import or export data. 
    8.  Allowing store owners to make template changes without changing core code and enable designers to make separate templates that don't need to change core code. 
    9.  Better ability for App developers to turn off core functionality and replace it with custom functionality.  E.g. for KISS  IT Thumbnailer. 
    10.  Make it so that order total and payment modules interact better such that a payment module based on line items (e.g. Paytrails) will automatically be updated when someone installs a new line item order total module (e.g. the Gift Wrap module). 
    11.  Allow translators to export all the language defines into a single file, translate that in there, and then upload back to osCommerce. 
    12.  Include the Option Type Feature in core (supports free text and image attributes). 
    13.  Allow stock keeping on different variations of the same product while still allowing options that do not keep stock separately.  E.g. different sizes of T-shirts might be separate while custom embroidery would use the same stock. 
    14.  Allowing notification methods other than email. 
    15.  Simplifying the checkout process. 
    Most of those are from my TODO list, although the first is something on which Gary is working and the last three are requested but not assigned. 
    I would guess that there are far more store owners wanting to track stock on variations than there are wanting to send more emails from inside osCommerce.  Why?  Well, for one thing, there has been an App for such stock tracking since almost the beginning. 
    And a newsletter manager is an example of something that would be relatively easy to implement outside of core.  Particularly the way that things are implemented now.  It's also worth noting that it isn't that hard to export the email addresses of customers who signed up for newsletters or notifications to an external mailing program with much better email handling. 
    Anyway, my point is that if we were going to pick a large project, and updating the newsletter manager would be a large project, it would make more sense to update core to support tracking stock on variations.  As that is always going to require core modifications.  So better to bring it into core than force people to hack support on as an afterthought. 
    It makes more sense to concentrate core development resources on things that have to be done in core than on things that can be released as Apps.  Because core development resources are limited.  And the truth is that a Newsletter Manager is exactly the kind of thing that could be implemented as an App.  In fact, I think I'll add "Migrate Newsletter Manager to App" to my TODO list as part of #5 in the list above. 
    Unless a Newsletter App becomes overwhelmingly popular, that's not functionality that really needs to be in core.  Particularly as we've moved away from email subscriptions to things like Facebook and Twitter. 
  10. Like
    ecartz got a reaction from azpro in Global Product Notifications   
    Is it more important than
    1.  Allowing catalog display code to be used in admin?  So the store owner can, for example, register a new customer using the same features as are available on the catalog side. 
    2.  Allowing store owners to choose what fields (including new fields) and in what order to show on the create account page? 
    3.  Better install options for both the store itself and for Apps so that files can be uploaded without giving the web user permissions on folders. 
    4.  Allowing more control over what pages require login and which don't so that Apps like Purchase without Account don't require core changes. 
    5.  Adding more compatibility Apps for functionality removed from core. 
    6.  Allowing store owners to make language specific configuration, e.g. a different store name in different languages.  Or different payment modules installed. 
    7.  Making it easier for App developers to make modules that import or export data. 
    8.  Allowing store owners to make template changes without changing core code and enable designers to make separate templates that don't need to change core code. 
    9.  Better ability for App developers to turn off core functionality and replace it with custom functionality.  E.g. for KISS  IT Thumbnailer. 
    10.  Make it so that order total and payment modules interact better such that a payment module based on line items (e.g. Paytrails) will automatically be updated when someone installs a new line item order total module (e.g. the Gift Wrap module). 
    11.  Allow translators to export all the language defines into a single file, translate that in there, and then upload back to osCommerce. 
    12.  Include the Option Type Feature in core (supports free text and image attributes). 
    13.  Allow stock keeping on different variations of the same product while still allowing options that do not keep stock separately.  E.g. different sizes of T-shirts might be separate while custom embroidery would use the same stock. 
    14.  Allowing notification methods other than email. 
    15.  Simplifying the checkout process. 
    Most of those are from my TODO list, although the first is something on which Gary is working and the last three are requested but not assigned. 
    I would guess that there are far more store owners wanting to track stock on variations than there are wanting to send more emails from inside osCommerce.  Why?  Well, for one thing, there has been an App for such stock tracking since almost the beginning. 
    And a newsletter manager is an example of something that would be relatively easy to implement outside of core.  Particularly the way that things are implemented now.  It's also worth noting that it isn't that hard to export the email addresses of customers who signed up for newsletters or notifications to an external mailing program with much better email handling. 
    Anyway, my point is that if we were going to pick a large project, and updating the newsletter manager would be a large project, it would make more sense to update core to support tracking stock on variations.  As that is always going to require core modifications.  So better to bring it into core than force people to hack support on as an afterthought. 
    It makes more sense to concentrate core development resources on things that have to be done in core than on things that can be released as Apps.  Because core development resources are limited.  And the truth is that a Newsletter Manager is exactly the kind of thing that could be implemented as an App.  In fact, I think I'll add "Migrate Newsletter Manager to App" to my TODO list as part of #5 in the list above. 
    Unless a Newsletter App becomes overwhelmingly popular, that's not functionality that really needs to be in core.  Particularly as we've moved away from email subscriptions to things like Facebook and Twitter. 
  11. Like
    ecartz got a reaction from valquiria23 in Global Product Notifications   
    It looks like there are two levels: 
    1.  Notifications just on particular products.
    2.  Notifications on all products (global). 
    So what that code is showing you is the ability to select particular products for notification.  But that capability is not needed for customers who sign up for global notifications.  So on that page, you are enabling selective notifications because global notifications are turned off. 
    It's also a bit confusing in that the newsletter also has two levels: 
    1.  Specific product.  Everyone who selected global and everyone who selected that particular product. 
    2.  Global.  Everyone who selected global and everyone who selected any product. 
  12. Like
    ecartz got a reaction from valquiria23 in Error installing Phoenix 1.0.4.0   
    I made the edits at https://github.com/ecartz/CE-Phoenix/blob/warn_php_version/install/templates/pages/index.php if you want to try to convince Gary to integrate them. 
  13. Thanks
    ecartz got a reaction from Moxamint in Product listing   
    It makes the layout harder to calculate.  Because if the width is set, then the height can change.  Or if the height is set, the width can change.  Consider specifically the situation where the canonical value is set to 300, considering a 300x300 image.  On some products, the image might be 300x60 and on others 300x2100.  Will it look good to mix products where some are 35 times as tall as others?  Or 50x300 and 2000x300.  Some products are most of the width of a screen while others take up just a fraction. 
    If you specify width and height, you can make all the images fit into that box and automatically extend the ones that need it.  So a 300x60 image will get 240 rows of padding.  While the 300x2100 will be resized to something like 43x300 and receive 257 columns of padding.  This gives each product a predictable size in the display. 
  14. Like
    ecartz got a reaction from valquiria23 in Error installing Phoenix 1.0.4.0   
    Phoenix requires PHP 7+
    If you want to fix the error, change
    $module_width = $ad->content_width ?? 6; to
    $module_width = isset($ad->content_width) ? $ad->content_width : 6; and that particular line will work again.  But expect more problems if you try to run Phoenix on PHP 5. 
  15. Like
    ecartz got a reaction from valquiria23 in Error installing Phoenix 1.0.4.0   
    Phoenix requires PHP 7+
    If you want to fix the error, change
    $module_width = $ad->content_width ?? 6; to
    $module_width = isset($ad->content_width) ? $ad->content_width : 6; and that particular line will work again.  But expect more problems if you try to run Phoenix on PHP 5. 
  16. Like
    ecartz got a reaction from puggybelle in PHP Fatal error: Cannot redeclare app_paypal_get_admin_box_links()   
    It sounds like it's have a problem generating the PayPal menu in admin.  That file should look something like https://github.com/gburton/CE-Phoenix/blob/master/includes/apps/paypal/admin/functions/boxes.php
    Yours seems to be claiming that it has two lines that say
    function app_paypal_get_admin_box_links() { Maybe go look at the file and see if you really have two lines? 
  17. Like
    ecartz got a reaction from valquiria23 in Change from viariable to fixed pathnames   
    I believe that it's
    if (!file_exists(DIR_FS_CATALOG . 'includes/modules/payment/'. $payment . '.php')) and
    require_once(DIR_FS_CATALOG . 'includes/modules/payment/'. $payment . '.php'); Here's the commit.  It says that the following were removed
    define('DIR_WS_IMAGES', 'images/'); define('DIR_WS_ICONS', DIR_WS_IMAGES . 'icons/'); define('DIR_WS_INCLUDES', 'includes/'); define('DIR_WS_FUNCTIONS', DIR_WS_INCLUDES . 'functions/'); define('DIR_WS_CLASSES', DIR_WS_INCLUDES . 'classes/'); define('DIR_WS_MODULES', DIR_WS_INCLUDES . 'modules/'); define('DIR_WS_LANGUAGES', DIR_WS_INCLUDES . 'languages/'); define('DIR_WS_DOWNLOAD_PUBLIC', 'pub/'); So anything with DIR_WS_MODULES should be replaced with 'includes/modules/' and then you can concatenate neighboring strings. 
    DIR_FS_CATALOG and $payment should stay the same.  If you continue to have trouble, try replacing $payment with $GLOBALS['payment'] and output both (either to log or screen; preferably log if a live site). 
  18. Thanks
    ecartz got a reaction from Lochlann in install 2.3 modules to Phoenix?   
    The change was here.
    define('DIR_WS_IMAGES', 'images/'); define('DIR_WS_ICONS', DIR_WS_IMAGES . 'icons/'); define('DIR_WS_INCLUDES', 'includes/'); define('DIR_WS_FUNCTIONS', DIR_WS_INCLUDES . 'functions/'); define('DIR_WS_CLASSES', DIR_WS_INCLUDES . 'classes/'); define('DIR_WS_MODULES', DIR_WS_INCLUDES . 'modules/'); define('DIR_WS_LANGUAGES', DIR_WS_INCLUDES . 'languages/'); define('DIR_WS_DOWNLOAD_PUBLIC', 'pub/'); Which if we hardcode paths in it would become
    define('DIR_WS_IMAGES', 'images/'); define('DIR_WS_ICONS', 'images/icons/'); define('DIR_WS_INCLUDES', 'includes/'); define('DIR_WS_FUNCTIONS', 'includes/functions/'); define('DIR_WS_CLASSES', 'includes/classes/'); define('DIR_WS_MODULES', 'includes/modules/'); define('DIR_WS_LANGUAGES', 'includes/languages/'); define('DIR_WS_DOWNLOAD_PUBLIC', 'pub/'); Replace occurrences of the values on the left (without quotes) with the values on the right (with quotes retained).  If you have two hardcoded strings together, e.g.
    'images/' . 'icons/' You can merge them like
    'images/icons/' That makes no functional difference, but it may make them easier to read. 
  19. Like
    ecartz got a reaction from Dan Cole in Column Width Issue   
    Here's line 221 in the current version: 
    echo '</div>'; A little more looking with blame found this commit which  changed the line you described to
    echo '<div class="col">'; So you should just be able to update to the latest version of that page, as released in 1.0.3.0. 
  20. Thanks
    ecartz got a reaction from magak2015 in [CONTRIBUTION] Ultimate SEO URLs v2.1 - by Chemo   
    I do not know the answer.  But if I were trying to do this, I would look at sitemap Apps. 
    Why?  Because they generate listings of URLs and should use the same generation mechanism as osCommerce uses for regular links.  Perhaps not all of them would be compatible with this App, but at least one should. 
  21. Like
    ecartz got a reaction from Stephan Gebbers in SEO html: <meta> tags in <body> instead <head>   
    Does adding a
    define('META_SEO_TITLE', 'Our GTCs'); help?  May require ht_pages_seo to be installed in admin > Modules > Header Tags (if it is not already). 
    You may also want to look at how ht_product_title.php works and adapt for your use.  I'm thinking of copying that file to ht_heading_title.php, changing the class name and $code to ht_heading_title, replacing all instances of PRODUCT_TITLE with HEADING_TITLE, and replacing the contents of the execute function with something like
    function execute() { global $PHP_SELF, $oscTemplate; if (in_array(basename($PHP_SELF), [ 'attias_beratung.php', 'attias_impressum.php' ])) { $oscTemplate->setTitle(HEADING_TITLE); } } Adjust the list of file names as necessary for your shop.  Remember that you have to install the module in admin before it will do anything.  You want it to have a low sort order number, as you want it to act before other modules. 
    And if it wasn't clear, change things like
    $this->title = MODULE_HEADER_TAGS_PRODUCT_TITLE_TITLE; to look like
    $this->title = MODULE_HEADER_TAGS_HEADING_TITLE_TITLE; throughout the file. 
  22. Like
    ecartz got a reaction from Stephan Gebbers in SEO html: <meta> tags in <body> instead <head>   
    Does adding a
    define('META_SEO_TITLE', 'Our GTCs'); help?  May require ht_pages_seo to be installed in admin > Modules > Header Tags (if it is not already). 
    You may also want to look at how ht_product_title.php works and adapt for your use.  I'm thinking of copying that file to ht_heading_title.php, changing the class name and $code to ht_heading_title, replacing all instances of PRODUCT_TITLE with HEADING_TITLE, and replacing the contents of the execute function with something like
    function execute() { global $PHP_SELF, $oscTemplate; if (in_array(basename($PHP_SELF), [ 'attias_beratung.php', 'attias_impressum.php' ])) { $oscTemplate->setTitle(HEADING_TITLE); } } Adjust the list of file names as necessary for your shop.  Remember that you have to install the module in admin before it will do anything.  You want it to have a low sort order number, as you want it to act before other modules. 
    And if it wasn't clear, change things like
    $this->title = MODULE_HEADER_TAGS_PRODUCT_TITLE_TITLE; to look like
    $this->title = MODULE_HEADER_TAGS_HEADING_TITLE_TITLE; throughout the file. 
  23. Like
    ecartz got a reaction from Stephan Gebbers in SEO html: <meta> tags in <body> instead <head>   
    Well, it's language specific, so I'd check the part of the language files that specifies that
    <htmldir="ltr" lang="de"> My guess is that you're missing a space in
    define('HTML_PARAMS', ' dir="ltr" lang="de"'); in the german.php file.  Note that there should be a space before the dir entry. 
    Your browser doesn't know what an htmldir tag is, so it assumes that it's part of the body.  So your browser implicitly creates the html, head, and body tags.  Then it removes the ones that template_top.php created. 
  24. Like
    ecartz got a reaction from Dan Cole in Unique orders status id.   
    tep_db_query("INSERT INTO orders_status (orders_status_id, language_id, orders_status_name ) SELECT MAX(orders_status_id) + 1, '1', 'Waiting for payment' FROM orders_status"); I believe that works.  Test of course.  First by running just the select in phpMyAdmin or similar and then try to write with it if the results are what you expect. 
  25. Like
    ecartz got a reaction from cables24h in How do I reset a forgotten admin password?   
    Are you using the htpasswd?  You might need to move the .htaccess and .htpasswd_oscommerce files out of the admin directory (move them rather than deleting them in case you need to move them back). 
×