Шорткоды получают не те значения полей

Автор vac9p, 03 декабря 2020, 21:37:42

« назад - далее »

vac9p

Здравствуйте!Опишу проблему: Мне нужно было добавить в админку, в раздел категорий Prestashop кастомные поля. После долгих попыток и мучений было принято решение использовать плагин advanced custom fields. Поля добавились, все ок, но появилась проблема с выводом во фронтенде. Для отображения полей плагин использует свои шорткоды. Мне нужно вывести во фронтенд значение поля подкатегории, когда я добавляю шорткод в файл category-subcategories.tpl, в цикл вывода подкатегорий, во фронтенде, подключается поле не подкатегорий, а родительской категории. То есть грубо говоря - есть 3 подкатегории, мне нужно для каждой задать css класс, со значением из кастомного поля, я вставляю шорткод в разметку и вместо значения заданного для подкатегории, я получаю значение родительской категории.
ps {hook h='Country'}  - это шорткод плагина advanced custom fields, вставляю его в class="" и получаю не то значение


{**
* 2007-2017 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author    PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2017 PrestaShop SA
* @license   http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*}

{block name='product_list_subcategories'}
    {if isset($subcategories)}
        <!-- Subcategories -->
            <div class="row filter-area">
                {foreach from=$subcategories item=subcategory}
                    <div class="col-{$iqitTheme.cat_sub_thumbs_p} collection-shape col-md-{$iqitTheme.cat_sub_thumbs_t} col-lg-{$iqitTheme.cat_sub_thumbs_d} {hook h='Country'} ">
                        <div class="subcategory-image">
                            <a href="{$subcategory.url}">
                                <img src="{$subcategory.image.bySize.medium_default.url}" alt="{$subcategory.name}" width="{$subcategory.image.bySize.medium_default.width}"
                                     height="{$subcategory.image.bySize.medium_default.height}" class="img-fluid"/>
                            </a>
                           
                        </div>
                        <a class="subcategory-name" href="{$subcategory.url}">{$subcategory.name}</a>
    <div class="subcategory-description">{$subcategory.description|escape:'html':'UTF-8' nofilter}   
   
    <div class="test"></div>
    </div>   
                       
                    </div>

                {/foreach}
            </div>
         
        </div>
    {/if}
{/block}

Adik

В цикл {foreach from=$subcategories item=subcategory} вставьте {hook h='Country'}

vac9p

Цитата: Adik от 04 декабря 2020, 12:29:47
В цикл {foreach from=$subcategories item=subcategory} вставьте {hook h='Country'}


Подскажите пожалуйста как это должно выглядеть?Вот так? {foreach from=$subcategories item=subcategory hook h='Country'} ?

Adik

{foreach from=$subcategories item=subcategory}
....
    {hook h='Country'} /* Там где хотите выводить */

vac9p

Цитата: Adik от 04 декабря 2020, 19:48:59
{foreach from=$subcategories item=subcategory}
....
    {hook h='Country'} /* Там где хотите выводить */

Так хук ведь уже в цикле, нет?

tigran

Цитата: vac9p от 03 декабря 2020, 21:37:42
{hook h='Country'}  - это шорткод плагина advanced custom fields, вставляю его в class="" и получаю не то значение
Для подстановок текстового значения в шаблоны темы этот модуль не подходит.
Да и никакой модуль не подойтет.
Вам нужно просто определить переменную шаблона и привязать ее к категории.

vac9p

Цитата: tigran от 04 декабря 2020, 21:12:52
Цитата: vac9p от 03 декабря 2020, 21:37:42
{hook h='Country'}  - это шорткод плагина advanced custom fields, вставляю его в class="" и получаю не то значение
Для подстановок текстового значения в шаблоны темы этот модуль не подходит.
Да и никакой модуль не подойтет.
Вам нужно просто определить переменную шаблона и привязать ее к категории.

Может быть видели где-нибудь решение?На английском или на русском языке, не важно. Очень долго пытаюсь реализовать кастомные поля в панели администратора, но подходят далеко не все методы.

coder

https://www.prestashop.com/forums/topic/1000477-custom-file-upload-on-symfony-admin-pages-176/
Вот пример как создаются кастомные поля в Symphony framework с пререопределением метода formBuilder.
Такой подход можно использовать ко всем объектам prestashop.

vac9p

Цитата: coder от 04 декабря 2020, 22:41:50
https://www.prestashop.com/forums/topic/1000477-custom-file-upload-on-symfony-admin-pages-176/
Вот пример как создаются кастомные поля в Symphony framework с пререопределением метода formBuilder.
Такой подход можно использовать ко всем объектам prestashop.

У меня версия престашопа 1.7.5 и заработал другой метод добавления полей с помощью переопределений он описан здесь -https://stackoverflow.com/questions/30735704/prestashop-1-6-add-custom-field-to-category . Поля появились, но я не понимаю как добавить их в tpl файл шаблона, не подскажите случайно как это можно сделать?

coder

Вывести можно в шаблоне категории так:
/themes/classic/templates/catalog/_partials/category-header.tpl
{$category.description_long}