Jump to content

Ordenar provincias en Prestashop 1.7.5.2


Silviasil

Recommended Posts

Hola,


En el selector de provincias de la ficha de direcciones en la cuenta de cliente o invitado, éstas aparecen desordenadas y me gustaría que apareciesen por orden alfabético.

En el archivo Country.php dentro de la carpeta classes, en la línea 154 aparece el orden por nombre:

DB_PREFIX_ . 'state` ORDER BY `name` ASC'

El problema es que aunque el orden está establecido por el nombre de la provincia del campo name de la base de datos, en realidad en selector del formulario aparecen ordenados por el ID (id_state).


¿Sabéis como ordenarlas alfabéticamente por nombre ?

Edited by Silviasil (see edit history)
Link to comment
Share on other sites

  • 2 months later...
  • 4 months later...

Hola, me ví en la misma situación. El problema es que el desplegable lo saca la clase State.php que hace la select sin orden. Para solucionarlo lo mejor es crear un override con el order por name.

Para hacerlo creáis un fichero State.php en override/classes y poneis dentro este código. Despues tendreis qeu borrar la caché para que os funcione.

<?php class State extends StateCore {

    /**

     * Get states by Country ID.

     *

     * @param int $idCountry Country ID

     * @param bool $active true if the state must be active

     *

     * @return array|false|mysqli_result|PDOStatement|resource|null

     */

    public static function getStatesByIdCountry($idCountry, $active = false)

    {

        if (empty($idCountry)) {

            die(Tools::displayError());

        }

        return Db::getInstance()->executeS(

            'SELECT *

            FROM `' . _DB_PREFIX_ . 'state` s

            WHERE s.`id_country` = ' . (int) $idCountry . ($active ? ' AND s.active = 1' : '') . '

            ORDER BY `name` ASC'

        );

    }

}

  • Like 2
Link to comment
Share on other sites

  • 5 months later...
On 12/5/2019 at 6:50 AM, ichavarria said:

Hola, me ví en la misma situación. El problema es que el desplegable lo saca la clase State.php que hace la select sin orden. Para solucionarlo lo mejor es crear un override con el order por name.

Para hacerlo creáis un fichero State.php en override/classes y poneis dentro este código. Despues tendreis qeu borrar la caché para que os funcione.

<?php class State extends StateCore {

    /**

     * Get states by Country ID.

     *

     * @param int $idCountry Country ID

     * @param bool $active true if the state must be active

     *

     * @return array|false|mysqli_result|PDOStatement|resource|null

     */

    public static function getStatesByIdCountry($idCountry, $active = false)

    {

        if (empty($idCountry)) {

            die(Tools::displayError());

        }

        return Db::getInstance()->executeS(

            'SELECT *

            FROM `' . _DB_PREFIX_ . 'state` s

            WHERE s.`id_country` = ' . (int) $idCountry . ($active ? ' AND s.active = 1' : '') . '

            ORDER BY `name` ASC'

        );

    }

}

Hola a todos... Como hago para hacer que un Estado en particular me aparezca por defecto. En mi tienda me aparecen en orden alfabético, pero quiero que un estado aparezca en la lista de primero o por defecto

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...