Автор Тема: Шорткоды получают не те значения полей  (Прочитано 134 раз)

03 Декабрь 2020, 21:37:42
  • Новичок
  • *
  • Сообщений: 21
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте!Опишу проблему: Мне нужно было добавить в админку, в раздел категорий 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}
04 Декабрь 2020, 12:29:47
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 16373
  • Репутация: +14620/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В цикл {foreach from=$subcategories item=subcategory} вставьте {hook h='Country'}
04 Декабрь 2020, 18:45:16
Ответ #2
  • Новичок
  • *
  • Сообщений: 21
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В цикл {foreach from=$subcategories item=subcategory} вставьте {hook h='Country'}


Подскажите пожалуйста как это должно выглядеть?Вот так? {foreach from=$subcategories item=subcategory hook h='Country'} ?
04 Декабрь 2020, 19:48:59
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 16373
  • Репутация: +14620/-5
  • Сообщество PrestaShop
    • Просмотр профиля
{foreach from=$subcategories item=subcategory}
....
    {hook h='Country'} /* Там где хотите выводить */
04 Декабрь 2020, 20:38:47
Ответ #4
  • Новичок
  • *
  • Сообщений: 21
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
{foreach from=$subcategories item=subcategory}
....
    {hook h='Country'} /* Там где хотите выводить */

Так хук ведь уже в цикле, нет?
04 Декабрь 2020, 21:12:52
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 1251
  • Репутация: +10/-1
  • Сообщество PrestaShop
    • Просмотр профиля
{hook h='Country'}  - это шорткод плагина advanced custom fields, вставляю его в class="" и получаю не то значение
Для подстановок текстового значения в шаблоны темы этот модуль не подходит.
Да и никакой модуль не подойтет.
Вам нужно просто определить переменную шаблона и привязать ее к категории.
04 Декабрь 2020, 21:16:33
Ответ #6
  • Новичок
  • *
  • Сообщений: 21
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
{hook h='Country'}  - это шорткод плагина advanced custom fields, вставляю его в class="" и получаю не то значение
Для подстановок текстового значения в шаблоны темы этот модуль не подходит.
Да и никакой модуль не подойтет.
Вам нужно просто определить переменную шаблона и привязать ее к категории.

Может быть видели где-нибудь решение?На английском или на русском языке, не важно. Очень долго пытаюсь реализовать кастомные поля в панели администратора, но подходят далеко не все методы.
04 Декабрь 2020, 22:41:50
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 33294
  • Репутация: +26768/-0
    • Просмотр профиля
https://www.prestashop.com/forums/topic/1000477-custom-file-upload-on-symfony-admin-pages-176/
Вот пример как создаются кастомные поля в Symphony framework с пререопределением метода formBuilder.
Такой подход можно использовать ко всем объектам prestashop.
05 Декабрь 2020, 04:55:07
Ответ #8
  • Новичок
  • *
  • Сообщений: 21
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
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 файл шаблона, не подскажите случайно как это можно сделать?
05 Декабрь 2020, 12:45:13
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 33294
  • Репутация: +26768/-0
    • Просмотр профиля
Вывести можно в шаблоне категории так:
/themes/classic/templates/catalog/_partials/category-header.tpl
{$category.description_long}