Перейти к содержанию
Официальный форум поддержки Simpla

Наименование изображения товара


Перейти к решению Решено Kosjak76,

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

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

 

Добавил инпут для каждого изображения:

если пуст, то берем имя файла,

если нет, то пишем из инпута. в таблицу images в поле name.

 

Файлы в которых копаюсь:

api/Products - function update_image.

simpla/ProductAdmin

 

 

Примет кода в simpla/design/html/product.tpl

<ul>
{foreach from=$product_images item=image}
<li>
    <a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a>
    <img src="{$image->filename|resize:100:100}" alt="" />
    <input name='imagenames[]' value='{$image->name}'>
    <input type=hidden name='images[]' value='{$image->id}'>
</li>
{/foreach}
</ul>

Примет кода в api/Products

 

public function update_image($id, $image)
{     $query = $this->db->placehold("UPDATE __images SET ?% WHERE id=?", $image, $id);
      $this->db->query($query);
      return($id);
}

 

 

 

 

help. ;)

Изменено пользователем zetwin
Ссылка на сообщение
Поделиться на другие сайты

1. function update_image - тут копаться совсем ни к чему. Разве что испортите...

2. api/ProductAdmin - такого файла нет, есть view/ProductAdmin.php - тут должна быть основная работа

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

1. function update_image - тут копаться совсем ни к чему. Разве что испортите...

2. api/ProductAdmin - такого файла нет, есть view/ProductAdmin.php - тут должна быть основная работа

Извините  за невнимательность, я говорил за simpla/ProductAdmin

 

Проблем нет с выводом имени записаного в базу вручную.

У меня проблема с записью имен изображений из андим панели товара.

Изменено пользователем zetwin
Ссылка на сообщение
Поделиться на другие сайты

Извените  за невнимательность, я говорил за simpla/ProductAdmin

Я тоже ошибся. Правильно надо:

 

2. simpla/ProductAdmin.php - тут должна быть основная работа

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

Я тоже ошибся. Правильно надо:

 

2. simpla/ProductAdmin.php - тут должна быть основная работа

Обновление изображеия вызывается в simpla/ProductAdmin единоджы в этом месте:

// Порядок изображений
                    if($images = $this->request->post('images'))
                    {
                         $i=0;
                        foreach($images as $id)
                        {
                            $this->products->update_image($id, array('position'=>$i));
                            $i++;
                        }
                    }
 

И я не могу понять как правильно засунуть к обновлению позиций переменную $imagenames.

Изменено пользователем zetwin
Ссылка на сообщение
Поделиться на другие сайты

$this->products->update_image($id, array('position'=>$i, 'name'=>$myvariable));

Да, но переменная $myvariable это массив имен, как сделать чтобы соотевтвуеше имя писалось, а то масив даже не пишет в базу.

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

Видимо, выделить из массива нужное значение, относящееся к конкретному изображению...

К сожалению, я не знаю как это сделать.

Добавить увеличение на единицу, при обращении к елементу массива? тоесть можно исползовать i++??

Изменено пользователем zetwin
Ссылка на сообщение
Поделиться на другие сайты
  • Решение

Надо сравнить массивы, если количество и порядок элементов совпадает, то как-то так

// Порядок изображений
                    if($images = $this->request->post('images'))
                    {
                         $i=0;
                        foreach($images as $id)
                        {
                            $this->products->update_image($id, array('position'=>$i,'name'=>$myvariable[$i]));
                            $i++;
                        }
                    }
Ссылка на сообщение
Поделиться на другие сайты

 

Надо сравнить массивы, если количество и порядок элементов совпадает, то как-то так

// Порядок изображений
                    if($images = $this->request->post('images'))
                    {
                         $i=0;
                        foreach($images as $id)
                        {
                            $this->products->update_image($id, array('position'=>$i,'name'=>$myvariable[$i]));
                            $i++;
                        }
                    }

Спасибо! Уже решил. Точно так же как вы, Kosjak76, написали. Спасибо всем за помощь.

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

У меня почему то не работает. Создал в базе поле title и alt.

далее в ProductAdmin

foreach($images as $id)
	{
		$this->products->update_image($id, array('position'=>$i,'title'=>$imagetitle[$i], 'alt'=>$imagealt[$i]));
		$i++;
	}

далее в product.tpl добавил

<input type="text" value="{$image->title|escape}" name="imagetitle[]">
<input type="text" value="{$image->alt|escape}" name="imagealt[]">
<input type=hidden name="images[]" value="{$image->id}">

Из базы значение выводится, но при этом не сохраняется. и в добавок вылазит ошибка  - Notice: Undefined variable: imagetitle in.... 

добавил new stdClass; и ошибка исчезла, но при этом все равно не сохраняет. Где тут магия?

foreach($images as $id)
{
	$imagealt[$i] = new stdClass;
	$imagetitle[$i]= new stdСlass;
	$this->articles->update_image($id, array('position'=>$i,'title'=>$imagetitle[$i], 'alt'=>$imagealt[$i]));
	$i++;
}

 

Ссылка на сообщение
Поделиться на другие сайты
17 часов назад, arhean сказал:

У меня почему то не работает. Создал в базе поле title и alt.

Должно быть, потому, что работаете методом тыка и копируете как-нибудь без понимания.

Например, в последнем фрагменте делается попытка записать в title пустой класс, как минимум совсем бессмысленная...

Ссылка на сообщение
Поделиться на другие сайты
4 часа назад, phukortsin сказал:

Должно быть, потому, что работаете методом тыка и копируете как-нибудь без понимания.

Например, в последнем фрагменте делается попытка записать в title пустой класс, как минимум совсем бессмысленная...

А как нужно сделать? Забыл написать, что добавил еще в api/Products.php i.title, i.alt,


		// images
		$query = $this->db->placehold("SELECT i.id, i.product_id, i.title, i.alt, i.name, i.filename, i.position
									FROM __images AS i WHERE 1 $product_id_filter $group_by ORDER BY i.product_id, i.position");
		$this->db->query($query);
		return $this->db->results();

 

Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, arhean сказал:

А как нужно сделать? Забыл написать, что добавил еще в api/Products.php i.title, i.alt,

Надо бы писать не отрывочными кусками с последующими "позабыл-добавил", а ТОЧНО и ПОЛНОСТЬЮ все делавшиеся изменения со всеми деталями...  А гадать, что Вы еще забыли и что еще добавили, можно долго...

Ссылка на сообщение
Поделиться на другие сайты
48 минут назад, phukortsin сказал:

Надо бы писать не отрывочными кусками с последующими "позабыл-добавил", а ТОЧНО и ПОЛНОСТЬЮ все делавшиеся изменения со всеми деталями...  А гадать, что Вы еще забыли и что еще добавили, можно долго...

Извиняюсь, наверно началась деменция :)

Изменено пользователем arhean
Ссылка на сообщение
Поделиться на другие сайты
20 часов назад, phukortsin сказал:

Надо бы писать не отрывочными кусками с последующими "позабыл-добавил", а ТОЧНО и ПОЛНОСТЬЮ все делавшиеся изменения со всеми деталями...  А гадать, что Вы еще забыли и что еще добавили, можно долго...

Так знаете в чем может быть проблема?

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

Знаю, в чем МОЖЕТ БЫТЬ. И могу книгу написать про тысячу причин, которые МОГУТ БЫТЬ...

Если Вы готовы оплачивать такие труды, могу подготовить для Вас длинный текст с фантазиями на тему.

Ссылка на сообщение
Поделиться на другие сайты
1 час назад, phukortsin сказал:

Знаю, в чем МОЖЕТ БЫТЬ. И могу книгу написать про тысячу причин, которые МОГУТ БЫТЬ...

Если Вы готовы оплачивать такие труды, могу подготовить для Вас длинный текст с фантазиями на тему.

Ой все... Не хочу вступать в полемику с троллем. Иначе просто начнется бесконечный срач. Вы либо говорите  - я знаю в чем причина, но мне нужны миллионы долларов за 2 строчки кода, которые может написать практически любой знающий симплу, либо  - вот тут  лоховская ошибка и предлагаете ее решение, за что вам будет спасибо человеческое, плюсик и возможно донат на пиво. Форум нужен, что бы новичкам можно было разобраться в системе, а не читать бесполезные кэповские нотации.

Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, arhean сказал:

Ой все... Не хочу вступать в полемику с троллем. Иначе просто начнется бесконечный срач. Вы либо говорите  - я знаю в чем причина, но мне нужны миллионы долларов за 2 строчки кода, которые может написать практически любой знающий симплу, либо  - вот тут  лоховская ошибка и предлагаете ее решение, за что вам будет спасибо человеческое, плюсик и возможно донат на пиво. Форум нужен, что бы новичкам можно было разобраться в системе, а не читать бесполезные кэповские нотации.

Вы наверное работает и за потраченное время получаете Спасибо или деньгами? Если бы решалось бы одной строчкой кода например $code = newStdclass(); вам бы уже ее написали но как видите таких нет, значит делайте выводы

Ссылка на сообщение
Поделиться на другие сайты
10 часов назад, arhean сказал:

Ой все... Не хочу вступать в полемику с троллем.

Полемики пока нет. Есть с Вашей стороны вопросы. Вопросы изначально глупые и бессмысленные. А какой вопрос, таков и ответ.

10 часов назад, arhean сказал:

Вы либо говорите  - я знаю в чем причина...

Если в общем, Вам уже сказали - причина в неверном коде, который вставляется бездумным копированием. Если конкретно, то один ошибочный момент был приведен. Вы никак не среагировали. 

10 часов назад, arhean сказал:

за 2 строчки кода, которые может написать практически любой знающий симплу

На форуме, и в этой теме в частности, можно найти много кода. Находите и используйте, если уверены, что все так просто...

10 часов назад, arhean сказал:

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

Если Вы зададите осмысленный вопрос по СИСТЕМЕ, Вам, скорее всего,  дадут осмысленный ответ. На форуме примеров тому много.

А пока Вы задаете вопрос по своей индивидуальной  ДОРАБОТКЕ к системе, сделанной по материалам темы, где НЕТ полного описания, а написано кое-как небрежно. К тому же в точности неизвестно, что Вы у себя делаете и как. Вам посоветовали дать ПОЛНОЕ описание, Вы не ответили. Видимо, лень писать все подробности. 

Выходит, почини мне то, не скажу что...

 

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

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...