Jump to content

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


Go to solution Solved by Kosjak76,

Recommended Posts

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

 

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

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

если нет, то пишем из инпута. в таблицу 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. ;)

Edited by zetwin
Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

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

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

 

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

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

Edited by zetwin
Link to post
Share on other sites

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

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

 

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

Link to post
Share on other sites

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

 

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.

Edited by zetwin
Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

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

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

Edited by zetwin
Link to post
Share on other sites
  • Solution

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

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

 

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

// Порядок изображений
                    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, написали. Спасибо всем за помощь.

Link to post
Share on other sites
  • 5 years later...

У меня почему то не работает. Создал в базе поле 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++;
}

 

Link to post
Share on other sites
17 часов назад, arhean сказал:

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

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

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

Link to post
Share on other sites
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();

 

Link to post
Share on other sites
2 часа назад, arhean сказал:

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

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

Link to post
Share on other sites
48 минут назад, phukortsin сказал:

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

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

Edited by arhean
Link to post
Share on other sites
20 часов назад, phukortsin сказал:

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

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites
1 час назад, phukortsin сказал:

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

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

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

Link to post
Share on other sites
1 минуту назад, arhean сказал:

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

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

Link to post
Share on other sites
10 часов назад, arhean сказал:

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

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

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

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

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

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

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

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

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

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

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

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

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

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...