Domyślne sortowanie allegro

w dziale Strony WWW w Operze
Xeophyte napisał(a):

Witam.
Czy na allegro.pl można jakoś ustawić domyślne sortowanie po swojemu (bez logowania) tak żeby za każdym razem po wpisaniu hasła w wyszukiwarkę allegro w Operze otrzymywać wyniki już posortowane po mojemu?

zielak007 napisał(a):

Domyślne sortowanie ustawiasz poprzez wpisanie jednej lub dwóch liter według podanej legendy w linii:

var sortowanie = "n";
// ==UserScript==
// @name			Sortowanie wyników Allegro
// @include			http://allegro.pl/listing.php/search?*
// @exclude			http://allegro.pl/listing.php/search?*order*
// ==/UserScript==

opera.addEventListener('BeforeEvent.load', function(){
/*
n: Nazwa: od A
nd: Nazwa: od Z
p: Cena: najniższa
pd: Cena: najwyższa
d: Cena z dostawą: najniższa
dd: Cena z dostawą: najwyższa
b: Popularność: najmniejsza
bd: Popularność: największa
t: Do końca: najmniej
td: Do końca: najwięcej
*/
var sortowanie = "n"; //wpisz typ sortowania
var allegro = document.URL;
location.replace(allegro + "&order=" + sortowanie);
	
}, false);
Gdy wyszukujesz bezpośrednio z allegro.pl, to będzie sortować według tego co ustawisz w skrypcie. Jeśli jednak zmienisz na stronie sposób sortowania, to wyniki wyszukiwania z takiej podstrony będą sortowane według ostatnio użytego sortowania, bo tak działa Allegro.

chocimir napisał(a):

Zmyślne!

Xeophyte napisał(a):

No niby działa, dzięki.
Ale nie wszystkie sortowania się zmieniają chyba, np te z gotowymi ustawieniami w linku (jak reklamy)

zielak007 napisał(a):

Możesz podać przykładowy link? Nie korzystam z Allegro i nie wiem, gdzie szukać takich reklam. Domyślam się, że chodzi o linki, które zawierają order=, ale potrzebny mi żywy organizm do testów. wink

Xeophyte napisał(a):

Sory, jednak reklamy działają (chodziło mi o te duże na stronie głównej allegro prowadzące bezpośrednio do danej kategorii).
Nie działa mi ten skrypt w takich przypadkach:
- w kategoriach wyższych lub niższych np http://allegro.pl/telefony-komorkowe-nokia-4978 (do konca: najmniej)
- przy wyszukiwaniu konkretnych rzeczy np http://allegro.pl/listing.php/search?category=54052&change_view=2&order=p&sg=1&string=poch%C5%82aniacz+wilgoci&p=1 (cena: najnizsza) lub http://allegro.pl/listing.php/search?sg=1&string=poch%C5%82aniacz+wilgoci (do konca: najmniej)
W tym drugim przypadku nawet nie rozumiem dlaczego są 2 różne sortowania.
Szczerze mówiąc teraz już nawet nie wiem czy skrypt w ogóle mi działa (mam ustawione na popularność). Czy on zmienia "order=" w adresie automatycznie czy nie ma wpływu na treść adresu?

Xeophyte napisał(a):

W takim razie dlaczego nie działają mi dwa pozostałe sortowania, które nie mają w adresie "order=" z powyższego postu?

zielak007 napisał(a):

U mnie (na 11.64) działa. Podałeś 3 linki. Pierwszy i trzeci nie mają ustawionego order, więc skrypt go dodaje z wartością jaką wybrałeś. Drugi link już posiada ten parametr, więc skrypt go nie zmienia.
Włącz konsolę błędów (Ctrl+Shift+O), wyczyść widok, zamiast Wszystko wybierz JavaScript i odwiedź pierwszy link, który podałeś. Co się pojawiło w konsoli?

Xeophyte napisał(a):

"[06-06-2012 23:59:42] JavaScript - http://allegro.pl/telefony-komorkowe-nokia-4978
User Javascript thread
Uncaught exception: TypeError: Cannot convert 'document.body' to object
Error thrown at line 48, column 96 in <anonymous function: load>(a, b, c):
d=document.createElement("script"),d.setAttribute("src",a),b!=null&&d.addEventListener("load",b),c!=null&&d.addEventListener("error",c),document.body.appendChild(d);
called from line 48, column 828 in <anonymous function: loadAndExecute>(a, b):
return load(a,function(){return execute(b)})
called from line 50, column 0 in program code:
loadAndExecute("//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js", function() {

[06-06-2012 23:59:42] JavaScript - http://www.google-analytics.com/ga.js

Nie pobrano skryptu wywoływanego przez dokument"

zielak007 napisał(a):

To nie jest komunikat błędu, który pochodzi z tego skryptu. Sprawdź inne skrypty, bo któryś się nie wykonuje poprawnie.

Ktoś jeszcze może sprawdzić czy mu działa?

Xeophyte napisał(a):

Rzeczywiście, to inny skrypt do allegro, który swoją drogą też mi nie działa (http://www.horacy.art.pl/full-allegro-archive-koniec-z-aukcjami-przeniesionymi-do-archiwum/) faint
Zostawiłem ten Twój skrypt w katalogu jako jedyny i konsola nic przy nim nie pokazuje sad

zielak007 napisał(a):

Skrypt nie działa jeśli w adresie znajduje się order=. Zaletą tego jest to, że w razie konieczności można inaczej posortować wyniki wybierając sortowanie z listy na stronie. Natomiast wadą jest to, że jeśli klikniesz w link, który ma już określone sortowanie, to skrypt tego nie zmieni.
Alternatywą mogą być wyniki zawsze posortowanie tak jak wybierzesz w skrypcie, ale jeśli zajdzie potrzeba zmiany sortowania, to trzeba będzie to zrobić poprzez edycję skryptu, bo przez stronę się nie da.

Jeśli na jakiejś podstronie Allegro pojawi się błąd 404, to sprawdź czy na końcu adresu jest order=, a jeśli tak, to dodaj taką stronę do listy exclude, np:

// @exclude			*strona_problemowa*

// ==UserScript==
// @name			Sortowanie wyników Allegro
// @include			http://allegro.pl/*
// @exclude			http://allegro.pl/
// @exclude			*Register.php*
// @exclude			*Item*
// @exclude			*myaccount*
// @exclude			*search_form.php*
// @exclude			*services*
// @exclude			*help*
// @exclude			*country_pages*
// @exclude			*InfoPage*
// @exclude			*RightsProtectionCooperationProgram.php*
// @exclude			*.html*
// ==/UserScript==

opera.addEventListener('BeforeEvent.load', function(){
/*
n: Nazwa: od A
nd: Nazwa: od Z
p: Cena: najniższa
pd: Cena: najwyższa
d: Cena z dostawą: najniższa
dd: Cena z dostawą: najwyższa
b: Popularność: najmniejsza
bd: Popularność: największa
t: Do końca: najmniej
td: Do końca: najwięcej
*/
var sortowanie = "n"; //wpisz typ sortowania
var allegro = document.URL;
	if (allegro.indexOf("order=") == -1) {
		if (allegro.indexOf("&") == -1) {
			var znak = "?";
		} else {
			var znak = "&";
		};		
		location.replace(allegro+znak+"order="+sortowanie);	
	};
}, false);

zielak007 napisał(a):

No to masz coś popsute, bo podany skrypt u mnie również działa. Przy okazji ulepszyłem wpisy na liście exclude.

Medium napisał(a):

Originally posted by Xeophyte:

Rzeczywiście, to inny skrypt do allegro, który swoją drogą też mi nie działa (http://www.horacy.art.pl/full-allegro-archive-koniec-z-aukcjami-przeniesionymi-do-archiwum/)

Z tym skryptem coś nie tak. Piszą, że wersja 2.2, a na serwerach jest 2.1. Dlaczego?

Xeophyte napisał(a):

Originally posted by Medium:

Z tym skryptem coś nie tak. Piszą, że wersja 2.2, a na serwerach jest 2.1. Dlaczego?

Na jakich serwerach? U niego na stronie jest skrypt z "// @version 2.1" ale już w historii zmian jest 2.2 więc już w sumie nie wiem która to wersja.
Co do skryptu zielak007'a to do czasu stabilnej v12 Opery przenoszę tę sprawę do mojego tymczasowego katalogu rzeczy niewyjaśnionych\niedziałających, który to zresztą ma już prawie 20 pozycji smile

Medium napisał(a):

Originally posted by Xeophyte:

Na jakich serwerach? U niego na stronie

Właśnie na serwerze u niego. A co do wersji, to może pisze o swoich planach?

Xeophyte napisał(a):

Originally posted by Medium:

Originally posted by Xeophyte:

Na jakich serwerach? U niego na stronie

Właśnie na serwerze u niego. A co do wersji, to może pisze o swoich planach?

Dopytałem się twórcy skryptu, to jest wersja 2.2, tylko w tresci skryptu nie zostały zaktualizowane dane. Najaktualniejsza wersja jest zawsze na userscripts, czyli tam, gdzie linkuje horacy.art.pl

Medium napisał(a):

Originally posted by Xeophyte:

Dopytałem się twórcy skryptu

Dzięki! Jesteś niezawodny.



Xeophyte napisał(a):

Zainstalowałem O 12.00 i skrypt od sortowania chyba zaczął działać natomiast ten drugi ciągle nie działa.
Nie wiem co jest nie tak. Nie działa nawet na czystej instalce z czystym profilem (tylko ustawioną ścieżką na skrypt).
Ze strony http://allegro.pl/ShowItem2.php/itemNotFound/?item=806055794 w konsoli błędów otrzymuję tylko:

"[17-06-2012 20:05:53] JavaScript - http://allegro.pl/ShowItem2.php/itemNotFound/?item=806055794
User Javascript thread
Uncaught exception: TypeError: Cannot convert 'document.body' to object
Error thrown at line 48, column 96 in <anonymous function: load>(a, b, c):
d=document.createElement("script"),d.setAttribute("src",a),b!=null&&d.addEventListener("load",b),c!=null&&d.addEventListener("error",c),document.body.appendChild(d);
called from line 48, column 828 in <anonymous function: loadAndExecute>(a, b):
return load(a,function(){return execute(b)})
called from line 50, column 0 in program code:
loadAndExecute("//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js", function() {

[17-06-2012 20:05:53] JavaScript - http://allegro.pl/ShowItem2.php/itemNotFound/?item=806055794
User Javascript thread
Opera has modified the JavaScript on allegro.pl (allegro.pl: cache plugin properties to avoid performance impact from short interval). See browser.js for details"

Co do tego drugiego komunikatu to w browser.js na temat allegro mam tylko:

"} else if(hostname.indexOf('allegro.pl')>-1){ // PATCH-653, allegro.pl: cache plugin properties to avoid performance impact from short interval
makePropertyCacheable(HTMLEmbedElement.prototype, 'type');
makePropertyCacheable(HTMLEmbedElement.prototype, 'src');
if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (allegro.pl: cache plugin properties to avoid performance impact from short interval). See browser.js for details');"

Usunięcie browser.js też nic nie daje.

Xeophyte napisał(a):

Eh, kolejna rzecz przestała działać (kiedy koniec?).
Przez skrypt zielaka przestały mi działać strony "O mnie" na allegro...

zielak007 napisał(a):

Originally posted by zielak007:

Jeśli na jakiejś podstronie Allegro pojawi się błąd 404, to sprawdź czy na końcu adresu jest order=, a jeśli tak, to dodaj taką stronę do listy exclude

A skrypt archiwum ciągle działa. Jeśli używasz skryptu Greasemonkey w Operze, to musisz go odpowiednio nazwać.user.js zamiast .js.

Xeophyte napisał(a):

Originally posted by zielak007:

A skrypt archiwum ciągle działa. Jeśli używasz skryptu Greasemonkey w Operze, to musisz go odpowiednio nazwać — .user.js zamiast .js.

No rzeczywiście zadziałało. Ale dziwne bo wcześniej wrzucałem ściągnięty skrypt bez zmiany nazwy i nie działało.

Originally posted by zielak007:

Jeśli na jakiejś podstronie Allegro pojawi się błąd 404, to sprawdź czy na końcu adresu jest order=, a jeśli tak, to dodaj taką stronę do listy exclude

Ale to chyba nie taki przypadek. Teraz gdy chcę wejść np na http://allegro.pl/my_page.php?uid=15947459 to od razu przerzuca mnie na http://allegro.pl/. W konsoli żadnych błędów związanych z Twoim skryptem.

zielak007 napisał(a):

Wygląda na to, że Allegro nie zawsze wyrzuca 404, gdy pojawi się niewłaściwy parametr. W tym przypadku przekierowuje na stronę główną.
Dodaj w skrypcie do listy wykluczeń:

// @exclude	*my_page*

Xeophyte napisał(a):

Zadziałało, dzięki. Przy okazji zauważyłem, że jeszcze takie linki jak http://allegro.pl/listing/user.php?us_id=15947459 czy http://allegro.pl/show_user.php?uid=15947459 nie działały więc dodałem "user" do wykluczeń.
Obawiam się, że można tak się bawić w nieskończoność, nie da się tego jakoś globalnie załatwić?

zielak007 napisał(a):

Problemem jest to, że jest mnóstwo podkategorii, w których ma zadziałać sortowanie — trzeba by było dodać je wszystkie do include, dlatego łatwiej jest dodać kilkanaście stron do wyjątków.
Może jest jakiś sprytny sposób na to, żeby zwięźle i skutecznie zdefiniować kiedy ma zadziałać, ale nic nie przychodzi mi do głowy. Na pewno dałoby się zrobić tak, aby sprawdzić czy na stronie jest lista do sortowania i wtedy sortować, ale byłoby to wolniejsze, bo strona musiałaby się w pełni załadować.
Spróbuj tego:

// ==UserScript==
// @name			Sortowanie wyników Allegro
// @include			http://allegro.pl/*
// @exclude			http://allegro.pl/
// @exclude			*Register.php*
// @exclude			*Item*
// @exclude			*myaccount*
// @exclude			*search_form.php*
// @exclude			*services*
// @exclude			*help*
// @exclude			*country_pages*
// @exclude			*InfoPage*
// @exclude			*RightsProtectionCooperationProgram.php*
// @exclude			*.html*
// @exclude			*my_page*
// @exclude			*show_user*
// ==/UserScript==

opera.addEventListener('BeforeEvent.load', function(){
/*
n: Nazwa: od A
nd: Nazwa: od Z
p: Cena: najniższa
pd: Cena: najwyższa
d: Cena z dostawą: najniższa
dd: Cena z dostawą: najwyższa
b: Popularność: najmniejsza
bd: Popularność: największa
t: Do końca: najmniej
td: Do końca: najwięcej
*/
var sortowanie = "n"; //wpisz typ sortowania
var allegro = document.URL;
	if (allegro.indexOf("order=") == -1) {
		if (allegro.indexOf("?") == -1) {
			var znak = "?";
		} else {
			var znak = "&";
		};
		
		location.replace(allegro+znak+"order="+sortowanie);
	
	};
}, false);

chocimir napisał(a):

Originally posted by zielak007:

Może jest jakiś sprytny sposób na to, żeby zwięźle i skutecznie zdefiniować kiedy ma zadziałać, ale nic nie przychodzi mi do głowy.


Rzucam jako pomysł, na podstawie adresów podanych w tym wątku, jednak nie sprawdzałem czy i jak działa:
// ==UserScript==
// @name			Sortowanie wyników Allegro
// ==/UserScript==

if ( location.pathname.match(/^\/listing.php\/search\//) || //wyszukiwanie 
     location.pathname.match(/^\/[\w\d]+(-[\w\d]+)*$/) ) //kategorie
{
//opera.addEventListener('BeforeEvent.load', function(){
/*
n: Nazwa: od A
nd: Nazwa: od Z
p: Cena: najniższa
pd: Cena: najwyższa
d: Cena z dostawą: najniższa
dd: Cena z dostawą: najwyższa
b: Popularność: najmniejsza
bd: Popularność: największa
t: Do końca: najmniej
td: Do końca: najwięcej
*/
var sortowanie = "n"; //wpisz typ sortowania
var allegro = document.URL;
	if (allegro.indexOf("order=") == -1) {
		if (allegro.indexOf("?") == -1) {
			var znak = "?";
		} else {
			var znak = "&";
		};
		
		location.replace(allegro+znak+"order="+sortowanie);
	
	};
//}, false);
}

Xeophyte napisał(a):

Podbijam bo chciałbym się dowiedzieć czy dałoby się podobnie jak tym skryptem do sortowania załatwić włączenie na stałe (domyślnie) prostego widoku listy przedmiotów http://i.imgur.com/FEOn8OZ.png
Po wprowadzeniu nowego layoutu allegro ręczne przestawienie widoku nie jest u mnie zapamiętywane w ciasteczkach i ciągle mam widok szczegółowy.

Medium napisał(a):

Originally posted by Xeophyte:

Po wprowadzeniu nowego layoutu allegro ręczne przestawienie widoku nie jest u mnie zapamiętywane w ciasteczkach i ciągle mam widok szczegółowy.




Hmm, u mnie zostało, ale nie było restartu Opery,
tylko hibernacja systemu.

Chodzi najpewniej o to ciasteczko.

Dziwne, nie ma daty ważności, chociaż ciasteczek zwykle nie studiuję...

Na upartego można takie ciasteczko dopisać samodzielnie i ustawić długą datę ważności.

* * *

Przy okazji, panowie od skryptów, czy zmierzylibyście się z wycięciem promowanych aukcji?

Xeophyte napisał(a):

Działają wam powiadomienia na forum o nowej odpowiedzi? Ja oczywiscie mam powlaczane subskrypcje ale mi nic nie przychodzi na maila... mad
Nie wiem jak sie tworzy wlasne ciasteczka w Operze...
A co do promowanych ofert to przydalby sie przycisk do szybkiego przechodzenia do listy zwyklych ofert.

Medium napisał(a):

Originally posted by Xeophyte:

Działają wam powiadomienia na forum o nowej odpowiedzi?

Działają, ale praktycznie nie korzystam i nie powiem, jak szybko dochodzą.

Originally posted by Xeophyte:

Nie wiem jak sie tworzy wlasne ciasteczka w Operze...

Ja tylko sugerowałam wpisanie daty do tego ciasteczka. I nie wiem, czy to poskutkuje...

Originally posted by Xeophyte:

A co do promowanych ofert to przydalby sie przycisk do szybkiego przechodzenia do listy zwyklych ofert.

A umiesz je wyciąć CSSem? Bo ja doszłam do tego, ale 'zakomentowałam' w arkuszu dla Allegro wink

Pamiętasz może, jak tworzyć przycisk do wyboru arkusza CSS?



Ryszard napisał(a):

Originally posted by Xeophyte:

Działają wam powiadomienia na forum o nowej odpowiedzi?

Tak
https://files.myopera.com/Ryszard/files/powiado_.png

lemari napisał(a):

Originally posted by Ryszard:

Originally posted by Xeophyte:

Działają wam powiadomienia na forum o nowej odpowiedzi?

Tak
https://files.myopera.com/Ryszard/files/powiado_.png


Na pocztę, nie.
Przez kanały informacyjne, tak: http://storage4.static.itmages.com/i/13/0501/h_1367402668_4844169_3d6b355e20.png

Łukash napisał(a):

Originally posted by Medium:

Pamiętasz może, jak tworzyć przycisk do wyboru arkusza CSS?


http://my.opera.com/polski/forums/findpost.pl?id=14195762
?

Medium napisał(a):

Tak, już doszłam. Ale rozwiązanie z wybranym globalnie stylem uzupełniającym restrykcje dla Allegro jakby nie chce działać.
Mam dwa arkusze stylu Allegro.css i !Allegro.css, przy czym ten z wykrzyknikiem zawiera tylko reguły dla promo-aukcji (tylko te, które są przy mojej wiedzy, możliwe do wycięcia) i umieściłam go w domyślnym folderze stylów w Profilu użytkownika Opery.
Takie umieszczenie ułatwiało kiedyś zrobienie przycisku. Ale nawet, gdy wybiorę ten styl ręcznie, to jakoś nie widzę efektów, gdy w preferencjach dla witryny stoi ten pierwszy bardziej oszczędny styl.
Allegro wpędza mnie w depresję...
Ta regułka wycina tylko część promowanych sad

	
.listing .offer.promo-bold .excerpt header h2 span,
.offer-preview-promo-bold header h2 span, 
.listing .offer.promo-bold,
.offer-preview-promo-bold  {
   display: none !important;
 }

Tutaj przykład działania:
Allegro_oferty_na_stronie.png

Można próbować jeszcze dodawać te dwie linijki:
.listing .offer.highlight .excerpt,
.listing .offer.highlight:hover .excerpt,
Ale już znów się gubię... trzeba znaleźć jakiś uniwersalny przykład do testowania.

Xeophyte napisał(a):

Potrafiłby ktoś napisać skrypcik zmieniający aby domyślnie pokazywał się widok prosty na listach przedmiotów?
Czyszczenie ciastek allegro nie pomogło. Dopisywanie w nim daty wygaśnięcia nic nie daje bo za każdym razem tworzy się nowe z widokiem szczegółowym...

Medium napisał(a):

Originally posted by Xeophyte:

Dopisywanie w nim daty wygaśnięcia nic nie daje bo za każdym razem tworzy się nowe z widokiem szczegółowym...

Niestety...