Jump to content

[RISOLTO] Aggiungere blocco dopo elenco prodotti, nella pagina ordine del back office (PS1.7.7)


DARKF3D3

Recommended Posts

Vorrei aggiungere un blocco che mostri il testo "ORDINE COMPLETO" all'interno della pagina del dettaglio ordine, subito l'elenco dei prodotti ordinati.

Il testo dovrebbe essere visualizzato dopo l'ultimo prodotto, quindi se per esempio i prodotti sono 20, in pagine da 8, deve essere visibile solamente quando ci si sposta sull'ultima pagina.

Ho aggiunto il seguente codice all'interno del ciclo FOR del file:
/httpdocs/src/PrestaShopBundle/Resources/views/Admin/Sell/Order/Order/Blocks/View/product_list.html.twig

    {% if loop.last == true %}
        <tr><td colspan="8" style="background:#3c8f41;color:white;font-size:1.4rem;font-weight:bold;text-align:center;padding:.6rem;width:100%;">ORDER COMPLETED</td></tr>
    {% endif %}

Il problema è che in questo modo il testo è mostrato su tutte le pagine.

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

On 9/21/2021 at 11:14 AM, DARKF3D3 said:

Vorrei aggiungere un blocco che mostri il testo "ORDINE COMPLETO" all'interno della pagina del dettaglio ordine, subito l'elenco dei prodotti ordinati.

Il testo dovrebbe essere visualizzato dopo l'ultimo prodotto, quindi se per esempio i prodotti sono 20, in pagine da 8, deve essere visibile solamente quando ci si sposta sull'ultima pagina.

Ho aggiunto il seguente codice all'interno del ciclo FOR del file:
/httpdocs/src/PrestaShopBundle/Resources/views/Admin/Sell/Order/Order/Blocks/View/product_list.html.twig

    {% if loop.last == true %}
        <tr><td colspan="8" style="background:#3c8f41;color:white;font-size:1.4rem;font-weight:bold;text-align:center;padding:.6rem;width:100%;">ORDER COMPLETED</td></tr>
    {% endif %}

Il problema è che in questo modo il testo è mostrato su tutte le pagine.

Puoi riportarmi tutto il codice di questo file?

Link to comment
Share on other sites

Questo è il file originale:
 

{% for product in orderForViewing.products.products %}
    {% include '@PrestaShop/Admin/Sell/Order/Order/Blocks/View/product.html.twig' with {
        'product': product,
        'productIndex': loop.index,
        'paginationNum': paginationNum,
        'isColumnLocationDisplayed': isColumnLocationDisplayed,
        'isColumnRefundedDisplayed': isColumnRefundedDisplayed,
        'isAvailableQuantityDisplayed': isAvailableQuantityDisplayed
    } %}
{% endfor %}

Mentre questo è quello modificato che mostra il blocco (però alla fine di ogni pagina di prodotti e non solo nell'ultima:
 

{% for product in orderForViewing.products.products %}
    {% include '@PrestaShop/Admin/Sell/Order/Order/Blocks/View/product.html.twig' with {
        'product': product,
        'productIndex': loop.index,
        'paginationNum': paginationNum,
        'isColumnLocationDisplayed': isColumnLocationDisplayed,
        'isColumnRefundedDisplayed': isColumnRefundedDisplayed,
        'isAvailableQuantityDisplayed': isAvailableQuantityDisplayed
    } %}
    {% if loop.last == true %}
        <tr><td colspan="8" style="background:blue;color:white;">FINE PRODOTTI</td></tr>
    {% endif %}
{% endfor %}

 

Link to comment
Share on other sites

14 hours ago, DARKF3D3 said:

Questo è il file originale:
 

{% for product in orderForViewing.products.products %}
    {% include '@PrestaShop/Admin/Sell/Order/Order/Blocks/View/product.html.twig' with {
        'product': product,
        'productIndex': loop.index,
        'paginationNum': paginationNum,
        'isColumnLocationDisplayed': isColumnLocationDisplayed,
        'isColumnRefundedDisplayed': isColumnRefundedDisplayed,
        'isAvailableQuantityDisplayed': isAvailableQuantityDisplayed
    } %}
{% endfor %}

Mentre questo è quello modificato che mostra il blocco (però alla fine di ogni pagina di prodotti e non solo nell'ultima:
 

{% for product in orderForViewing.products.products %}
    {% include '@PrestaShop/Admin/Sell/Order/Order/Blocks/View/product.html.twig' with {
        'product': product,
        'productIndex': loop.index,
        'paginationNum': paginationNum,
        'isColumnLocationDisplayed': isColumnLocationDisplayed,
        'isColumnRefundedDisplayed': isColumnRefundedDisplayed,
        'isAvailableQuantityDisplayed': isAvailableQuantityDisplayed
    } %}
    {% if loop.last == true %}
        <tr><td colspan="8" style="background:blue;color:white;">FINE PRODOTTI</td></tr>
    {% endif %}
{% endfor %}

 

Il problema è che il twig non include il loop.last salvo non venga utilizzato il modello filter.

A questo punto poiché il tuo codice in html non include alcun tipo di variabile perché non lo inserisci banalmente così?

 

{% for product in orderForViewing.products.products %}
    {% include '@PrestaShop/Admin/Sell/Order/Order/Blocks/View/product.html.twig' with {
        'product': product,
        'productIndex': loop.index,
        'paginationNum': paginationNum,
        'isColumnLocationDisplayed': isColumnLocationDisplayed,
        'isColumnRefundedDisplayed': isColumnRefundedDisplayed,
        'isAvailableQuantityDisplayed': isAvailableQuantityDisplayed
    } %}

{% endfor %}
<tr><td colspan="8" style="background:blue;color:white;">FINE PRODOTTI</td></tr>


 

Link to comment
Share on other sites

15 minutes ago, DARKF3D3 said:

In quel modo però ottengo sempre lo stesso risultato, ovvero il blocco viene mostrato dopo l'ultimo prodotto di ogni pagina, mentre io avrei bisogno di mostrarlo solamente una volta, sull'ultimo prodotto dell'ordine.

Hai ragione, puoi provare così?

 

{% set a = 1 %}
{% for product in orderForViewing.products.products %}
    {% set a = a + 1 %}
    {% include '@PrestaShop/Admin/Sell/Order/Order/Blocks/View/product.html.twig' with {
        'product': product,
        'productIndex': loop.index,
        'paginationNum': paginationNum,
        'isColumnLocationDisplayed': isColumnLocationDisplayed,
        'isColumnRefundedDisplayed': isColumnRefundedDisplayed,
        'isAvailableQuantityDisplayed': isAvailableQuantityDisplayed
    } %}
    {% if orderForViewing.products.products|length == a %}
        <tr><td colspan="8" style="background:blue;color:white;">FINE PRODOTTI</td></tr>
    {% endif %}
{% endfor %}

 

Link to comment
Share on other sites

Niente da fare.

Da quello che ho visto credo che il problema sia perché il loop passa sempre tutti i prodotti indipendentemente dalla paginazione impostata.
Semplicemente i prodotti che non devono essere mostrati sono nascosti dal file "product.html.twig" con l'aggiunta della classe "d-none" che aggiunge "display: none!important;" all'elemento.
Infatti se si controlla l'html della pagina, si può vedere che in un ordine con 20 prodotti paginati a 8, è sempre presente l'html di tutti e 20 i prodotti.

Questo è il codice usato:

{% if rowIsDisplayed %} d-none d-print-table-row{% endif %}

La variabile viene impostata a inizio file in questo modo:

{% set rowIsDisplayed =  (productIndex is defined and paginationNum is defined and productIndex > paginationNum) %}

 

 

Sto cercando di capire se riesco a sfruttare questa variabile per nascondere il blocco dove non necessario.

 

 

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

Soluzione trovata!

FIle: /src/PrestaShopBundle/Resources/views/Admin/Sell/Order/Order/Blocks/View/product.html.twig
A riga 150, dopo </tr>, ho aggiunto questo codice:

{% if loop.revindex == 1 %}
  <tr id="orderProduct_{{ product.orderDetailId }}" class="cellProduct{% if rowIsDisplayed %} d-none d-print-table-row{% endif %}">
    <td colspan="8" style="background:blue;color:white;font-size:1.7rem;text-align:center">ORDINE COMPLETATO</td>
  </tr>
{% endif %}

 

Link to comment
Share on other sites

  • DARKF3D3 changed the title to [RISOLTO] Aggiungere blocco dopo elenco prodotti, nella pagina ordine del back office (PS1.7.7)

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...