Jump to content

[Solucionado] Añadir nuevo campo "select option" a la ficha producto PS 1.7


sylarlocke

Recommended Posts

Hola, estoy intentando añadir un nuevo campo, tiene que ser tipo "select option", he seguido los pasos de este tutorial, y ha funciona perfectamente, pero claro este tutorial es para un campo tipo "Input", en la propia página del producto hay un campo "Marca" que contiene exactamente lo que quiero hacer, un select option con el value id_tabla y el nombre del campo como opción.

https://victor-rodenas.com/2018/02/19/anadir-campos-a-los-productos-en-prestashop-1-7/

imagen.png.dcc958c144e327774ec4c39104f1d647.png

Explico el campo tipo "select" va a cargar todos los registros que contangan la tabla de tal manera que el value de cada option sea el id y el valor sea el nombre.

Actualmente lo tengo como el código que aparece más bajo, pero claro los tengo que meter a mano y cada vez que se añada un registro en la tabla pues tendría que añadirlo a mano aquí, obviamente esta no es la solución.
Me gustaría coger la misma estructura que se a añadido con la opción marca e implementarla aquí.

Ahora mismo tengo el tamplate extrafields.tpl que trae el módulo hhproduct de la siguiente manera, lo que ya no sé donde tengo y como implementarlo para llamar a la tabla y que vaya cargando cada registro en el select con sus respectivos options:

<div class="m-b-1 m-t-1">
    <h2>{l s='Elige una prueba asociado a este producto' d='Modules.Checkpayment.Shop'}</h2>
    
        <fieldset class="form-group">
             <!--<div class="col-lg-12 col-xl-4">
                <label class="form-control-label">{l s='Pruebas' d='Modules.Hhproduct.Shop'}</label>
                <input type="text" name="id_prueba" class="form-control" {if $id_prueba && $id_prueba != ''}value="{$id_prueba}"{/if}/>
            </div>-->    
            <div class="col-lg-12 col-xl-4">
                <label class="form-control-label">{l s='Pruebas' d='Modules.Hhproduct.Shop'}</label>
                <select name="id_prueba" class="form-control">
                  <option {if $id_prueba && $id_prueba != ''}value="{$id_prueba}"{/if} selected="selected" disabled="disabled">{if $id_prueba && $id_prueba != ''}{$id_prueba}{else}Selecciona una prueba{/if}</option>
                  <option value="1">prueba1</option>
                  <option value="2">prueba2</option>
                  <option value="3">prueba3</option>
                </select>        
        </fieldset>
    
        <div class="clearfix"></div>
</div>

 

imagen.png

Edited by sylarlocke
Tema solucionado (see edit history)
Link to comment
Share on other sites

Exactamente no se muy bien lo que quieres conseguir ni donde está ese campo. Si es en la ficha del producto entiendo que lo podrías hacer con combinaciones y no tendrías que meter tablas a parte, pero como digo, no he logrado entender lo que quieres concretamente y quizás hay una razón para hacer lo que estás haciendo.

Link to comment
Share on other sites

Hola Jesa, lo que quiero es añadir un nuevo campo "custom" nuevo en la página de productos del admin, un nuevo campo que sea igual que marcas.

Luego voy a crear una tabla en la base de datos con dos campos el id y el nombre.

Una vez en el admin sería añadir un campo nuevo igual que "marcas" que sea un desplegable "select option" y permita seleccionar un registro de varios existentes. Cuando le de a guardar este producto ahora tendrá vinculado un nuevo campo, supongamos que se llama el campo "comercial" y tenga asignado este comercial al producto.

Asi que lo que he hecho es crear un nuevo campo con el tuto de Víctor, pero quiero que sea un select y no un input. Este select quiero que sea igual que el de Marcas.

Ah no tiene nada que ver con las combinaciones, de hecho no tenemos ninguna combinación en toda la página por lo que tiene que ser un campo adicional como cualquier otro.

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

Ok, pues por lo que me cuentas podría ser entiendo una característica del producto y no necesitarías tocar nada de código a no ser que este campo pongamos "comercial" como tú dices no quieras que aparezca en la propia ficha del producto y tendrías que controlar que esa característica no salga.

Sin problemas se puede hacer lo que buscas, pero así ya lo tienes hecho y lo tendrías con menos esfuerzo. Echale un ojo  a la documentación: https://devdocs.prestashop.com/1.7/basics/introduction/ no te va a decir como se hace directamente, pero es fundamental para saber como sobreescribir los métodos y aplicar cambios en prestashop.

Link to comment
Share on other sites

Hola Jesa, gracias.

En principio si tengo que tocar código, te pongo un ejemplo claro de lo que quiero hacer.

En la ficha del producto en el admin(solo lo quiero aquí y no en la parte front del usuario final).

Quiero exactamente igual un campo como marcas.

En marcas cuando pulsas en el desplegable aparecen todas las marcas, existe una tabla marcas en presta por defecto, creo que es ps_manufacturer que contiene todas las marcas.

Pues bien yo quiero añadir un nuevo campo nuevo, llamado comercial, un comercial solo tiene un producto asociado. Tengo que crear una tabla comercial en presta nueva que se llame ps_comercial(por ejemplo), aquí añado 10 nombres de comerciales y cada uno con un id. id_comercial y nombre.

Ahora cuando voy a la ficha del producto quiero que aparezca igual que marcas otro nuevo campo que se llame comercial, cuando pulse muestre los 10 nombres que anteriormente he añadido en la tabla comercial. Cuando el administrador de la página pulse en uno de ellos y le de a guardar el producto se vincule el comercial a ese producto.

Por eso mi idea era seguir el patrón de marcas y seguir que ficheros hay que modificar u override que haya que hacer para tenerlo igual, el tuto de Víctor encajaba perfectamente con lo que quería hacer pero no permitía hacerlo con un "select option"(desplegable) solo con un "input".

Link to comment
Share on other sites

A ver, me parece correcto tu planteamiento, yo sería el que haría si me tocara hacerlo, es más, para dejarlo bien deberías de permitir mantener esa tabla desde el backend y que si desaparece un comercial o hay que añadir uno nuevo no tengas que entrar a la bbdd directamente.

Dicho esto, hay ocasiones en las que quizás hay que ser práctico o adaptarnos a lo que tenemos y sabemos. No se qué conocimientos tienes de programación, si no van más allá de copiar-pegar un tutorial, sinceramente te estás metiendo en un jardín. He visto por encima el tutorial y te vale pero no es exactamente lo que buscas, si no tienes conocimientos al final de poco te va a servir porque no es cambiar dos líneas.

Por lo demás, en el tutorial tienes la idea principal, clases para acceder a la bbdd, controladores, la clase Product donde añadir los campos...

Mi opción de añadirlo en categorías es menos elegante pero el nivel de programación es mucho menor.

A partir de ahí ya tienes que valorarlo

Link to comment
Share on other sites

Hola, 

Te invitamos a probar nuestro modulo de campos personalizados  Advanced Custom Fields, lo puedes ver en el siguiente link: 

https://addons.prestashop.com/es/pestanas/29193-advanced-custom-fields-create-new-fields-quickly.html

 

Espero cumpla con tus expectativas y lo que quieres lograr en tu sitio. 

 

Te deseo un buen dia, 

Support Team

202 ecommerce 

Link to comment
Share on other sites

hace 16 minutos, 202ecommerce dijo:

Hola, 

Te invitamos a probar nuestro modulo de campos personalizados  Advanced Custom Fields, lo puedes ver en el siguiente link: 

https://addons.prestashop.com/es/pestanas/29193-advanced-custom-fields-create-new-fields-quickly.html

 

Espero cumpla con tus expectativas y lo que quieres lograr en tu sitio. 

 

Te deseo un buen dia, 

Support Team

202 ecommerce 

¿Puede automáticamente decidir si quieres o no mostrar el campo en el front?

Link to comment
Share on other sites

23 hours ago, jesa said:

A ver, me parece correcto tu planteamiento, yo sería el que haría si me tocara hacerlo, es más, para dejarlo bien deberías de permitir mantener esa tabla desde el backend y que si desaparece un comercial o hay que añadir uno nuevo no tengas que entrar a la bbdd directamente.

Dicho esto, hay ocasiones en las que quizás hay que ser práctico o adaptarnos a lo que tenemos y sabemos. No se qué conocimientos tienes de programación, si no van más allá de copiar-pegar un tutorial, sinceramente te estás metiendo en un jardín. He visto por encima el tutorial y te vale pero no es exactamente lo que buscas, si no tienes conocimientos al final de poco te va a servir porque no es cambiar dos líneas.

Por lo demás, en el tutorial tienes la idea principal, clases para acceder a la bbdd, controladores, la clase Product donde añadir los campos...

Mi opción de añadirlo en categorías es menos elegante pero el nivel de programación es mucho menor.

A partir de ahí ya tienes que valorarlo

Hola Jesa, gracias por tomarte la molestia de ayudarme y entender la situación.

Te agradezco las alternativas y opciones planteadas, es cierto que hubiera quedado mejor y más fácil para los administradores de la página añadir un comercial a un producto. Desde el punto de vista de programación me defiendo bien con php aunque es cierto que no he tocado mucho Symphony, aunque si otros frameworks.

Despúes de mucho meditar y buscar soluciones, opté por la inicial que me recomendaste de crearlo como una características del producto y añadirlo allí.

Así que te agradezco por las opciones que has ofrecido, me han ayudado a resolver el problema.

 

22 hours ago, 202ecommerce said:

Hola, 

Te invitamos a probar nuestro modulo de campos personalizados  Advanced Custom Fields, lo puedes ver en el siguiente link: 

https://addons.prestashop.com/es/pestanas/29193-advanced-custom-fields-create-new-fields-quickly.html

 

Espero cumpla con tus expectativas y lo que quieres lograr en tu sitio. 

 

Te deseo un buen dia, 

Support Team

202 ecommerce 

Gracias por el ofrecimiento, podría haber sido una buena opción para mi caso, lástima que llegue tarde para ver su respuesta, no obstante nos puede servir para futuros campos, es muy probable que este módulo nos venga muy bien, igualmente le voy a echar un vistazo más profundo.

___EDITO___

Por cierto al acceder a la demo del módulo aparece un mensaje de alerta de seguridad, tanto en el front como el back, si lo podéis solucionar sería estupendo, ya que como he comentando es probable que este módulo nos sirva en un futuro a corto plazo.

 

Doy marcado como solucionado este post.

 

 

Edited by sylarlocke (see edit history)
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...