Форум пользователей Impera CMS
Impera CMS - отличный движок для лёгкого создания интернет магазина.
Обладает невероятным количеством функций, необходимых в онлайн торговле.

Следить
Главная
20:32
28 ноя
#
?
pikasso написал:

Привет всем - в карточке товара есть блок "похожие товары" - я хотел сделать блок - "с этим товаром легко комбинируются"

как видоизменить код чтоб выводились только "Связан.товары:" ??? подскажите очень нужно!

15:46
29 ноя
#
написал:

В ветке форума На странице товара вывести блок Аксессуары рядом с Рекомендуемые товары рассматривалась похожая задача, так что основу простейшей идеи, как видоизменить код, можно взять ту же: копируем код из другого понравившегося блока, только заменяем переменную со списком товаров на другую, в которой содержится подходящий по сути задачи список товаров.

Так как в этом случае важно знать, какие еще переменные (кроме типичных: список категорий, заголовок, ключевые слова и тому подобное) передаются движком в шаблонизатор, когда посетитель зашел на страницу товара (в шаблоне это файл product.tpl), то я перечислю переменные ниже.

Под словом запись ниже я понимаю типичный объект (в PHP это объект класса stdClass), то есть некая структура с доступом к полям в виде разименования запись->поле->подполе. Просто употребляю слово как напоминание, что такой структурированный элемент на самом деле получен преобразованием строки (записи) базы данных.

  • относящиеся конкретно к этому товару (то есть который сейчас просматривается покупателем)

    • $product   -   запись о товаре
      • $product->related_products   -   массив записей о связанных товарах
      • $product->accessory_products   -   массив записей о дополнительных товарах (аксессуарах)
    • $comments   -   массив записей об отзывах на товар
    • $articles_for_product   -   массив статей, связанных с этим товаром
    • $news_for_product   -   массив новостей, связанных с этим товаром

      рекомендуется обрамлять вывод содержимого указанных массивов записей в условие безошибочной отрисовки шаблона {if isset($переменная) && is_array($переменная) && !empty($переменная)}

  • где расположен товар

    • $brand   -   запись о бренде товара
    • $category   -   запись о категории товара

      при работе с шаблоном нужно знать, что первая переменная может не существовать - null (нет записи), - ведь этот товар в принципе может быть не прикреплен к какому-то бренду

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

    • $next_product   -   запись о следующем товаре (в пределах его категории)
    • $prev_product   -   запись о предыдущем товаре (в пределах его категории)

      при работе с шаблоном нужно знать, что одна из этих переменных или даже обе могуть иметь состояние null (нет записи), это происходит когда просматривают первый или последний товар или он вообще единственный в этой категории, поэтому рекомендуется предпринять в шаблоне соответствующие проверки (например обращаться к переменной с привлечением модификатора |default:false или обрамлять вывод в условие {if isset($переменная) && is_object($переменная)} или какое-то подобное ему по смыслу)

  • для разных блоков на странице товара (количество товаров в блоках, способ наполнения и тому подобное определено настройками сайта для соответствующих блоков; так как наполнение подразумевает сначала отбор из категории товара и в случае недостатка организовано восходящим дополнением из родительской категории, то предусмотрены переменные $..._category, которые почти никем не используются, но предназначались лишь чтобы на клиентской стороне знать имя самой верхней категории, начиная с которой был наполнен этот массив записей, скажем чтобы иметь возможность озаглавить блок как-то так: "Рекомендуем посмотреть еще такие товары из ИМЯ_КАТЕГОРИИ"; однако движок имеет в настройках и касаемые оглавления товарных блоков, поэтому польза этих переменных с именем "текущей" категории нивелирована и они сохранены лишь для совместимости со старыми шаблонами)

    • $mores   -   массив записей о похожих товарах в "текущей" категории
    • $mores_category   -   имя "текущей" категории для похожих товаров

    • $hits   -   массив записей о хитах продаж в "текущей" категории
    • $hits_category   -   имя "текущей" категории для хитов продаж

    • $newests   -   массив записей о новинках в "текущей" категории
    • $newests_category   -   имя "текущей" категории для новинок

    • $actionals   -   массив записей об акционных товарах в "текущей" категории
    • $actionals_category   -   имя "текущей" категории для акционных товаров

    • $awaiteds   -   массив записей об ожидаемых (скоро в продаже) товарах в "текущей" категории
    • $awaiteds_category   -   имя "текущей" категории для ожидаемых товаров

    • $ordereds   -   массив записей о недавно покупавшихся товарах в "текущей" категории
    • $ordereds_category   -   имя "текущей" категории для недавно покупавшихся товаров

    • $commenteds   -   массив записей о недавно обсуждавшихся товарах в "текущей" категории
    • $commenteds_category   -   имя "текущей" категории для недавно обсуждавшихся товаров

      рекомендуется обрамлять вывод содержимого этих массивов записей в условие безошибочной отрисовки шаблона {if isset($переменная) && is_array($переменная) && !empty($переменная)}

  • разное

    • $message   -   текст информационного сообщения (скажем об успехе постинга отзыва на товар)
    • $error   -   текст сообщения об ошибке, если была (например отказ в постинге отзыва)
    • $name   -   имя пользователя (покупателя), если авторизован

      последняя переменная по сути является дублем переменной $user->name и сохранена лишь для совместимости со старыми шаблонами, кроме того нужно понимать, что если в настоящий момент покупатель не авторизован, то этой переменной нет (недоступна) в шаблоне


Как видно из списка переменных, в Вашей задаче сменить блок (точнее вывод его наполнения) "похожих товаров" на "связанные товары" можно просто тем, что заменить в tpl-файле шаблона переменную $mores на $product->related_products. Если же шаблон создан по всем правилам, то есть в свой логике работы опирается на настройки админпанели, то правильнее будет не трогать блок "похожих товаров", ведь по желанию он итак отключаем из админпанели, а надо лишь сделать его копию в том же файле и скорректировать код надлежащим образом, в том числе имя наполняющей переменной-массива.

Если не знаете, из каких полей состоит запись (объект) о товаре, смотрите Структура переменной $menus, там в таблице у поля products нажмите ссылку [показать структуру].

19:10
03 дек
#
?
pikasso написал:

Спасибо попробовал сделать - взял за основу код похожих товаром! но меня смутило разность переменных в коде!

вот посмотрите какие следует сменить а какие нестоит трогать?

  {if isset($mores) && !empty($mores) && isset($settings->productpage_no_mores) && ($settings->productpage_no_mores != 1)}

      {if isset($settings->productpage_mores_caption) && ($settings->productpage_mores_caption != "")}
          {$settings->productpage_mores_caption}
      {/if}


      {include file = '../../common_parts/product.list.htm'
               numeration = false
               form = 'micro'
               switch = false
               maxcount = ''
               items = $mores}
  {/if}
14:21
05 дек
#
?
pikasso написал:

Вот смотрите в коде присудствует $mores но также есть и productpage_mores_caption
и как я понимаю переменную $mores нужно сменить на $product->related_products ??? а как быть с productpage_mores_caption ведь в этом коде присудствует mores..... вот это меня и сбивает с толку!

18:07
05 дек
#
написал:

Ваша задача, так как она не завязана на какие-либо настройки в админпанели (типа разрешить ли показ этого блока товаров, каким caption озаглавить блок), тогда решается следующим фрагментом кода, без задействования переменной настроек сайта $settings:

  {if isset($product->related_products) && is_array(product->related_products) && !empty($product->related_products)}

      <h2>
          С этим товаром легко комбинируются
      </h2>

      {include file = '../../common_parts/product.list.htm'
               numeration = false
               form = 'micro'
               switch = false
               maxcount = ''
               items = $product->related_products}
  {/if}
16:54
06 дек
#
?
pikasso написал:

Попробовал вставить код который вы дали! но страница с товаром открывается просто белой без ничего...

Написание ответа

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


Обратите внимание! Для противодействия спаму новые посты форума проявляются с задержкой от нескольких минут, пока не пройдут модерацию.