Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 15 Ответов
  • 1508 Просмотров
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Характеристика у конкретного товара, как я понял, существует только в том случае, если ей присвоено какое-то значение. Как программно проверить присвоена ли товару конкретная характеристика? Поясню зачем надо... есть магазин у которого наличие товара определяется тремя категориями: а) на собственном складе, б) на складе поставщика, в)под заказ, что определяет как быстро можно получить искомый товар. Немедленно, в первом случае, в течении 3 дней во втором и в течении 2 недель в третьем случае. Можно конечно забить все три варианта и отмечать у каждого товара, но пришла в голову идея, оставить только два первых варианта, а в шаблон вставить проверку на существование данной характеристики и в случае если характеристика не присвоена товару (то есть товара нет на обоих складах) выводить строчку "Под заказ". Зачем так надо? Да просто банально лениво забивать эту характеристику для всех товаров, потому что реально в наличии на складах менее 30%.
*

nevigen

  • Moderator
  • 10436
  • 863 / 25
  • http://n*****n.com
ну так обычное условие
если ид характеристики то сравнивать всо значениями
если ни одно значение не подходит..то "Под заказ".
т.е. если нет хар-ки то будет последнее.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
По Id в данном случае не совсем удобно, т.к. характеристика показывается в списке товара, придётся ещё и файлы править чтобы Id передать. По имени к ней обратиться? $extra_field['name'] - а что она вернёт если нет характеристики - ''?
*

nevigen

  • Moderator
  • 10436
  • 863 / 25
  • http://n*****n.com
а какая разница что она показывается в категории ?
Вы же управляете тем, что показывать, значение опции или "А тут должна была быть реклама", "это только под заказ", "все по 1 баксу"
От Вас зависит :)
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Ну так вы же сами пишите, что если ид характеристики, то сравнивать со значениями... а как я по ид буду искать, если ид характеристики в листпродукт не передаётся? А если искать просто по значению, то у меня в разных группах одноименные характеристики есть... то есть это неуниверсально.

ЗЫ. Кстати... а для цыкла foreach можно как то получить номер итерации?
« Последнее редактирование: 19.10.2013, 11:09:15 от jorevo »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Цитировать
а какая разница что она показывается в категории ?

имеется в виду, что в списке товаров нет доступа в базе к ид характеристики.

2 jorevo -  isset($extra_field['name'])
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
2 jorevo -  isset($extra_field['name'])

То, что надо... спасибо! )

ЗЫ2. Кстати... а для цыкла foreach можно как то получить номер итерации?
*

nevigen

  • Moderator
  • 10436
  • 863 / 25
  • http://n*****n.com
дедовский способ
перед циклом
$i=0
сразу после форич
$i++

дальше i  и есть итерация :)

Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
дедовский способ

Ну дык это опять костыли... я про "цивилизованный" способ ) Наверняка же какая то внутренняя переменная где то живёт.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
foreach($this->product->extra_field as $key=>$extra_field){

ключ массива, т.е. не совсем итерация цикла, но если массив создавался без указания ключей (а у характеристик именно так), то будет совпадать. если ключи не цифровые, или были явно указана, то только "дедовский способ" :)
« Последнее редактирование: 19.10.2013, 11:30:44 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
но если массив создавался без указания ключей (а у характеристик именно так), то будет совпадать

Значит, я так понимаю, $key в данном случае можно вместо id использовать.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
нет. $key в данном случае будет от 0 до n-1, где n - кол-во элементов в массиве
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
jorevo -  isset($extra_field['name'])

Вот я тогда давно, поблагодарил... но как то сразу проверить не удосужился. Потом попробовал - не работает. Хотел отписаться, но что то отвлекло, потом проблема как то сама собой рассосалась... а тут вдруг неожиданно встала снова. То есть изначальный вопрос в силе - как программно проверить присвоена ли товару конкретная характеристика?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Цитировать
попробовал - не работает
потому что то был пример, как проверить существование переменной, а не код для копирования :)

Цитировать
как программно проверить присвоена ли товару конкретная характеристика?
в принципе вам тут существование проверять особо и не надо. вы можете просто до цикла с характеристиками определить
Код
$findMyExtraField = false;
а в цикле проверять
Код
if ($extra_field['name'] == 'Нужное имя') {
$findMyExtraField = true;
}
и после цикла $findMyExtraField будет true или false в зависимости от того, есть нужная характеристика или нет
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Дело в том, что данная характеристика - выпадающий список и у него может быть три значения... то есть получается 4 варианта. 3 значения или характеристика не назначена. Среди прочего я хочу это использовать как фильтр для товаров у которого эта характеристика не назначена! Так что придётся проверять все три варианта, а при изменении названия поля править в коде... хотелось бы более изящного решения - именно проверить характеристику на существование.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
при чем тут значения характеристики? я ж вам говорю про $extra_field['name'], а не про $extra_field['value']

то, что я написал, и есть проверка, есть ли у товара характеристика Наличие. какое из значений будет присвоено этой характеристике - абсолютно все равно.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проверить, есть ли у товара хоть одна из характеристик. Как?

Автор goga_pgasovav

Ответов: 8
Просмотров: 1223
Последний ответ 09.01.2023, 14:47:41
от sivers
Возможность создать пункт меню = характеристика существует?

Автор Konstanin_by

Ответов: 6
Просмотров: 1031
Последний ответ 07.07.2016, 09:33:07
от Konstanin_by
Характеристика товаров

Автор mslex

Ответов: 1
Просмотров: 983
Последний ответ 14.12.2013, 00:04:17
от nevigen
Кнопка Купить и наличие атрибутов. Конфликт! Есть решение?

Автор aLLex177

Ответов: 16
Просмотров: 2209
Последний ответ 02.12.2012, 00:59:20
от fale