gsv1982 Posted October 28, 2011 Share Posted October 28, 2011 Существует такое понятие как перелинковка. Перелинковка служит для внутренней оптимизации сайта под поисковые системы. Для того чтобы была перелинковка - необходимо чтобы на странице товара были ссылки на следующий и предыдущий товар в категории. На сколько я понял в престе это позволяет сделать модуль дополнительных товаров. ВОПРОС: Как изменить вывод этого модуля, по умолчанию этот модуль выводит на странице любого товара из категории одни и те же товары из категории, а надо чтобы он выводил к примеру 5 предыдущих и 5 следующих товаров. Если кто что нибудь знает - помогите!!! Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted October 28, 2011 Share Posted October 28, 2011 вообще перелинковка нужна чтобы распределять "вес" на нужные страницы, это не обязательно страницы товаров. по модулю - там надо менять запрос к БД, насколько помню там "свой" запрос используется, в обход стандартных. Link to comment Share on other sites More sharing options...
gsv1982 Posted October 29, 2011 Author Share Posted October 29, 2011 Ну к примеру у меня в категории 322 товаров http://karman.org.ua/906540-bolgarki-ushm - это болгарки вес распределить мне необходимо равномерно для каждой страницы товара. А сейчас получается, что странице любого товара отображаются только 10 конкретных товаров из этих 322. Получается неравномерное распределение веса, основной вес получают только 10 этих товаров, а нужно чтобы было всё равномерно. Link to comment Share on other sites More sharing options...
gsv1982 Posted October 29, 2011 Author Share Posted October 29, 2011 Как поменять запрос к базе данных. Логики запроса вообще не могу понять. У меня 322 товара в категории. С ИД от 4691 по 5012. На странице любого товара выводятся только товары с следующими ИД - 4867, 4868, 4869, 4870, 4871, 4863, 4862, 4854, 4855, 4856 - где здесь логика? Для примера взял вот эти товары: http://karman.org.ua/bolgarki-ushm/4860-uglovaja-shlifmashina-sturm-ag9512e.html - ИД 4860 http://karman.org.ua/bolgarki-ushm/4979-uglovaja-shlifmashina-zenit-zush-125950.html - ИД 4979 А хотелось бы, что бы для товара с ИД 4860 в дополнительных товарах отображалась следующая последовательность 4855, 4856, 4857, 4858, 4859, 4861, 4862, 4863, 4864, 4865 Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted October 29, 2011 Share Posted October 29, 2011 Получается неравномерное распределение веса, основной вес получают только 10 этих товаров да все верно, я всего лишь хотел сказать что перелинковка может выполнять разные задачи. Если добавить ссылки на другие товары по какому-то критерию, то вес распределится еще и на них. Если же стоит задача именно выделить какие-то страницы - то надо убрать раздачу веса с остальных и сосредоточить на "товарах" например. Конкретная реализация зависит от конкретных задач. Заглянул в модуль, в самом модуле получить то что ты хочешь - нельзя, надо изменять/дополнять методы ядра Link to comment Share on other sites More sharing options...
surkov85 Posted October 29, 2011 Share Posted October 29, 2011 Просто поменять запрос в модуле не получиться, нужно написать небольшой свой, взяв за основу функцию getProducts из класса products. Sql запрос чтобы вытащить нужные товары будет выглядеть так WHERE `id_product` > "id_текущего продукта" AND `id_category_default` = "id_категории_текущего продукта" LIMIT 5 Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted October 29, 2011 Share Posted October 29, 2011 тогда скорее WHERE `id_product` <> "id_текущего продукта" и ТС же хочет брать +/-5 товаров от текущего Link to comment Share on other sites More sharing options...
surkov85 Posted October 30, 2011 Share Posted October 30, 2011 Не правильно, в sql оператор "<>" означает - "не равно" , и соответственно выведет он Вам первые по нумерации товары id которых не равно текущему товару правильнее и проще использовать два запроса WHERE `id_product` > "id_текущего продукта" WHERE `id_product` < "id_текущего продукта" Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted October 30, 2011 Share Posted October 30, 2011 точно, не учел, тогда как-то так, правильный синтаксис не помню, но идея ясна WHERE `id_product` > "id_текущего продукта" - 5 AND `id_product` < "id_текущего продукта" + 5 AND `id_product` <> "id_текущего продукта" Link to comment Share on other sites More sharing options...
surkov85 Posted October 30, 2011 Share Posted October 30, 2011 Думаю это то же неверно, лучше уж тогда использовать оператор "between", но и при этом учитывайте что могут быть провалы в нумерации, например 4855, 4856, 4858, 4859, 4860 где 4857 товара нет, он может быть просто удален. Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted October 30, 2011 Share Posted October 30, 2011 да кроме всего товары нужно будет выбирать из текущей категории, а там порядок айди не соблюдается. Короче сесть подумать - чето придумать можно) Link to comment Share on other sites More sharing options...
gsv1982 Posted November 9, 2011 Author Share Posted November 9, 2011 Ребята, если кому надо, вот нашёл хороший модуль, который добавляет на страницу товара ссылки на следующий и предыдущий товар - это как раз то, что я и искал. http://www.prestashop.com/forums/topic/52315-module-next-and-previous-links-on-the-product-page/ Link to comment Share on other sites More sharing options...
gsv1982 Posted November 9, 2011 Author Share Posted November 9, 2011 Если вдруг какие вопросы пишите, я уже немного с ним разобрался помогу чем смогу. Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted November 9, 2011 Share Posted November 9, 2011 Ребята, если кому надо, вот нашёл хороший модуль, который добавляет на страницу товара ссылки на следующий и предыдущий товар - это как раз то, что я и искал. http://www.prestasho...e-product-page/ что самое смешное я когда-то искал этот мод, и мне даже кто-то ссылку нарыл. Чето я не сообразил его сюда запостить) Link to comment Share on other sites More sharing options...
kyestu Posted November 13, 2011 Share Posted November 13, 2011 Если вдруг какие вопросы пишите, я уже немного с ним разобрался помогу чем смогу. Здравствуй. При переходе на следующий товар появляется "[Debug] This page has moved Please use the following URL instead: http://www.site.ua/товар", а url страницы товара выглядит - site.ua/категория/товар. Link to comment Share on other sites More sharing options...
gsv1982 Posted November 14, 2011 Author Share Posted November 14, 2011 Разобрался с модулем дополнительные товары. Сначала получаем массив отсортированный по айди продукта $categoryProducts = $category->getProducts((int)($cookie->id_lang), 1, 1000, 'id_product'); /* 1000 products max. */ Потом в цикл который ищет товар в массиве по ид, чтобы его удалить из этого массива, добавил ещё цикл, который считает количество товаров которые идут в массиве до этого ид // Remove current product from the list if (is_array($categoryProducts) AND sizeof($categoryProducts)) { foreach ($categoryProducts AS $key => $categoryProduct) if ($categoryProduct['id_product'] == $idProduct) { unset($categoryProducts[$key]); break; } elseif ($categoryProduct['id_product'] != $idProduct) { $i++; } Остальное всё можно закоментировать, до цикла который обрезает лишние товары для вывода, в котором надо заменить $middlePosition на переменную $i. if ($sizeOfCategoryProducts > 10) { $categoryProducts = array_slice($categoryProducts, $i - 5, 10, true); } } Link to comment Share on other sites More sharing options...
gsv1982 Posted November 14, 2011 Author Share Posted November 14, 2011 Только ещё не разобрался с выводом для крайних элементов. Сейчас получается что для крайнего элемента будет отображаться только 5 товаров которые идут перед ним, а после него, т.е. те товары которые в начале массива не показывает. Такая же ситуация и с первым товаром показывает не правильно. Ну это надо разобраться с массивами. Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted November 14, 2011 Share Posted November 14, 2011 посмотри в сторону - array_slice и т.п. имхо, цикл для подсчета элементов - лишний Link to comment Share on other sites More sharing options...
gsv1982 Posted November 14, 2011 Author Share Posted November 14, 2011 Без цикла нельзя на нём всё и завязано. Возьмём к примеру вот этот товар http://karman.org.ua/gazonokosilki/4230-gazonokosilka-benzinovaja-sadko-glm-43.html ID его 4230, т.е. должно быть 10 товаров с следующими id 4225, 4226,4227,4228,4229,4231,4232,4233,4234,4235 Заходим и проверяем. Так оно и есть. Смотрим вот єту строчку $categoryProducts = array_slice($categoryProducts, $middlePosition - 5, 10, true); В массиве 110 товаров с ид от 4203 по 4312. Она берёт и из массива который отсортирован по id и делает следующее. Исходя из описания функции http://php.su/functions/?array-slice от 110 делает смещение к началу на 27-5=22 и выводит 10 товаров, но нашего товара нет в этой последовательности, так как его из массива выкинула, вот эта функция unset($categoryProducts[$key]); Если убрать цикл, как я смогу передать array_slice на сколько надо будет делать смещение. Link to comment Share on other sites More sharing options...
gsv1982 Posted November 14, 2011 Author Share Posted November 14, 2011 А вот к примеру для 5-ти последних и 5-ти первых товаров в категории работает этот способ не совсем правильно. Для товара последнего в категории с ид 4312 http://karman.org.ua...j-46-s-bx-.html будут отображены товары 4307.4308,4309,4310,4311, а 5-ти следующих товаров нет Так как из условия $categoryProducts = array_slice($categoryProducts, $middlePosition - 5, 10, true); $categoryProducts = array_slice(110, 110 - 5, 10, true); получается что надо вывести 10 товаров начиная с 105 товара, оно так и выводит 5 последних товаров в массиве, а надо ещё и 5 первых, а array_slice не позволяет это сделать, может есть какой-то другой способ вытащить из массива 10 товаров даже если достигается конец массива, чтобы брались значения из начала массива. Link to comment Share on other sites More sharing options...
kyestu Posted November 14, 2011 Share Posted November 14, 2011 Коллеги, как сделать, чтобы модуль "дополнительные товары" не отображал товары из категории "главная". Link to comment Share on other sites More sharing options...
kyestu Posted November 14, 2011 Share Posted November 14, 2011 И что править в модуле "productlinksnc", чтобы он делал переадресацию автоматически Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted November 14, 2011 Share Posted November 14, 2011 А вот к примеру для 5-ти последних и 5-ти первых товаров в категории работает этот способ не совсем правильно. все же мне кажется много там надумано) пример выводит +/-3 эл-та независимо от позиции эл-та $prodID = array('a','b','c','d','e','f','g','h','s'); $count = count($prodID); $key = 7; for ($index = $key-3; $index < $key+4; $index++) { if ($index<$count) echo $prodID[$index],' - '; else echo $prodID[$index-$count],' - '; } /* * $key - индекс текущего эл-та * выдача: * e - f - g - h - s - a - b - */ п.с. ID его 4230, т.е. должно быть 10 товаров с следующими id неверно, там выше уже обсуждали, айди могут идти не по порядку, пропущены и т.д. +-5 товаров - речь о индексах массива, а не о айди товара Link to comment Share on other sites More sharing options...
Recommended Posts