Prestashop 1.7 зарегистрироваться smarty теги, связанные товары - PullRequest
0 голосов
/ 19 сентября 2018

Введение

Мне нужно отобразить связанные продукты из продукта в другом месте, чем по умолчанию в prestashop (однако тема должна быть в состоянии показать блок связанных продуктов по умолчанию в prestashop).

Я много искал об этом, и все, что я могу найти, это модули, учебные пособия для <1.6 version и т. Д.

Я использую 1.7.2 и эти примеры мне не подходят.

Мое ожидание :

Зарегистрируйте немного умных, чтобы использовать его после и везде для отображения атрибутов продукта из связанныхпродукт, который я хочу (индивидуально).

Например

{$product.id.accessory.reference} или {$product.id.accessory.image},

То же самое с именем, описанием и ценой.

Полагаю, это может быть

{foreach $accessory ...}
{$accessory.name}
{$accessory.price}
{/foreach}

У меня будет только сопутствующий продукт для некоторых продуктов, но я хотел бы сохранить код для нескольких ссылок наубедитесь, что это будет полезно всем.

Я удивлен, что prestashop имеет эту функциюaно он показывается в одном месте по умолчанию (если активен), и я не нашел ни одного тега, чтобы применить его в другом месте.Используя {debug}, я нигде не вижу аксессуаров, аксессуаров или связанных с ними вещей.

Дело в том, что нам нужно несколько шагов, чтобы достичь его, и я искренне не знаю ни ядра prestashop, ни того, как он справляется с smarty.или база данных.Я хотел бы написать собственный магазин, но сейчас я здесь работаю ...

Я попробовал этот ответ, но не могу достичь ожидаемого: Prestashop: Как получить аксессуары для продукта

Любая помощь будет отличной, спасибо!

* РЕДАКТИРОВАТЬ *

Я попытался получить доступ к публичной статической функции через smarty {Product::getAccessoriesLight(intval($cookie->id_lang), $product.id)}

если я var_dump это:

{Product::getAccessoriesLight(intval($cookie->id_lang), $product.id)|@var_dump}

Я получаю:

array (1) {[0] => array (3) {["id_product"] => string (3) "963" ["reference"] => string (15) "CFPS SAH0-M11-L" ["name"] => NULL}}

такон работает для получения идентификатора продукта и ссылки, а не для имени (не знаю почему).Я попробую другую функцию, и постараюсь выяснить, как показать одно значение.

1 Ответ

0 голосов
/ 21 сентября 2018

** решено **

prestashop возвращает массив объектов или объектов с массивами.Иногда массив только с позицией, и эта позиция тоже массив.Smarty имеет дело с массивами, начиная с позиции 1, в зависимости от случая.Это все немного сбивает с толку логически.

Что я сделал:

создать общедоступный статический метод для доступа к нестатическим методам (пример 1) или статический метод для запроса чего-либо и получения результатов (в этом случае, используя executeS, вы получите объемные данные, как в примере 2:

{assign var=foo value=Product::getSomethingNew($product.id)}

возвращает

Object(Product)->values|attrArray->values

, в этом случае вы можете сделать {$foo.value} или {assign var=data value=$foo->attrArray} then {$data.value}

Во втором случае вы получите:

Array[1]->array[data] so you can simply: {$foo[1].value}

И, очевидно, он работает везде, где вам нужно, когда вы создаете свои собственные методы для доступа к данным.

Я не нашел логики или причины, по которой некоторые массивы были равны нулю с индексом 0, но значения из индекса 1 и других обычно начинаются с индекса 0, но ... Я получал разные значения атрибута для объекта продуктадля того же удостоверения, поэтому я не возражаю против слишком большого расследования на prestashop. Кажется, школьный проект зашел слишком далеко ...

Надеюсь, это кому-нибудь поможет.

...