генерация ссылки по ID товара

  • 21 Ответов
  • 216 Просмотров

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

*

effrit

  • *****
  • 7441
  • 815
  • effrit.com
Всем привет!
Жестокая судьба столкнула с магазином на JoomShopping (но в целом, мне нравится  ;D), сейчас вот думаю, как упростить жизнь простым продавцам.

Для чего вывожу в карточке товара артикул=ID товара, в связи с чем понадобилось реализовать быстрый переход к товару, зная этот самый ID.

В связи с этим вопрос - как можно по красоте сделать такое, используя встроенные функции движка?
Корявый запрос к бд я могу сделать и потом соорудить не сеошную ссылку вида /index.php?option=com_jshopping&controller=product&task=view&category_id=69&product_id=987,
но хочется чего-то более утонченного :).

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

Спасибо.

*

dmitry_stas

  • ********
  • 9651
  • 929
Re: генерация ссылки по ID товара
« Ответ #1 : 13.03.2017, 14:10:59 »
а переход нужен откуда? из админки?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

effrit

  • *****
  • 7441
  • 815
  • effrit.com
Re: генерация ссылки по ID товара
« Ответ #2 : 13.03.2017, 14:14:32 »
ну в админке же читерская ссылка - без ID категории, так что там задача автоматически решается :).
а вот со стороны сайта быстро глянуть, когда по телефону, скажем, артикул сообщат - вот тут грабля вылазит :)

*

dmitry_stas

  • ********
  • 9651
  • 929
Re: генерация ссылки по ID товара
« Ответ #3 : 13.03.2017, 14:15:58 »
поиск будет ЖШ-шный или Жумловый+плагин ЖШ? ядро хакаем? может быть проще присвоить 1-м запросом артикул=ID, а по артикулу и так поиск ищет?
« Последнее редактирование: 13.03.2017, 14:20:59 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

effrit

  • *****
  • 7441
  • 815
  • effrit.com
Re: генерация ссылки по ID товара
« Ответ #4 : 13.03.2017, 14:21:48 »
вот этот модуль стоит Jshopping Search.
как мне видится: перехватывается введенное значение, если это - число, то генерируем ссылку на товар.
если товара нет, то просто 404 вывалится.

ну или другой вариант, может в поиске уже предусмотрен режим передачи ID в каком-то виде.

*

dmitry_stas

  • ********
  • 9651
  • 929
Re: генерация ссылки по ID товара
« Ответ #5 : 13.03.2017, 14:33:33 »
имхо самый простой вариант - поиск по каким полям искать определяется в \components\com_jshopping\lib\default_config.php
Код
$config->product_search_fields = ...
если хаки делаем, то добавляем в массив product_id прям тут, если не делаем, то создаем файл \components\com_jshopping\lib\user_config.php и там уже переопределяем $config->product_search_fields

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

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

*

effrit

  • *****
  • 7441
  • 815
  • effrit.com
Re: генерация ссылки по ID товара
« Ответ #6 : 13.03.2017, 14:42:41 »
ммм. думается, этот метод даст побочные продукты поиска :)
типа, товар с ID = 10 вытащит 101, 1000. а уж что будет, если удастся через поиск протащить однозначное число... :)

наверно, надежнее все же будет гененрировать ссылку, а то тут подводные камни сразу повсплывали )

*

dmitry_stas

  • ********
  • 9651
  • 929
Re: генерация ссылки по ID товара
« Ответ #7 : 13.03.2017, 14:46:54 »
так сделать ID
надо убедиться, что product_id будет заведомо уникальный по отношению к другим полям, и достаточно длинный чтобы поиск сработал
:) делаем старт ID товаров от 888800000 например. тогда первый ID будет 888800001 и так далее. и никаких совпадений :) если товаров предполагается больше чем 100К то соответственно нулей больше в конце сразу делаем
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

effrit

  • *****
  • 7441
  • 815
  • effrit.com
Re: генерация ссылки по ID товара
« Ответ #8 : 13.03.2017, 14:48:41 »
это вполне вариант, но - для нового магаза :)
а для старого с 300 товаров и старте с единицы - это диверсия будет, думается ))


*

dmitry_stas

  • ********
  • 9651
  • 929
Re: генерация ссылки по ID товара
« Ответ #10 : 13.03.2017, 15:01:51 »
ох уже эти менеджеры :) выводить можно и без 8888, обрезать их :) а вбивать уже с ними. ну и изменить то ид можно в базе запросами.

ну а если ссылку, то надо тогда ловить плагином или хаком в контроллере \components\com_jshopping\controllers\search.php ввод юзера, проверять на число, если число, то выбирать product_id, если нашли, то делать запрос по этому product_id определять первую категорию (методы уже есть готовые в JTable продукта, надо просто load() и потом getCategory()), и редиректить на SEFLink('index.php?option=com_jshopping&controller=product&task=view&category_id=69&product_id=987')
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

effrit

  • *****
  • 7441
  • 815
  • effrit.com
Re: генерация ссылки по ID товара
« Ответ #11 : 13.03.2017, 15:09:12 »
не, чем больше креатива на предмет "выводить можно и без 8888", тем менее мне хочется думать в эту сторону уже :).

а вот по второму - можно пример load() и потом getCategory() для гуманитариев :)?

*

dmitry_stas

  • ********
  • 9651
  • 929
Re: генерация ссылки по ID товара
« Ответ #12 : 13.03.2017, 15:17:16 »
Код
$product_id =  ... ;
$tProduct = JTable::getInstance('Product','jshop');
$tProduct->load($product_id);
if ($tProduct->product_id) {
    $tProduct->getCategory();
    JFactory::getApplication()->redirect(SEFLink('index.php?option=com_jshopping&controller=product&task=view&category_id='.$tProduct->product_id.'&product_id='.$tProduct->category_id));
}
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций


*

dmitry_stas

  • ********
  • 9651
  • 929
Re: генерация ссылки по ID товара
« Ответ #14 : 13.03.2017, 15:44:58 »
ахаха :) гуманитарии :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

effrit

  • *****
  • 7441
  • 815
  • effrit.com
Re: генерация ссылки по ID товара
« Ответ #15 : 13.03.2017, 15:54:34 »
вот тебе смешно, а это все - правда!
тем более, это удобно, когда тебя пытаются заставит программировать.
типа "вы знаете, вот если бы вы стих попросили сочинить ... , а программирование - не мое" :)

*

effrit

  • *****
  • 7441
  • 815
  • effrit.com
Re: генерация ссылки по ID товара
« Ответ #16 : 13.03.2017, 20:05:05 »
в общем, ленивые гуманитарии репу почесали и пошли своим кривым, но гордым путем :)
на сайте имеются мультикатегории, так что решено было воспользоваться этим делом для оправдания собственной лени и нежелания хакать ядро :).
в итоге в карточке товара выводим артикул вида:
1093-25
где первое число - ID товара, второе - ID категории.
в шаблоне создаем папку
mod_jshopping_search
в нее переносим default.php из модуля и там слегка правим JS часть, благо уже есть перехватчик, который проверяет ввод на пустоту.
почти изящно вписываем в него регулярку с проверкой и редирект на нужную страницу.
alert не дает выйти из скрипта раньше времени и перейти на поиск.
профит :)

Код
function isEmptyValue(value){
    
regexp = /^([\d]*)-([\d]*)/g;
str = value;
var maches = regexp.exec(str);
if(maches){
url = '/index.php?option=com_jshopping&controller=product&task=view&category_id='+maches[2]+'&product_id='+maches[1];
window.location.href = url;
alert("введен артикул");
}
var pattern = /\S/;
return ret = (pattern.test(value))? (true) : (false);

}

*

dmitry_stas

  • ********
  • 9651
  • 929
Re: генерация ссылки по ID товара
« Ответ #17 : 13.03.2017, 21:17:03 »
а урлы просто закрыть от индексации такие или каноникал прописать? ну че, норм решение. просто и со вкусом.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

effrit

  • *****
  • 7441
  • 815
  • effrit.com
Re: генерация ссылки по ID товара
« Ответ #18 : 13.03.2017, 21:21:54 »
каноничный URL прописан плагином, скачал где-то бесплатный (не навигеновский, без перекидывания). а урлы страшные, естессно, закрыты сразу как только ставиться галочка "сеошные ссылки" :).
кстати, можно закрепить тему, наверно. вполне годных 2 решения есть.

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


*

effrit

  • *****
  • 7441
  • 815
  • effrit.com
Re: генерация ссылки по ID товара
« Ответ #19 : 13.03.2017, 21:57:23 »
да, проверил var_dump'ом содержание объекта product - там нет указания текущей категории, они там все перечислены в массиве.
так что если кому надо вывести в артикул текущую - выколупываем отсель
Код
$_SERVER["HTTP_HOST"].'/index.php?' . http_build_query($_REQUEST);
/спасибо дяде Федору за наше счастливое детство :) /

*

dmitry_stas

  • ********
  • 9651
  • 929
Re: генерация ссылки по ID товара
« Ответ #20 : 14.03.2017, 00:59:11 »
в карточке товара $this->category_id содержит id текущей категории
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций