Troubleshooting

About No Promotion state applied on entries, you have not defined a default Promotion or you have an issue updating XTDir's Index.

Are you running XTDir on MySQL v5.5, or superior? XTDir on MySQL 5.1, what is the problem?

  1. Firstly, please, check this slide to configure the section, Global Configuration / Template / Entry Settings / Order by = Position ascending. In this way, Position defined by Promotions are going to be applied.
  2. In SobiPro, the main section is a special navigational case, that is not ruled by the previous definition. This case requires to redefine the default entry ordering at general or template level.
  3. General entries ordering In file components/com_sobipro/etc/config.ini, in [list] area, add this line: entries_ordering = "position.asc"
  4. Template entries ordering In file components/com_sobipro/usr/templates/YOUR-TEMPLATE/config.ini, in [list] area, add these lines: [list] entries_ordering = "position.asc"

Other entries_ordering parameter definition may also affect entries order. For instance, category/view.ini may also have a parameter definition.

XTDir Faceted search module is a complex module designed to work as a Javascript application. Thus, good practices are required to make it work properly.

It is highly recommended to:

  • Start your tests and customizations in a simple page. For example, a page with only one article, no additional modules and Protostar template.
  • Your template must adhere Bootstrap 2 or Bootstrap 3 styling (To change the default layout: Advanced/ Alternative Layout)
  • Your page must be free of Javascript conflicts.

Once you have a good grasp on how it works, continue your customizations in your site template and build one step at a time.

To sum up, test each extension separately and learn how to configure and apply them on step at a time. Then, take the additional steps to combine them with your template and other extensions.

The module submits a search query in the same way than the original SobiPro search form.

By default, all XTDir search modules produce the same search results than SobiPro. If you are looking to return all entries on an empty keyword search, click here.

To test how it works:

  • Please, test a search case in SobiPro. For instance, search for * and a specific category to retrieve all matching entries in that category. For this test, SobiPro search item must be published in a Joomla menu, with public access (verify SobiPro Access Control List / Rules, search.search).
  • Test the same search case in the module.

If there is any difference, please, check if there is any JavaScript Conflict in your page (check Concerning to Javascript Conflicts).

The module is detecting that Google Maps has been initialized before. Google Maps can only be initialized once in a page.

For exampe, XTDir PromoGeoMap module should not be deplayed in "Add Entry" page, where a geomap field already is initialized to define the location.

By default, SobiPro templates has spEntryContainer class for Bootstrap 2 styling or entry-container class for BS3 styling in the entries area. If you have customized your template, please restore the class to integrate the faceted search module.

The module loads search results directly from SobiPro, then the active template renders the results in the same way than the regular site natigation.

For example, SobiPro in default3 template has this source code, file components/com_sobipro/usr/templates/default3/common/entries.xsl, line 37:

    <xsl:comment>entries loop - start</xsl:comment>
    <div class="spEntryContainer">
            <xsl:for-each select="entries/entry">
                <xsl:if test="($entriesInLine > 1 and (position() = 1 or (position() mod $entriesInLine) = 1 )) or $entriesInLine = 1">

Your template must have a similar spEntryContainer class declaration.

Even though, you submit your search query through XTDir search modules, SobiPro search feature must be enabled to users. If not, SobiPro shows the Unauthorized Access error.

Please, check SobiPro's Menu / Access Control List / Rules / Visitor / Section / use search function.

When I submit a search keyword in the module, SobiPro returns

The control works based on a Javascript routine, Chained Selects Plugin for jQuery and Zepto. If there is any previous Javascript error or conflict, it does not link each category level and they are shown as plain selects.

Reference: Concerning to Javascript Conflicts

SobiPro v1.1 has introduced Category search, with a new field of type Category. If you have migrated from SobiPro v1.0 (or if you have manually removed the Category field), and the search module cannot find a Category field in the section configuration, then it is not possible to search filtering by category.

Please, add a new field of Category type into your section configuration, and enable it for search (Search Field Settings tab/Searchable=Yes).

XTDir Faceted Search module works sending search queries to SobiPro, and showing the output in the module context. It expects a search result having an .entry-container class to signal the content. This is the SobiPro regular structure.

However, if the customization process has removed the original SobiPro classes, the module cannot process the output. Please, restore the entry-container class to signal the search results.

Please, check the default SobiPro template:

File location: components/com_sobipro/usr/templates/default2/common/entries.xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" encoding="UTF-8" />
    <xsl:include href="vcard.xsl" />
    <xsl:include href="manage.xsl" />

    <xsl:template name="entriesLoop">
        <xsl:variable name="entriesInLine">
            <xsl:value-of select="entries_in_line" />
        </xsl:variable>

        <xsl:variable name="cellClass">
            <xsl:value-of select="floor( 12 div $entriesInLine )" />
        </xsl:variable>

        <xsl:variable name="entriesCount">
            <xsl:value-of select="count(entries/entry)" />
        </xsl:variable>

        <xsl:comment>entries loop - start</xsl:comment>
        <div class="entry-container">
        ....

SobiPro requires to define the parameters to be passed from the search query to the search results page. Please, add the Itemid into section config.ini:

components/com_sobipro/etc/config.ini, line 88

[search]
params_to_pass = "json://['rendercomponent','tmpl','Itemid']" 

Ref: https://forum.sigsiu.net/community-board-for-sobipro-discussions/components-anywhere/10/

'Pending' Payments are still not accepted by Paypal. For instance, if you are sending testing payments from PayPal Sandbox, by default, it has disabled this setting "Allow payments sent to me in a currency I do not hold".

To receive Completed payments, please, change this Paypal Sandbox configuration:

  1. Manually navigate to My Account/ Profile/ Payment Receiving Preferences:

https://www.sandbox.paypal.com/ca/cgi-bin/?cmd=_profile-pref&source=acct_setup&fli=true

  1. Change "Allow payments sent to me in a currency I do not hold" to "Yes, accept and convert them to ..."

  2. Test a new case to verify the change

SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

This is mainly caused by a hosting misconfiguration, validating SSL certificates. Please, ask to your hosting provider to review this issue.

Once your hosting is able to open a secure SSL connection, it will download and install the updates.

The core index generation is not compatible with MySQL 5.1 (around since 2005).

XTDir core index generation works, based on advanced MySQL views, to define entries ordering with enhanced performance and complex queries. MySQL 5.1 does support views in a stable way. We recommend MySQL v5.5, or superior.

Please, check with your hosting provider to update your site to MySQL v5.5, or superior. Finally, after the MySQL upgrade, uninstall/install XTDir to recreate the views, or manually run administrator/components/com_xtdir/sql/install/mysql/view.sql in phpMyAdmin to recreate them.

You are running an outdated version of PHP (not stable), which is not supported by the extension. Most hosting providers already offer to upgrade to PHP 5.6.

Please upgrade to PHP 5.6 or superior as soon as possible (previous PHP versions are not longer considered stable. They don't have Bug fixes, Patchs, or Security issues fixes).

Joomla shows this error message when you try to update to the extension latest version.

Warning

Update path does not exist
Message

Error updating COM_INSTALLER_TYPE_TYPE_.

Live Update does not work, Update path does not exist

Joomla cannot successfully download and install the file.

Have you assigned the Download ID? It is required to authorize downloads.

  1. Please, click here to access your Download ID.
  2. Copy and paste Download ID into component Options/Live update/Download ID field
  3. Save and update again the extension from Control Panel or "Extension Manager: Update"

If the problem persists, we have found a minor incompatibility in the latest Joomla installer plugin, please manually download the extension and install it to update the installer plugin and the rest of the associated files. Next time, it will be updated with no errors.

XTDir solution has a component, modules, plugins, SobiPro Apps, and SobiPro fields. XTDir component, modules, and plugins are updated by Joomla! Extensions installer. But, XTDir-SobiPro Apps and XTDir-SobiPro fields, which are manually installed from XTDir, must be manually updated from XTDir following the same procedure.

After a XTDir update, please, verify in SobiPro App Manager if XTDir-SobiPro Apps and XTDir-SobiPro fields are updated at the same version. If not, visit each associated XTDir configuration area and click the Update button for the app or field.

Tutorial: XTDir for SobiPro - Updates

After a SobiPro version update, you get these warnings:

Warning: SQLiteDatabase::query(): near ")": syntax error in /home/catapult/developmentb/components/com_sobipro/lib/base/cache.php on line 157
Warning: json://{"section":"cache","message":"SQLite error on query: SELECT * FROM vars WHERE( name = 'order_field_serving_style' AND lang = 'en-GB' AND section = '' AND sid = )","code":0,"file":"\/home\/catapult\/developmentb\/components\/com_sobipro\/lib\/base\/cache.php","line":161,"content":"In file \/home\/catapult\/developmentb\/components\/com_sobipro\/lib\/base\/cache.php at line 161"} in /home/catapult/developmentb/components/com_sobipro/lib/sobi.php on line 103

Diagnose: If you have recently upgraded SobiPro, cache may be inconsistent. In SobiPro, error_reporting is set to None, and Joomla general error_reporting is enabled. Thus, when XTDir extensions call SobiPro API, these warnings are shown.

Solution: To avoid these warnings, please, change Joomla error_reporting to None, in Joomla System/Global Configuration/Error Reporting=None. In this way, SobiPro and Joomla error reporting configuration will match.

Alternatively, you can manually clean SobiPro cache (in Section Configuration/General Configuration, Clean Cache).

... xtdir_tmp_object_relations is a temporary table, used by XTDir in the indexation process. Please, verify these cases:

XTDir creates a temporary table to process SobiPro entries and updates the new general index. This error is found when the indexation is not completed in time AND you have enabled the PageLoad mode.

The PageLoad mode is a simple way to automate the indexation. However, in a medium-big catalog, it can easily overload your server.

To optimize the catalog automation, please enable the Cron Job mode

Alternatively, if the problem persists and the index is not generated or updated at all, please, check this general MySQL issues:

  • MySQL user must have permissions to create this table
  • If you have enabled in_memory parameter (Configuration/Core Index of SobiPro Entries ), TEMPORARY tables must be allowed in the database

XTDir v5 is compatible with SobiPro v1.0 and v1.1. Thus, XTDir-SobiPro Apps run in compatibility mode and SobiPro shows this notice. In the upcoming XTDir v6, we are dropping SobiPro v1.0 compatibility and new XTDir-SobiPro Apps will not show this notice.

XTDir works on indexed categories and entries. By default, it is restricted to 1000. Please, try to increase and update it in Configuration/Core Index/Index Limit.

Once the limit is adjusted, you can automate the indexation operation.

The module shows indexed categories according to parameter definitions. For instance, if the module is not showing all of them, you can increase the Count (by default, 99) or show all categories even empty categories **.

Finally, if categories are still missing, the deafult index limit could have been reached.

  • The module shows unpublished categories or entries

Even though you have enabled Hide Empty Categories, the module still shows empty categories. To confirm, please, enable Show Counter⁼Entries to verify the entries counter.

If there is a mismatch between the number of entries and counter, then XTDir general index may be outdated. Please, manually click on XTDir Control Panel/ Index button. Additionally, you can automate the indexation operation.

There is an inconsistency in the declaration of XTDir views in your database.

Please, update to the latest XTDir 6.4.2 and recreate the views.

  • XTDir for SobiPro / Configuration / Core Index of SobiPro Entries / Recreate Views, or
  • XTDir for SobiPro / Promoted Entries / Configuration / Recreate Views

Views are created by XTDir for SobiPro when it is initially installed. If you have migrated from server, they might not be copied. If views are not created in your database, you can recreate them with any of the following methods:

  • In the latest XTDir for SobiPro 5.6, you can click on XTDir for SobiPro: Promoted Entries Configuration / Recreate Views button to recreate views
  • In phpMyAdmin, you can execute views.sql script to manually recreate them (File: administrator/components/com_xtdir/sql/install/mysql/views.sql)
  • Uninstall and install again XTDir for SobiPro, installer recreates all views. If the problem persists, a database configuration problem may be present. CON: This method also resets all previous configuration.

Javascript Apps are integral part of XTDir and SobiPro. XTDir Modules, like XTDir Extended Search and XTDir GeoMap Search require a page free of Javascript errors or conflicts to run smoothly.

Joomla 3 runs on jQuery. However legacy extensions may load MooTools and other libraries (for example Dojo), or load multiple jQuery versions - jQuery must be loaded only once -. Check and isolate scripts to simplify page loading.

If you Browser shows Javascript loading errors( Control-Shift-J to access browser console), there are several points to check. Briefly, the simplest way to solve them is isolating every element in a clean page (for example, testing every module in an article page with protostar template), and build complexity one step at a time.

KISS principle Keep it simple. Loading multiple extensions in a page is simple, however combining all together in a sound design and a working Javascript context is not. Every layer adds complexity and cases to check. In other words, the best advice is to keep it as simple as possible.

In complex Javascript configurations, there is some uncertainty due to the nature of the loading order. For example, it works perfectly fine in a page and it does not work in a similar configuration with a different loading order. Then again, the recommendation is to simplify to find the case where the search form and the results page work as expected, and add complexity one step at a time.

In addition, you can inspect your browser console to discover if there is a Javascript error behind. Press Control-Shift-J, and access the page to discover any HTML/Javascript error.

There are extensions to help with Javascript conflicts. For example, jQuery Easy "This plugin is meant to help clean and resolve front and back end issues when using instances of jQuery alongside the Mootools libraries."

Besides usual JQuery and Mootools conflicts, Google Maps requires a careful implementation in a "light" page (small Javascript footpring). For instance, a common mistake is loading Google Maps twice in the same page (via two modules, XTDir GeoMap Search module and XTDir Extended Search Module cannot be assigned to the same page - showing the same GeoMap field).

  1. Javascript Conflicts, by Written by Sigrid Suski
  2. Script Debugging, with Firebug
  3. Using the Console - Google Chrome
  4. Firefox - Browser Console

Our extension is designed for SobiPro. SobiPro has to be installed before XTDir.

Firstly, please, download, install and configure SobiPro, http://sigsiu.net/. Once you become familiar with SobiPro, proceed to install and configure XTDir.

When you visit the Control Panel, there is a version check to our site, for example https://d3hptxmced6nen.cloudfront.net/update-xtdir-for-sobipro. If you are getting a connection error, it may not be possible to stablish it from your site (caused by a security restriction or a temporary network issue).

Please, check with your hosting provider, or just disable the check (component Options/Live Update/Version Check=Off)

A blank white page is an error page!

Due to PHP errors, XTDir (or any other Joomla extensions) can stop working without displaying an error, just a Blank Page. The absence of any evidence is caused by disabled PHP Error Reporting. This is a common security measure in production sites.

Again, a white page is just an error page where the error message has been suppressed by your configuration. Once you solve the error, the site is going to be back to the normal state.

In these cases you have to enable PHP Error Reporting to find out what the error behind the white page is:

  1. Check your server error logs (not the access logs): even when PHP Errors are disabled, they may be saved in an error log file.
  2. Joomla Configuration - Error Reporting: go to Joomla Administration / Global configuration / Server, and enable "Error Reporting" to Maximum.
  3. If your site still shows a Blank Page, your hosting provider may have restricted this setting too.
  4. Additionally, if you can't access the back-end website, check the next cases.
  5. Hosting Configuration: visit CPanel, or your hosting control panel, and try to enable PHP Error Reporting in this area.
  6. Alternatively, you can ask to your Hosting Support, how to enable it.
  7. PHP Configuration: enable display_errors to "on" in php.ini

You have installed an extension (package). Joomla is trying to load several new system plugins, a dependency is not fulfilled or there is a PHP Error in your site.

  1. If the front end website is down. Joomla backend may work (it does not load the same plugins). Please, try to access the backend to disable the latest installed "system" plugins.
  2. If the Joomla backend is also down, access your Database and manually disable the latest installed plugins.

For example, to review the latest installed plugins from phpMyAdmin/MySQL:

SELECT * FROM `XXXX_extensions` WHERE `type`='plugin' ORDER BY `XXXX_extensions`.`extension_id`  DESC

To disable a plugin, change the enabled column to 0.

There is an alternative way to avoid a system plugin load, but it requires to access directly to website files and remove some of them. Please, proceed with the following steps:

  • Access your site directory, for example via FTP
  • Rename the latest installed system plugins folders in "[Joomla_root]/plugins/system/"

We develop and test our extensions to minimize conflicts and installation problems. However, we can't preview all environments and extensions combinations. It is also common to find very restrictive or very resource-limited hosting platforms. To avoid this problem, we recommend:

  • Always, test new software in a development site.
  • Always, create and check to have a recent backup at hand (test how to quickly restore it). Akeeba backup is a great component, and very easy to use.
  • Always, if you are going to install it in your live/production site, install it at a convenient time (Eg weekend). You can also announce a downtime window to upgrade your site, and be ready for a rollback.

The Logging Mode is a key tool to check the extension inner workings. It is a handy way to check component internals, beyond a simple error message.

You can enable several logging modes to leave a track of server-side operations. To enable the logging mode:

  • Access the Options menu, in Components/(Extension Name) Control Panel.
  • In the System Settings folder,
  • Enable the: Logging level (For example, 3-All)
  • And, select the Logging mode (For example, To logfile only or To logfile and screen)

Logging Mode: Developer's swiss army knife

As a result, xt-logging.log file is generated with all operations details into logs/ directory. The file is located in Joomla! temporary directory (tmp/). Please, check the file generated in logs/xt-logging.log.

Alternatively, xt-logging.log can be downloaded from Control Panel.

Control Panel - xt-logging.log

Strict Standards errors are found when "PHP suggest changes to your code which will ensure the best interoperability and forward compatibility of your code".

As Joomla, SobiPro, and XTDir are ready to be run with PHP 5.3, or superior. Each version can report different "suggestions".

To hide these PHP compatibility notices:

  • Please, disable Strict Standards notices in your hosting, or
  • ask to your hosting support to disable them, or
  • change Joomla Error Reporting to None (Global Configuration/Server/Error Reporting)

If you have enabled "System - Cache" plug-in, then disable it. By default, it is not recommended.

System - Cache plug-in enables Page Caching at client browser level. Thus, information is not updated in browser until the Page expires and it is loaded again. This technique is only recommended for static pages.

This is a general PHP or Apache error. There is problem deep in the hosting platform. Please, ask to your hosting support to find out the source of the problem.

In SiteGround hosting, they have carefully investigated the case and managed to recreate the error. They have resolved the issue by changing the PHP version to 5.4 by adding the following line to .htaccess file: AddHandler application/x-httpd-php54 .php .php5 .php4 .php3

In addition, mod_security, or other similar security restrictions, may block Ajax requests with this error. Check with your hosting provider, explaining the exact steps that cause the error, or you can temporarily disable mod_security to verify if it solves the issue. You can just add the following to .htaccess:

<IfModule mod_security.c>
    SecFilterEngine Off
    SecFilterScanPOST Off
</IfModule>

XTDir PromoGeoMap is based on SobiPro GeoMap field. However, SobiPro Import/Export Application only supports SobiPro GeoMap field.

We have confirmed that SobiPro Import/Export App has only field adapters for SobiPro fields to convert them. It has a fixed set of adapters for SP fields, included in the App installer. Then, it does not support other fields.

As a workaround, you can duplicate SPImexImportGeomap adapter to support XTDir PromoGeomap field:

Please, follow this steps:

  • Copy components/com_sobipro/opt/fields/adapters/import/fields/geomap.php to components/com_sobipro/opt/fields/adapters/import/fields/promogeomap.php
  • Copy components/com_sobipro/opt/fields/adapters/export/fields/geomap.php to components/com_sobipro/opt/fields/adapters/export/fields/promogeomap.php
  • Edit components/com_sobipro/opt/fields/adapters/import/fields/promogeomap.php to rename the class:

    class SPImexImportPromoGeomap

  • Edit components/com_sobipro/opt/fields/adapters/export/fields/promogeomap.php to rename the class:

    class SPImexExportPromoGeomap

As a result, when you export SP Geomap field or XTDir PromoGeoMap field, they both have the same representation in the exported file. For example: "43.390126,-5.6984082"