Подмена названия продукта в отзывах на главной Есть решение

Добрый день.


Использую шаблон Unishop в home.reviews.html есть код вывода отзывов на главной странице:

{foreach $reviews as $review}
<div class="homepage-reviews_el">
<div class="clearfix">
{if isset($products_review[$review.product_id])}
<a href="{$review.product_url}" class="homepage-reviews_el-image">
{if $theme_settings.homepage_reviews_images_lazy}
{$wa->shop->productImgHtml($products_review[$review.product_id], '96', ['class' => 'js-image-lazy js-product-image',  'alt' => $review.product_name|escape])|replace:"src":"src=`$wa_theme_url`img/lazy-image.png data-src"}
{else}
{$wa->shop->productImgHtml($products_review[$review.product_id], '96', ['class' => 'js-product-image',  'alt' => $review.product_name|escape])}
{/if}
</a>
{/if}
<div class="homepage-reviews_el-right">
<div class="homepage-reviews_el-title">
{if $review.rate > 0}
<span class="rating">
{$wa->shop->ratingHtml($review.rate, 10)}
</span>
{/if}
{if isset($products_review[$review.product_id])}
<a href="{$review.product_url}">{$review.product_name|escape}</a>
{else}
{$review.product_name|escape}
{/if}
</div>
<div class="homepage-reviews_el-text">{strip_tags($review.text)|truncate:150}</div>
</div>
</div>
</div>
{/foreach}

{$review.product_name|escape} - заголовки от товаров

На сайте так же есть плагин SEO-оптимизация, в которой используются переменные {$product.seo_name} и {$product.fields[1].value}

Как сделать так, чтобы они подставлялись в место {$review.product_name|escape} ?

6 ответов

  • 1
    kadurinho Эксперт Разработчик 17 октября 2019 12:20 # Решение

    После

    {foreach $reviews as $review}

    дописать

    {$pr = $wa->shop->product($review.product_id)}

    тем самым вы дерните объект товара, и тогда попробовать обращаться к дополнительным полям через

    {$pr.seo_name}  {$pr.fields[1].value}

    P.S. учтите, будут дополнительные запросы к БД


    • +1
      realteam realteam 17 октября 2019 12:24 #

      К сожалению не срабатывает

      • +2
        kadurinho kadurinho Эксперт Разработчик 17 октября 2019 12:33 #
        {$pr|wa_dumpc}

        что выводит конструкция?

        • +1
          realteam realteam 17 октября 2019 12:42 #

          Вот, shopProduct object - данные подтер

          dumped from wa-cache/apps/shop/templates/compiled/shop_ru_RU/c9/bb/93/c9bb935d8dadc199fcad8a6113970b23cd6f9a67.file.home.reviews.html.php line #45:
          
          shopProduct object {
            *data =&gt; array(
              'id' =&gt; '28',
              'name' =&gt; '',
              'summary' =&gt; '',
              'meta_title' =&gt; '',
              'meta_keywords' =&gt; '',
              'meta_description' =&gt; '',
              'description' =&gt; '';       
          
          текст с главной ...
          
              'contact_id' =&gt; '1',
              'create_datetime' =&gt; '2019-07-09 17:37:05',
              'edit_datetime' =&gt; '2019-10-17 11:27:47',
              'status' =&gt; '1',
              'type_id' =&gt; '2',
              'image_id' =&gt; '175',
              'image_filename' =&gt; '',
              'video_url' =&gt; NULL,
              'sku_id' =&gt; '799',
              'ext' =&gt; 'jpg',
              'url' =&gt; '',
              'rating' =&gt; '4.61',
              'price' =&gt; '80000.0000',
              'compare_price' =&gt; '92000.0000',
              'currency' =&gt; 'RUB',
              'min_price' =&gt; '80000.0000',
              'max_price' =&gt; '1029000.0000',
              'tax_id' =&gt; '0',
              'count' =&gt; NULL,
              'cross_selling' =&gt; NULL,
              'upselling' =&gt; '2',
              'rating_count' =&gt; '35',
              'total_sales' =&gt; '0.0000',
              'category_id' =&gt; '2',
              'badge' =&gt; 'lowprice',
              'sku_type' =&gt; '1',
              'base_price_selectable' =&gt; '80000.0000',
              'compare_price_selectable' =&gt; '92000.0000',
              'purchase_price_selectable' =&gt; '0.0000',
              'sku_count' =&gt; '31',
              'flexdiscount_minimal_discount_price' =&gt; '0.0000',
              'flexdiscount_minimal_discount_currency' =&gt; NULL,
              'f7discounts_not_allow' =&gt; '0',
              'unconverted_currency' =&gt; 'RUB',
              'unconverted_price' =&gt; '80000.0000',
              'frontend_price' =&gt; '80000.0000',
              'unconverted_min_price' =&gt; '80000.0000',
              'frontend_min_price' =&gt; '80000.0000',
              'unconverted_max_price' =&gt; '1029000.0000',
              'frontend_max_price' =&gt; '1029000.0000',
              'unconverted_compare_price' =&gt; '92000.0000',
              'frontend_compare_price' =&gt; '92000.0000',
            )
            *is_dirty =&gt; array()
            *is_frontend =&gt; true
            *options =&gt; true
            *model =&gt; shopProductModel object { ** skipped as a descendant of waModel ** }
          }

          • +2
            kadurinho kadurinho Эксперт Разработчик 17 октября 2019 12:52 #

            Иногда документацию по плагину нужно читать.

            Удалите 

            {$pr = $wa->shop->product($review.product_id)}

            вместо этого

            {$pr = shopSeoViewHelper::extendProduct($wa->shop->product($review.product_id))}
            {$pr.seo_name}


            • +1
              realteam realteam 17 октября 2019 13:06 #

              Отлично! Спасибо за помощь. Работает.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите