it-swarm-es.tech

plugin de búsqueda inteligente para componentes personalizados que no indexan

Tengo problemas para implementar un complemento de búsqueda inteligente para mi componente. Busqué y solo pude encontrar esta pregunta que se parecía un poco a la mía, pero no funcionó en mi caso.

En este componente tengo una tabla #__descontos_promocoes Desde la cual me gustaría buscar la columna nome.

El Finder no está indexando nada de mi componente. Intenté usar la línea de comando para ejecutar php cli/Finder_indexer.php Y arreglé todas las advertencias/errores que aparecían, incluido el 'Índice indefinido: HTTP_Host' .

Creo que el problema puede estar en algún lugar dentro de mi función index(FinderIndexerResult $item, $format = 'html') pero no sé cómo solucionarlo.

¿Alguien puede ayudarme por favor? Este es el archivo php de mi plugin:

<?php

defined('JPATH_BASE') or die;
require_once JPATH_ADMINISTRATOR . '/components/com_Finder/helpers/indexer/adapter.php';

class PlgFinderDescontosPromocoes extends FinderIndexerAdapter
{
    protected $context = 'Promocoes';
    protected $extension = 'com_descontos';
    protected $layout = 'promocoes';
    protected $type_title = 'Promocao';
    protected $table = '#__descontos_promocoes';
    protected $state_field = 'state';
    protected $autoloadLanguage = true;

    /**
     * Method to index an item. The item must be a FinderIndexerResult object.
     *
     * @param   FinderIndexerResult  $item    The item to index as an FinderIndexerResult object.
     * @param   string               $format  The item format.  Not used.
     *
     * @return  void
     *
     * @since   2.5
     * @throws  Exception on database error.
     */
    protected function index(FinderIndexerResult $item, $format = 'html')
    {
        // Check if the extension is enabled.
        if (JComponentHelper::isEnabled($this->extension) == false)
        {
            return;
        }

        $item->setLanguage();

        // Need to import component route helpers dynamically, hence the reason it's handled here.
        $path = JPATH_SITE . '/components/' . $item->extension . '/helpers/route.php';

        if (is_file($path))
        {
            include_once $path;
        }

        $extension = ucfirst(substr($item->extension, 4));

        // Initialize the item parameters.
        $registry = new JRegistry;
        $registry->loadString($item->params);
        $item->params = $registry;

        $registry = new JRegistry;
        $registry->loadString($item->metadata);
        $item->metadata = $registry;

        /*
         * Add the meta-data processing instructions based on the category's
         * configuration parameters.
         */
        // Add the meta-author.
        $item->metaauthor = $item->metadata->get('author');

        // Handle the link to the meta-data.
        $item->addInstruction(FinderIndexer::META_CONTEXT, 'link');
        $item->addInstruction(FinderIndexer::META_CONTEXT, 'metakey');
        $item->addInstruction(FinderIndexer::META_CONTEXT, 'metadesc');
        $item->addInstruction(FinderIndexer::META_CONTEXT, 'metaauthor');
        $item->addInstruction(FinderIndexer::META_CONTEXT, 'author');

        // Deactivated Methods
        // $item->addInstruction(FinderIndexer::META_CONTEXT, 'created_by_alias');

        // // Trigger the onContentPrepare event.
        // $item->summary = FinderIndexerHelper::prepareContent($item->summary, $item->params);

        // // Build the necessary route and path information.
        // $item->url = $this->getURL($item->id, $item->extension, $this->layout);

        // $class = $extension . 'HelperRoute';

        // if (class_exists($class) && method_exists($class, 'getCategoryRoute'))
        // {
        //  $item->route = $class::getCategoryRoute($item->id, $item->language);
        // }
        // else
        // {
        //  $item->route = ContentHelperRoute::getCategoryRoute($item->slug, $item->catid);
        // }

        // $item->path = FinderIndexerHelper::getContentPath($item->route);

        // // Get the menu title if it exists.
        // $title = $this->getItemMenuTitle($item->url);

        // // Adjust the title if necessary.
        // if (!empty($title) && $this->params->get('use_menu_title', true))
        // {
        //  $item->title = $title;
        // }

        // Translate the state. Categories should only be published if the parent category is published.
        // $item->state = $this->translateState($item->state);

        // Add the type taxonomy data.
        $item->addTaxonomy('Type', 'Promocao');

        // Add the language taxonomy data.
        $item->addTaxonomy('Language', $item->language);

        // Get content extras.
        FinderIndexerHelper::getContentExtras($item);

        // Index the item.
        $this->indexer->index($item);




        /**
         * I have previously tested this function with only the code bellow (still doesn't index anything):
         */

        // if (JComponentHelper::isEnabled($this->extension) == false) {
        //  return;
        // }

        // $item->url = $this->getURL($item->id, 'com_descontos&layout=promocoes', $this->layout);
        // $item->route = 'index.php?option=com_descontos&view=promocoes&layout=promocoes&id='.$item->id;
        // $item->addTaxonomy('Type', 'Promocao');
        // $item->addTaxonomy('Language', $item->language);
        // $this->indexer->index($item);
    }

    /**
     * Method to setup the indexer to be run.
     *
     * @return  boolean  True on success.
     *
     * @since   2.5
     */
    protected function setup()
    {
        // Load com_content route helper as it is the fallback for routing in the indexer in this instance.
        include_once JPATH_SITE . '/components/com_content/helpers/route.php';

        return true;
    }

    /**
     * Method to get the SQL query used to retrieve the list of content items.
     *
     * @param   mixed  $query  A JDatabaseQuery object or null.
     *
     * @return  JDatabaseQuery  A database object.
     *
     * @since   2.5
     */
    protected function getListQuery($query = null)
    {
        $db = JFactory::getDbo();

        // Check if we can use the supplied SQL query.
        $query = $query instanceof JDatabaseQuery ? $query : $db->getQuery(true)
            ->select('a.id as id, a.nome as title')
        //  ->select('a.id, a.catid, a.title, a.alias, a.url AS link, a.description AS summary')
        //  ->select('a.metakey, a.metadesc, a.metadata, a.language, a.access, a.ordering')
        //  ->select('a.created_by_alias, a.modified, a.modified_by')
        //  ->select('a.publish_up AS publish_start_date, a.publish_down AS publish_end_date')
        //  ->select('a.state AS state, a.created AS start_date, a.params')
        //  ->select('c.title AS category, c.published AS cat_state, c.access AS cat_access');

        // // Handle the alias CASE WHEN portion of the query.
        // $case_when_item_alias = ' CASE WHEN ';
        // $case_when_item_alias .= $query->charLength('a.alias', '!=', '0');
        // $case_when_item_alias .= ' THEN ';
        // $a_id = $query->castAsChar('a.id');
        // $case_when_item_alias .= $query->concatenate(array($a_id, 'a.alias'), ':');
        // $case_when_item_alias .= ' ELSE ';
        // $case_when_item_alias .= $a_id . ' END as slug';
        // $query->select($case_when_item_alias);

        // $case_when_category_alias = ' CASE WHEN ';
        // $case_when_category_alias .= $query->charLength('c.alias', '!=', '0');
        // $case_when_category_alias .= ' THEN ';
        // $c_id = $query->castAsChar('c.id');
        // $case_when_category_alias .= $query->concatenate(array($c_id, 'c.alias'), ':');
        // $case_when_category_alias .= ' ELSE ';
        // $case_when_category_alias .= $c_id . ' END as catslug';
        // $query->select($case_when_category_alias)

            ->from('#__descontos_promocoes AS a');
            // ->join('LEFT', '#__categories AS c ON c.id = a.catid');

        return $query;
    }
}

Esta es la salida de la línea de comando: (indexa todo excepto las cosas de mi componente)

[email protected]:/var/www/10contos$ php5 cli/Finder_indexer.php 
Smart Search INDEXER
============================

Starting Indexer
Setting up Finder plugins
Setup 9 items in 0.072 seconds.
 * Processed batch 1 in 0.021 seconds.
Total Processing Time: 0.094 seconds.

Incluso tratar de indexar en el backend dentro de Finder, no funciona. No recibo ningún error ni nada dentro de /var/log/Apache2/error.log

4
kingarthurpt

Verifique que está utilizando la última versión de Joomla 2.5 Asegúrese de tener publicado el complemento SmartSearch/Finder. Use el módulo SmartSearch/Finder. Hay 2 ... búsqueda y búsqueda inteligente. Ejecute el indexador desde Smart Search enter image description here

También es útil tener un enlace a Smart Search/Finder en su menú. Puede estar en un menú oculto.

1
Montano