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

Ограничить количество допполей


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

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

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

Попробуйте в /includes/classes/product.php поменять:



SELECT pef.products_extra_fields_status as status, pef.products_extra_fields_name as name, ptf.products_extra_fields_value as value
FROM ". TABLE_PRODUCTS_EXTRA_FIELDS ." pef
LEFT JOIN ". TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS ." ptf
ON ptf.products_extra_fields_id=pef.products_extra_fields_id
WHERE ptf.products_id=". (int)$array['products_id'] ." and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.languages_id='".$_SESSION['languages_id']."')
ORDER BY products_extra_fields_order");
[/code] на:
[code]

SELECT pef.products_extra_fields_status as status, pef.products_extra_fields_name as name, ptf.products_extra_fields_value as value
FROM ". TABLE_PRODUCTS_EXTRA_FIELDS ." pef
LEFT JOIN ". TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS ." ptf
ON ptf.products_extra_fields_id=pef.products_extra_fields_id
WHERE ptf.products_id=". (int)$array['products_id'] ." and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.languages_id='".$_SESSION['languages_id']."')
ORDER BY products_extra_fields_order limit 5");

т.е. добавить limit 5 в конце.

Но, это ведь ограничит везде доп. поля.

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

Можно ведь отдельный запрос сделать и отдельную метку только для списка товара.

По поводу лимита в смарти, в гугле ведь можно найти например по smarty foreach limit

Вот например - http://schinckel.net/2005/10/18/limiting-smarty-foreach/

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

.iteration

iteration содержит значение текущей итерации цикла и всегда начинается с единицы. Это значение увеличивается на единицу с каждой следующей итерацией.

Прямо в цикле проверяем чтобы номер текущей интерации не был больше нужного ограничения.

А лучше проверять прямо по имени доп.поля и выводить только основные.

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

вот в карточке товара выводили 2.

{if $extra_fields_data}

{$extra_fields_data[0].NAME}: {$extra_fields_data[0].VALUE}

<br />

{$extra_fields_data[1].NAME}: {$extra_fields_data[1].VALUE}

<br />

{/if}

поменяйте метки для листинга товаров

и отпишитесь если помогло)

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

Спасибо всем за направление. в котором рыть. Получилось вот таким способом:


{foreach item=extra_fields from=$module_data.EXTRA_FIELDS name=foo}
{if $smarty.foreach.foo.index == 5}
{php}break;{/php}
{/if}
{$extra_fields.NAME}: {$extra_fields.VALUE}<br />
{/foreach}
[/CODE]

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

{if $extra_fields_data}

{$extra_fields_data[0].NAME}: {$extra_fields_data[0].VALUE}

<br />

{$extra_fields_data[1].NAME}: {$extra_fields_data[1].VALUE}

<br />

{/if}

так все равно удобнее. можно задавать оформление для каждого поля.

это всегда плюс.

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

ап

проблема у меня-(

вывод дополнительных полей в накладной работает только через  {$extra_fields_data}

использование  {$extra_fields_data[1].NAME}: {$extra_fields_data[1].VALUE} не дает никакого результата.

как можно решить вопрос ограничения вывода доп полей ? из-за чего у меня может не получаться?

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

Не работает потому что эта метка - не массив, а она выводит сразу блок кода.

Вам нужно править функцию vam_get_extra_fields в /admin/includes/functions/general.php

Например если нужно выводить перые 5 доп. полей, то попробуйте исправить sql запрос:

          $extra_fields_query = vam_db_query("select ce.fields_id, ce.fields_input_type, ce.fields_input_value, ce.fields_required_status, cei.fields_name, ce.fields_status, ce.fields_input_type from " . TABLE_EXTRA_FIELDS . " ce, " . TABLE_EXTRA_FIELDS_INFO . " cei where ce.fields_status=1 and cei.fields_id=ce.fields_id and cei.languages_id =" . $languages_id);

на:

          $extra_fields_query = vam_db_query("select ce.fields_id, ce.fields_input_type, ce.fields_input_value, ce.fields_required_status, cei.fields_name, ce.fields_status, ce.fields_input_type from " . TABLE_EXTRA_FIELDS . " ce, " . TABLE_EXTRA_FIELDS_INFO . " cei where ce.fields_status=1 and cei.fields_id=ce.fields_id and cei.languages_id =" . $languages_id . " limit 5");

В любом случае, все правится в этой функции, делайте как Вам нужно.

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

отлично, но если мне нужно к примеру не использовать имя доп поля?

меня удивляет то, что по всему форуму в десятках тем используют метки  {$extra_fields_data[1].NAME}  - а у меня они не работают

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

Так это для каталога.

В админке свой код.

Я ж Вам написал какую функцию правиь, просто удалите лишнее, что Вам не нужно.

Видимо, за вывод названия поля отвечает вот этот код:

' . $extra_fields['fields_name'] . ':

 

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