Перейти к содержанию
Форум поддержки пользователей VamShop

Атрибуты в product_listing_list


Рекомендуемые сообщения

Здравствуйте!

Сейчас вывести атрибуты можно лишь в карточке товара product_info_v1.html кодом:

{if $MODULE_product_options !=''} {$MODULE_product_options}{/if}

А мне необходимо , чтобы атрибуты были видны и в списке товаров product_listing_list.html

Прямой вставкой кода не получается.

Что делать?

Если такая возможность.?

Спасибо.

Ссылка на сообщение
Поделиться на другие сайты

Файл includes\modules\product_listing.php

Найти:


// Parameters start
[/code] Вставить перед:
[code]
// Attributes start

    if (is_array($ids) && sizeof($ids) > 0)
    {

function getAttrCount($pID) {
$products_attributes_query = vamDBquery("select count(*) as total from ".TABLE_PRODUCTS_OPTIONS." popt, ".TABLE_PRODUCTS_ATTRIBUTES." patrib where patrib.products_id='".$pID."' and patrib.options_id = popt.products_options_id and popt.language_id = '".(int) $_SESSION['languages_id']."'");
$products_attributes = vam_db_fetch_array($products_attributes_query, true);
return $products_attributes['total'];
}

        foreach($module_content as $k => $m)
        {
$pID = $module_content[$k]['PRODUCTS_ID'];
if (getAttrCount($pID)) {
$products_options_name_query = vamDBquery("select distinct popt.products_options_id, popt.products_options_name,popt.products_options_type,popt.products_options_length,popt.products_options_rows,popt.products_options_size from ".TABLE_PRODUCTS_OPTIONS." popt, ".TABLE_PRODUCTS_ATTRIBUTES." patrib where patrib.products_id='".$pID."' and patrib.options_id = popt.products_options_id and popt.language_id = '".(int) $_SESSION['languages_id']."' order by popt.products_options_name");

$row = 0;
$col = 0;
$products_options_data = array ();

while ($products_options_name = vam_db_fetch_array($products_options_name_query,true)) {
$selected = 0;
$products_options_array = array ();

$products_options_data[$row] = array (
'NAME' => $products_options_name['products_options_name'],
'TYPE'=>$products_options_name['products_options_type'],
'ROWS'=>$products_options_name['products_options_rows'],
'LENGTH'=>$products_options_name['products_options_length'],
'SIZE'=>$products_options_name['products_options_size'],
'ID' => $products_options_name['products_options_id'],
'DATA' => ''
);

$products_options_query = vamDBquery("select pov.products_options_values_id,
pov.products_options_values_name,
pov.products_options_values_description,
pov.products_options_values_text,
pov.products_options_values_image,
pov.products_options_values_link,
pa.attributes_model,
pa.options_values_price,
pa.price_prefix,
pa.attributes_stock,
pa.attributes_model
from ".TABLE_PRODUCTS_ATTRIBUTES." pa,
".TABLE_PRODUCTS_OPTIONS_VALUES." pov
where pa.products_id = '".$pID."'
and pa.options_id = '".$products_options_name['products_options_id']."'
and pa.options_values_id = pov.products_options_values_id
and pov.language_id = '".(int) $_SESSION['languages_id']."'
order by pa.sortorder");
$col = 0;
        $checked = 'checked="checked"';
while ($products_options = vam_db_fetch_array($products_options_query,true)) {
$price = '';
if ($_SESSION['customers_status']['customers_status_show_price'] == '0') {
$products_options_data[$row]['DATA'][$col] = array (
'ID' => $products_options['products_options_values_id'],
'TEXT' => $products_options['products_options_values_name'],
'DESCRIPTION' => $products_options['products_options_values_description'],
'SHORT_DESCRIPTION' => $products_options['products_options_values_text'],
'IMAGE' => $products_options['products_options_values_image'],
'LINK' => $products_options['products_options_values_link'],
'MODEL' => $products_options['attributes_model'],
'STOCK' => $products_options['attributes_stock'],
'PRICE' => '',
'FULL_PRICE' => '',
'PREFIX' => $products_options['price_prefix'],
                'CHECKED' => $checked,
);

$price = '';
$full_price = '';
} else {
if ($products_options['options_values_price'] != '0.00') {
$price = $vamPrice->GetOptionPrice($pID, $products_options_name['products_options_id'], $products_options['products_options_values_id']);
$price = $price['price'];
}
$products_price = $vamPrice->GetPrice($pID, $format = false, 1, $module_content[$k]['PRODUCTS_TAX_INFO'], $module_content[$k]['PRODUCTS_PRICE']);
if ($_SESSION['customers_status']['customers_status_discount_attributes'] == 1 && $products_options['price_prefix'] == '+')
$price -= $price / 100 * $discount;
$attr_price=$price;
//if ($products_options['price_prefix']=="-") { $attr_price=$price*(-1); $price=$attr_price; }
$full_price = $products_price + $attr_price;
$price_plain = $vamPrice->Format($price, false);
$price = $vamPrice->Format($price, true);
$full_price = $vamPrice->Format($full_price, true);
}

$products_options_data[$row]['DATA'][$col] = array (
'ID' => $products_options['products_options_values_id'],
'TEXT' => $products_options['products_options_values_name'],
'DESCRIPTION' => $products_options['products_options_values_description'],
'SHORT_DESCRIPTION' => $products_options['products_options_values_text'],
'IMAGE' => $products_options['products_options_values_image'],
'LINK' => $products_options['products_options_values_link'],
'MODEL' => $products_options['attributes_model'],
'STOCK' => $products_options['attributes_stock'],
'PRICE' => $price,
'PRICE_PLAIN' => $price_plain,
'FULL_PRICE' => $full_price, 'PREFIX' => $products_options['price_prefix'],
            'CHECKED' => $checked,
);

$checked = '';
$col ++;
}
$row ++;
}

$module_content[$k]['attrib'] = $products_options_data;
}
        }
    }

// Attributes end
Открыть файл templates\vamshop\module\product_listing\product_listing_columns.html Найти:

<dd class="itemDescription">
<p>
{foreach name=params item=module_params from=$module_data.params}
{$module_params.name}: <strong>{$module_params.value} {$module_params.suff} </strong><br />
{/foreach}
</p>
</dd>
[/code] После вставить:
[code]
<!-- ############################################################################ -->
{if $module_data.attrib!=''}
{foreach name=attrib item=module_attrib from=$module_data.attrib}
{if $module_attrib.TYPE eq '1'}

<!-- select -->
<p>
<strong>{$module_attrib.NAME}:</strong>
<select name="id[{$module_attrib.ID}]">
{foreach key=key_data item=item_data from=$module_attrib.DATA}
<option value="{$item_data.ID}">{$item_data.TEXT}  {if $item_data.MODEL}({$item_data.MODEL}){/if} {if $item_data.PRICE_PLAIN != 0}({$item_data.PREFIX}{$item_data.PRICE}){/if}</option>
{/foreach}
</select>
</p>
<!-- /select -->

{elseif $module_attrib.TYPE eq '2'}

<!-- text -->
<p>

<strong>{$module_attrib.NAME}:</strong>
{foreach key=key_data item=item_data from=$module_attrib.DATA}
<strong>{$item_data.TEXT}</strong>
<input name="id[{$module_attrib.ID}]" type="hidden" value="{$item_data.ID}" />
<input name="id[txt_{$module_attrib.ID}_{$item_data.ID}]" type="text" size="{$module_attrib.SIZE}" maxlength="{$module_attrib.LENGTH}" />{if $item_data.MODEL}({$item_data.MODEL}){/if} {if $item_data.PRICE_PLAIN != 0}({$item_data.PREFIX}{$item_data.PRICE}){/if}
{if $item_data.DESCRIPTION}<br />{$item_data.DESCRIPTION}{/if}<br />
{/foreach}
</p>
<!-- /text -->

{elseif $module_attrib.TYPE eq '3'}

<!-- textarea -->
<p>
<strong>{$module_attrib.NAME}:</strong>

{foreach key=key_data item=item_data from=$module_attrib.DATA}
<strong>{$item_data.TEXT}</strong>
<input name="id[{$module_attrib.ID}]" type="hidden" value="{$item_data.ID}" />
<textarea name="id[txt_{$module_attrib.ID}_{$item_data.ID}]" cols="20" rows="{$module_attrib.ROWS}"></textarea>
{if $item_data.MODEL}({$item_data.MODEL}){/if} {if $item_data.PRICE_PLAIN != 0}({$item_data.PREFIX}{$item_data.PRICE}){/if}
{if $item_data.DESCRIPTION}<br />{$item_data.DESCRIPTION}{/if}<br />
{/foreach}
</p>
<!-- /textarea -->

{elseif $module_attrib.TYPE eq '4'}

<!-- radio -->
<p>
<strong>{$module_attrib.NAME}:</strong>

{foreach key=key_data item=item_data from=$module_attrib.DATA}
<!-- changed by mosq // -->
<input type="radio" name="id[{$module_attrib.ID}]" value="{$item_data.ID}" {$item_data.CHECKED} />

{$item_data.TEXT} {if $item_data.PRICE_PLAIN != 0}({$item_data.PREFIX}{$item_data.PRICE}){/if}
{if $item_data.DESCRIPTION}<br />{$item_data.DESCRIPTION}<br />{/if}
{if $item_data.SHORT_DESCRIPTION}{$item_data.SHORT_DESCRIPTION}<br />{/if}
{if $item_data.IMAGE}<img src="{$image_dir}thumbs/{$item_data.IMAGE}" border="0" alt="{$item_data.TEXT}" />{/if}
{if $item_data.LINK}<a align="right" href="http://{$item_data.LINK}" target="_blank"><img src="{$tpl_path}img/info.gif" border="0" alt="{$item_data.TEXT}" /></a>{/if}<br />
{/foreach}
</p>
<!-- /radio -->

{elseif $module_attrib.TYPE eq '5'}

<!-- checkbox -->
<p>
<strong>{$module_attrib.NAME}:</strong>

{foreach key=key_data item=item_data from=$module_attrib.DATA}
<input type="checkbox" name="id[{$module_attrib.ID}]" value="{$item_data.ID}" />
{$item_data.TEXT} {if $item_data.PRICE_PLAIN != 0}({$item_data.PREFIX}{$item_data.PRICE}){/if}
{if $item_data.DESCRIPTION}<br />{$item_data.DESCRIPTION}{/if}<br />
{/foreach}
</p>
<!-- /checkbox -->

{elseif $module_attrib.TYPE eq '6'}

<!-- readonly -->
<p>
<strong>{$module_attrib.NAME}:</strong>
{foreach key=key_data item=item_data from=$module_attrib.DATA}
<input type="hidden" name="id[{$module_attrib.ID}]" value="{$item_data.ID}" />
{if $item_data.MODEL}({$item_data.MODEL}){/if} {$item_data.TEXT} {if $item_data.PRICE_PLAIN != 0}({$item_data.PREFIX}{$item_data.PRICE}){/if}
{if $item_data.DESCRIPTION}<br />{$item_data.DESCRIPTION}{/if}<br />

{/foreach}
</p>
<!-- /readonly -->

{/if}
{/foreach}
{/if}
<!-- ############################################################################ -->

Или просто:

product_listing.php заменить на существующий в includes\modules\

а product_listing_columns.html на тот что в templates\vamshop\module\product_listing\

product_listing.php

product_listing_columns.html

Ссылка на сообщение
Поделиться на другие сайты
  • 3 months later...

Сделал всё по инструкции, атрибуты показываются правильно.

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

Можно как-то настроить, чтобы товар сразу отправлялся в корзину, с учетом выбранных атрибутов?

Ссылка на сообщение
Поделиться на другие сайты

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

Вам тогда можно и править работу кнопки купить в /includes/cart_actions.php

Ссылка на сообщение
Поделиться на другие сайты

Тимурка, прежде всего спасибо за помощь! Я как раз хотел найти что-то подобное.

Я сделал все по инструкции, но файлы на сервере не заменял, а переименовал старые (_old). Вставил новые файлы, посмотрел - не очень понравилось, у меня нестандартный шаблон, так что нужно и отображение допиливать.. Пока решил оставить эту затею.

Удалил новые файлы, переименовал обратно старые. Но! Ничего обратно не изменилось.. :( Глупые ошибки, вроде ошибкт в имени файла проверил..

В чем может быть проблема? Запаздывание обновления на сервере? Так первые изменения сразу применились..

Подскажите, пожалуйста, что делать чтобы наверняка вернуть все как было? :)

Ссылка на сообщение
Поделиться на другие сайты

Разобрался уже. Очистил кэш из админки и все стало на свои места. Также указал время хранения файлов 0 (вместо 3600). Хочу уточнить, не повлияет ли это на работу других функций сайта??

Спасибо заранее.

Ссылка на сообщение
Поделиться на другие сайты
  • 10 months later...

Здравствуйте!

Помогите найти решение данной проблемы вывода атрибутов в product_listing_columns.html в версии Vamshop 1.65

Ссылка на сообщение
Поделиться на другие сайты

Выше есть сообщение с кодом.

Либо создайте тему в разделе Коммерческие предложения и ссылку на эту тему дайте, что б Вам поставили этот код, раз самостоятельно не можете его вставить.

Ссылка на сообщение
Поделиться на другие сайты

Вставить код могу, но в выше указанных файлах нет

// Parameters start

Вышеуказанный код актуален до сентября 2011, до выпуска очередного обновления

Версия 1.64, в файле \templates\vamshop\module\product_listing\product_listing_columns.html вместо строчек


{foreach name=params item=module_params from=$module_data.params}
{$module_params.name}: <strong>{$module_params.value} {$module_params.suff} </strong><br />
{/foreach}[/CODE] [b]в Версии 1.65 [/b]и последующих появились новые строчки в файле [b]\vamshop\module\product_listing\product_listing_list.html [/b]
[CODE]
{if $module_data.EXTRA_FIELDS}
{foreach item=extra_fields from=$module_data.EXTRA_FIELDS}
{$extra_fields.NAME}: {$extra_fields.VALUE}<br />
{/foreach}
{/if}

Подскажите куда копать.

Ссылка на сообщение
Поделиться на другие сайты

Да, этого кода уже нет.

Попробуйте вставить например после:


$module->assign('NAVIGATION_PAGES', $navigation_pages);
[/code]

А в шаблонах без разницы куда вставлять, главное, по идее, что б внутри foreach.../foreach было.

Ссылка на сообщение
Поделиться на другие сайты

Не работает, всё перепробовал. Судя по поиску форума, подобная функция очень востребована и актуальна аж с 2010 года.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...