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

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

Привет!

 

Никак не могу понять, каким образом формируются такие url страницы товара:

 

webshop.ru/products/5d27e2e28b2c370101cf06c9

webshop.ru/products/5d7db6b428fc710101b62057

 

Значение 5d27e2e28b2c370101cf06c9 - имеет 24 символа. То есть это не md5 против 32 символов

Первоначальное значение 5d статичное или меняется на 5a, 5b, 5c, 5d, 5e

Я так понимаю это не просто id, а возможно hash_id 

Подскажите как такое реализовать и как хранить в БД

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

очень просто. К примеру

 

 
	            for($i = 1; $i <= 5; $i++)
	            {
	                $num .= rand(0, 9);
	            }
 
			
			$url = 'x'$num;

 

результатом буде $url =x00000 где 0 - рандомная цифра от 0 до 9

 

 

изменить $url в ProductAdmin.php

 

можно использовать md5 и обрезать лишнее


 

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

очень просто. К примеру

 

 
	            for($i = 1; $i <= 5; $i++)
	            {
	                $num .= rand(0, 9);
	            }
 
			
			$url = 'x'$num;

 

результатом буде $url =x00000 где 0 - рандомная цифра от 0 до 9

 

 

изменить $url в ProductAdmin.php

 

можно использовать md5 и обрезать лишнее

 

 

 

Привет! 

Спасибо за вариант, я решил вопрос иначе

Заменил в simpla/ProductAdmin.php

$product->url = trim($this->request->post('url', 'string')); 

на

$product->url = uniqid('') . substr(md5(time()), 0, 11); //генерация url товара

Так же убрал транслит url и само поле url из шаблона. 

 

Теперь не могу понять, при каждом редактировании товара меняется и url. 

Как сделать проверку, если в базе поле url заполнено тогда оставить, если нет сгенерировать.  

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

Привет! 

Спасибо за вариант, я решил вопрос иначе

Заменил в simpla/ProductAdmin.php

$product->url = trim($this->request->post('url', 'string')); 

на

$product->url = uniqid('') . substr(md5(time()), 0, 11); //генерация url товара

Так же убрал транслит url и само поле url из шаблона. 

 

Теперь не могу понять, при каждом редактировании товара меняется и url. 

Как сделать проверку, если в базе поле url заполнено тогда оставить, если нет сгенерировать.  

 

 

 

в одном из файлов уже есть решение  осталось немного подумать

public function add_product($product)
	{	
		$product = (array) $product;
		
		if(empty($product['url']))
		{
			$product['url'] = preg_replace("/[\s]+/ui", '-', $product['name']);
			$product['url'] = strtolower(preg_replace("/[^0-9a-zа-я\-]+/ui", '', $product['url']));
		}

		// Если есть товар с таким URL, добавляем к нему число
		while($this->get_product((string)$product['url']))
		{
			if(preg_match('/(.+)_([0-9]+)$/', $product['url'], $parts))
				$product['url'] = $parts[1].'_'.($parts[2]+1);
			else
				$product['url'] = $product['url'].'_2';
		}

		
		
		if($this->db->query("INSERT INTO __products SET ?%", $product))
		{
			$id = $this->db->insert_id();
			$this->db->query("UPDATE __products SET position=id WHERE id=?", $id);		
			return $id;
		}
		else
			return false;
	}
Изменено пользователем shooroop
Ссылка на сообщение
Поделиться на другие сайты
  • 5 недель спустя...

uniqid с 2м параметром в true - даст 23 символа. Останется доклеить только 5
 

echo '5' . uniqid('', true);

Но в указанном примере скорее всего идет замена . (точки) что дает uniqid  - на какое то число. Либо какой то кастомный генератор 

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

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

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

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

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

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

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

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

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

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