Advertisement:

Author Topic: Añadir clase a select - osc_categories_select  (Read 1756 times)

juanjo

  • Newbie
  • *
  • Posts: 32
  • Web developer
Añadir clase a select - osc_categories_select
« on: April 04, 2013, 07:07:07 am »
Buenas noches,

estoy creando un tema con bootstrap, y necesito poder añadir una clase al select que se crea a partir de la función osc_categories_select.

Para esto necesito modificar una clase del core, CategoryForm, pero no me gustaría hacer esto y tener problemas con actualizaciones.

Leyendo el foro he podido comprobar que en estos momentos OSCLASS no permite sobreescribir clases en un tema, pero no he encontrado ningún ejemplo de como añadir una clase dentro del tema, para poder replicar la del core y adaptarla a mis necesidades.

¿Alguna indicación para poder realizar esto?

muchas gracias

_CONEJO

  • Administrator
  • Hero Member
  • *****
  • Posts: 4689
Re: Añadir clase a select - osc_categories_select
« Reply #1 on: April 04, 2013, 11:55:05 am »
En tu tema puedes crear un archivo llamado "functions.php" que contenga funcciones, en ese archivo, simplemente escribe nuevas funciones basándote en las propias del core, por ejemplo algo así

Code: [Select]
    function osc_categories_select_custom($name = 'sCategory', $category = null, $default_str = null) {
        if($default_str == null) $default_str = __('Select a category');
category_select_custom(Category::newInstance()->toTree(), $category, $default_str, $name);
    }


function category_select_custom($categories, $category, $default_item = null, $name = "sCategory")
        {
            echo '<select name="' . $name . '" id="' . $name . '">';
            if(isset($default_item)) {
                echo '<option value="">' . $default_item . '</option>';
            }
            foreach($categories as $c) {
                echo '<option value="' . $c['pk_i_id'] . '"' . ( ($category['pk_i_id'] == $c['pk_i_id']) ? 'selected="selected"' : '' ) . '>' . $c['s_name'] . '</option>';
                if(isset($c['categories']) && is_array($c['categories'])) {
                    subcategory_select_custom($c['categories'], $category, $default_item, 1);
                }
            }
            echo '</select>';
        }

        function subcategory_select_custom($categories, $category, $default_item = null, $deep = 0)
        {
            $deep_string = "";
            for($var = 0;$var<$deep;$var++) {
                $deep_string .= '&nbsp;&nbsp;';
            }
            $deep++;
            foreach($categories as $c) {
                echo '<option value="' . $c['pk_i_id'] . '"' . ( ($category['pk_i_id'] == $c['pk_i_id']) ? 'selected="selected"' : '' ) . '>' . $deep_string.$c['s_name'] . '</option>';
                if(isset($c['categories']) && is_array($c['categories'])) {
                    subcategory_select_custom($c['categories'], $category, $default_item, $deep);
                }
            }
        }

juanjo

  • Newbie
  • *
  • Posts: 32
  • Web developer
Re: Añadir clase a select - osc_categories_select
« Reply #2 on: April 04, 2013, 06:23:13 pm »
Muchas gracias _CONEJO

es mi primer proyecto con OSCLASS y aún estoy situandome.

como estoy acostumbrado a otros CMS, como Joomla, estaba buscando alguna manera de hacer overrides de funciones del core, para evitar tener que modificar la llamada a la función desde todos los archivos del tema que se invoque, o desde cualquier plugin que instale o desarrolle.

gracias de nuevo.

saludos