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

Дополнительное поле "загрузка файла" в товаре


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

Столкнулся с проблемой, при загрузке pdf файла размером более 8мб он не сохранялся, если кому пригодится решение проблемы, нужно в настройках хостинга увеличить размер отправляемых файлов (post_max_size)

 

post_max_size - немного не размер отправляемых файлов, а размер отправляемого post запроса, тоесть учитываются и другие поля формы..

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

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

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

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

Не получается найти на форуме как загрузить файл при оформлении заказа.

 

Функция

 

$filename = $simpla->request->files('myfile', 'name');
 

возвращает null.

 

Заранее благодарю за ответ и помощь.

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

Вот статья по загрузке файлов на сервер

https://myrusakov.ru/php-loadserver-file.html

 

что касается концепции simpla - то посмотрите как грузятся фотографии к категориям

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

Вот статья по загрузке файлов на сервер

https://myrusakov.ru/php-loadserver-file.html

 

что касается концепции simpla - то посмотрите как грузятся фотографии к категориям

Спасибо огромное. Последний совет был очень дельный. И забавная штука: тот же код был скопирован из загрузки изображений для товара и функция в упор не видела массив возвращаемый $simpla->request->files. А теперь прям полетело. ) Спасибо еще раз огромное. Сейчас в карму "плюну".

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

Спасибо огромное. Последний совет был очень дельный. И забавная штука: тот же код был скопирован из загрузки изображений для товара и функция в упор не видела массив возвращаемый $simpla->request->files. А теперь прям полетело. ) Спасибо еще раз огромное. Сейчас в карму "плюну".

нужно было юзать в CartView.php через $this->request->files а не $simpla->request->files

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

нужно было юзать в CartView.php через $this->request->files а не $simpla->request->files

Я именно так и делала. Скорее всего просто с проверкой файлов перемудрила. Теперь все работает. Спасибо всем, еще раз, за оперативность.

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

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

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

 

Многим думаю пригодится, допустим у нас есть кнопка "интсрукция" при нажатии на нее скачиваем файл. 

 

Нам надо:

Дополнительно поле type="file" для загрузки файла

 

Возможности:

- Загрузка файла

- Удаление Файла

- Вывод ссылки и название файла в шаблон

- Расширение файлов которые можно загружать

 

#0 - Запрос в БД:

ALTER TABLE  `s_products` ADD  `attachment_files_one` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER  `name`

 

#1 - \simpla\design\html\product.tpl

найдем:

// Удалить файл к варианту
	$('#variants_block a.remove_attachment').click(function() {
		closest_li = $(this).closest('li');
		closest_li.find('.attachment_name').hide('fast');
		$(this).hide('fast');
		closest_li.find('input[name*=delete_attachment]').val('1');
		closest_li.find('a.add_attachment').show('fast');
		return false;		
	});

и ниже вставим:

 

// Загрузить файл 1
	$('#variants_block_one a.add_attachment_one').click(function() {
		$(this).hide();
		$(this).closest('li').find('div.browse_attachment_one').show('fast');
		$(this).closest('li').find('input[name*=attachment_files_one]').attr('disabled', false);
		return false;		
	});
	
	// Удалить файл 1
	$('#variants_block_one a.remove_attachment_one').click(function() {
		closest_li = $(this).closest('li');
		closest_li.find('.attachment_name_one').hide('fast');
		$(this).hide('fast');
		closest_li.find('input[name*=delete_attachment_one]').val('1');
		closest_li.find('a.add_attachment_one').show('fast');
		return false;		
	});

найдем: 

<!-- Правая колонка свойств товара -->	
	<div id="column_right">

ниже вставим:

<!-- Документация товара -->	
		<div class="block layer" >
			<h2>Документация товара </h2>
			<ul>
				<li id="variants_block_one">
				<b>Техническая документация:</b>
				
				{if $product->attachment_files_one}
					<span class=attachment_name_one><a href="../{$config->documents_dir}{$product->attachment_files_one}">{$product->attachment_files_one|truncate:25:'...':false:true}</a></span>
					<a href='#' class=remove_attachment_one><img src='design/images/bullet_delete.png'  title="Удалить цифровой товар"></a>
					<a href='#' class=add_attachment_one style='display:none;'><img src="design/images/cd_add.png" title="Добавить цифровой товар" /></a>
				{else}
					<a href='#' class=add_attachment_one><img src="design/images/cd_add.png"  title="Добавить цифровой товар" /></a>
				{/if}
				<div class=browse_attachment_one style='display:none;'>
					<input type=file name=attachment_files_one>
					<input type=hidden name=delete_attachment_one>
				</div>
				</li>
			</ul>
			
			
		</div>

#2 - \simpla\ProductAdmin.php

найдем:

 

class ProductAdmin extends Simpla
{

ниже вставим:

 

private $allowed_files_extentions = array('pdf', 'doc', 'rar', 'zip');

найдем:

// Категории товара
			$product_categories = $this->request->post('categories');
			if(is_array($product_categories))

выше вставим:

// Удаление файла_one
			if($this->request->post('delete_attachment_one'))
			{
				$this->products->delete_attachment_one($product->id);
			}
			// Загрузка файла_one
			$attachment_files_one = $this->request->files('attachment_files_one');
			if(!empty($attachment_files_one['name']) && in_array(strtolower(pathinfo($attachment_files_one['name'], PATHINFO_EXTENSION)), $this->allowed_files_extentions))
			{
				$this->products->delete_attachment_one($product->id);   	    			
				move_uploaded_file($attachment_files_one['tmp_name'], $this->root_dir.$this->config->documents_dir.$attachment_files_one['name']);
				$this->products->update_product($product->id, array('attachment_files_one'=>$attachment_files_one['name']));
			}

#3 - \api\Products.php

найдем:

p.body,

и ниже вставим (в 2-х случаях):

p.attachment_files_one,

найдем: 

public function delete_image($id)
	{

выше вставим:

/*
	*
	* Удаление файла_one
	* @param $id
	*
	*/
	public function delete_attachment_one($id)
	{
		$query = $this->db->placehold("SELECT attachment_files_one FROM __products WHERE id=?", intval($id));
		$this->db->query($query);
		$attachment_files_one = $this->db->result('attachment_files_one');
		if(!empty($attachment_files_one))
		{
			$query = $this->db->placehold("UPDATE __products SET attachment_files_one=NULL WHERE id=?", $id);
			$this->db->query($query);
			$query = $this->db->placehold("SELECT count(*) as count FROM __products WHERE attachment_files_one=? LIMIT 1", $attachment_files_one);
			$this->db->query($query);
			$count = $this->db->result('count');
			if($count == 0)
			{			
				@unlink($this->config->root_dir.$this->config->documents_dir.$attachment_files_one);		
			}
		}
	}

найдем:

// Удаляем варианты
			$variants = $this->variants->get_variants(array('product_id'=>$id));
			foreach($variants as $v)
				$this->variants->delete_variant($v->id);

ниже вставим:

 

// Удаляем файл_one
			$this->delete_attachment_one($id);	
			$query = $this->db->placehold("DELETE FROM __products WHERE id=? LIMIT 1", $id);

 

#5 - \confing\confing.php

найдем:

;Изображения брендов
brands_images_dir = files/brands/;

ниже вставим:

;Документация товара
documents_dir = files/documents/;

Не забываем создать папку "documents" в папке "file

 

#4 - вывод в шаблоне

{if $product->attachment_files_one}<li><a href="../{$config->documents_dir}{$product->attachment_files_one}">Техническая документация</a></li>{/if}

 

 

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

Еще есть 1 вопрос, как сделать проверку если такой файл с таким названием есть то выдать ошибку ...

 

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

 

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

 

 

Страница www.xxxx.ru не работает
Сайт www.xxx.ru пока не может обработать этот запрос 
 

 

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

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

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

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

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

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

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

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

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

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