PDA

Zobacz pełną wersję : Duplikowanie się linków



Tart
14-05-2007, 14:05
Dla tego samego artykułu Jooomla 1.12 generuje dwa różne linki:
####
index.php?option=com_content&Itemid=99999999&id=22&task=view
index.php?option=com_content&Itemid=31&id=22&task=view
####
prowadzące do tego samego artykułu.
W przypadku "przechodzenia" na artykuł poprzez link z Itemid=99999999 nie działa PatWay. Wydaje mi się, że w ogóle nie powinno być linków z Itemid=99999999, tak to wychodzi z \components\com_content\content.html.php i nawet niejaki RobSon podał poprawkę która nieco poprawia sytuację (np. zły link na "czytaj wiecej") ale niestety nie wszystko poprawia i nie znalazłem na to ostatecznego lekarstwa. Może coś przeoczyłem, a duplikowanie artykułów potwornie mi przeszkadza :(

stone
14-05-2007, 22:00
Możesz pokazać konkretny przykład, gdzie coś takiego Ci wystąpiło? Może coś się nasunie

Rybik
14-05-2007, 23:18
itemid=99999 jest dopisywane przez niektore skrypty zeby zabezpieczyc sciezkeprzed pustym parametrem, nie wiem w tej chwili gdzie sa takie generowane ale moge opisac ogolna metodologie :)
itemid to identyfikator mowiacy warstwie frontend z ktorego linka menu został dany materiał wygenerowany, zeby moc potem dobac zestaw modulow do pokazania dla tej pozycji.
"naprawa" tego jest banalna jezeli chodzi o skrypt ale trzeba sie zastanowic jakie itemid jest nam potrzebne: a) id biezacej strony, b) id ewentualnego linka w menu c) brak id
W kazdym z wypadkow nalezy znalezc skrypt ktory takie id generuje i
a) sciagnac biezace id z linka lub zmiennych superglobalnych
b) przeleciec sie po tabeli jos_menu i sprawdzic czy art nie jest podlinkowany, pobrac id (dodatkowe zapytanie sql)
c) usunac z linka parametr itemid - link bedzie prowadzil we wlasciwe miejsce a strona pokaze zestaw modulow dla opcji "nieprzypisane"
Nie bardzo wiem:
- gdzie widac ten link ? (co i jak poprawiac)
- w czym przeszkadza taki dubel ? (gdzie pokazywane sa 2 jednakowe artykuly)
bez tych danych ani rusz

Tart
15-05-2007, 09:09
Możesz pokazać konkretny przykład, gdzie coś takiego Ci wystąpiło? Może coś się nasunie
Skoro jest zainteresowanie to piszę.
1. Amerykański wątek na ten temat to:
http://forum.joomla.org/index.php/topic,125365.0.html
i gość RobS podaje częściowe rozwiązanie (jeszcze na pierwszej stronie wątku), niestety nie jest one pełne, w tym sensie że nie załatwia wszystkich problemów.
2. Zapraszam w takim razie na (w celach testowych oczywiście):
http://katalog-stron.freedom.pl
i błąd widać w następujący sposób:
a) proszę wybrać dowolny link z Nowości - będzie coś w rodzaju np. ../nauka-angielskiego.html - nacisnąć
b) następnie pod tytułem artykułu jest link do kategorii - nacisnąć i pojawia się lista artykułów w kategorii
c) na liście artykułów jest ten artykuł ale już w formie .../nauka-angielskiego-2.html i ten link właśnie ma Itemid=9999999 (przed "przepisaniem" przez JoomSEF) i PathWay nie działa :(

W sumie najłatwiej to prześledzić na generowaniu listy zawartości kategorii w sekcji, np:
http://katalog-stron.freedom.pl/internet-i-komputery/
http://katalog-stron.freedom.pl/internet-i-komputery/2.html
Czyli nawet lista artykułów w kategorii jest w różny sposób generowana!
Uwaga: to, że jest zainstalowany i aktywny JoomSEF to nie ma znaczenia, wtedy byłoby tylko widać te nieszczęsne Itemid. Jest jeszcze trzeci rodzaj duplikowanych linków wtedy Itemid jest w ogóle pusty. Jeszcze raz podkreślę, wyłączenie lub nawet nie instalowanie JoomlaSEF NIC nie zmienia. Efekt jest taki sam i aż mi się nie che wierzyć, ze nie ma na to bata - instaluję zawsze wersję 1.012 z polskim adminem. Zreszta występują jeszcze "fajniejsze" efekty ale są trudne do opisania i można je "obejść", a podejrzewam, że ustąpią po eliminacji podstawowego problemu.
Acha duplikowanie artykułów oczywiście przeszkadza i to bardzo, mod rewritem tego w moim przypadku nie załatwię z oczywistych przyczyn, tzn. artykuły z cyframi na końcu mają prawo się pojawiać
Z góry dzięki za podpowiedzi.

Rybik
15-05-2007, 18:19
lista art w sekcji / kategorii jest roznie generowana poniewaz w menu masz ustalony typ "blog" a link spod tytulu jest typu "tabela"
na razie wylacz sef, latwiej bedzie to obadac

Tart
15-05-2007, 19:41
na razie wylacz sef, latwiej bedzie to obadac

Dzięki za chęć pomocy, jednak już nie za bardzo mogę wyłączyć SEF bo mnie zabiją :)
W sumie najlepiej ilustruje problem następujący przykład:

http://katalog-stron.freedom.pl/index.php?option=com_content&Itemid=28&id=19&task=view
Artio JoomSEF zamienia na:
http://katalog-stron.freedom.pl/internet-i-komputery/katalogi-stron/ranking-katalogow-stron.html

http://katalog-stron.freedom.pl/index.php?option=com_content&Itemid=99999999&id=19&task=view
Artio JoomSEF zamienia na:
http://katalog-stron.freedom.pl/internet-i-komputery/katalogi-stron/ranking-katalogow-stron-2.html

http://katalog-stron.freedom.pl/index.php?option=com_content&id=19&task=view
(http://katalog-stron.freedom.pl/index.php?option=com_content&id=19&task=view) Artio JoomSEF zamienia na:
http://katalog-stron.freedom.pl/internet-i-komputery/katalogi-stron/ranking-katalogow-stron-3.html

Oczywiście wszystki powyższe linki prowadzą do tego samego artykułu, drugi i trzeci zestaw są "nadprogramowe" i niepotrzebne, generuje je Joomla, a SEF tylko przepisuje. W tych niepotrzebnych duplikatach nie funkcjonuje już PathWay. A może to ten trzeci zestaw jest dobry i Itemid jest do niczego potrzebne czyli zbędne? Nie znam na tyle dobrze Joomli żeby prawidłowo ocenić sytuację, jednak najwyraźniej itemid nie jest potrzebne aby prawidłowo wyświetlić artykuł!

Rybik
15-05-2007, 20:41
oczywiście, że nie jest :) - itemid identyfikuje pozycje menu na potrzeby ukladu modulow i pathway
Czytać uwaznie , błąd bierze się stąd:
Link do sekcji i kategorii wewnatrz artykulu, pod jego tytulem jest generowany automatycznie i jezeli kategoria nie posiada swojego linka w zadnym menu, link nie posiada itemid lub dostaje 9999.
Po kolei, zalozmy ze w menu jest Sekcja [itemid 2] i pod nia Kategoria [itemid 3] - oba typu Blog, wybranie Kategorii z menu powoduje pokazanie bloga z kategorii i nadanie linkowi itemid 3. Teraz strona wie ze ma wybrac takie moduly jak dla tej pozycji menu oraz ze w Pathway jest sciezka "Sekcja > Kategoria". Ten sami itemid zostanie przydzielony artykulom wybranym z tego bloga. Wszystko pięknie.

A co w wypadku kiedy w menu jest tylko sekcja a Kategoria nie posiada zadnego linka w zadnym menu ?
Wtedy link do kategorii generowany automatycznie pod tytułem nie znajduje istniejacych odwołań więc leci na ustawieniach domyslnych, traci forme bloga, na rzecz listy/tabeli i gubi itemid i wszystkie wywołane z niego artykuły są juz osierocone z itemid.
Walczyłem z tym conieco i jak na razie skutecznym wyjsciem jest utworzenie w menu pełnej struktury sekcji z podkategoriami, tak zeby kazda sekcja i kategoria mialy w menu swoje wywolanie, wszystkie te linki najlepiej dac jako blog - pozbedziemy sie brzydkiej formy lista/tabela no i wiadomo bedzie skad brac itemid.
Prawdopodobnie trzebaby jeszcze w com content pogrzebac zeby wyplenic listy i tabele na rzecz blogów, ale jak mowilem, z wlaczonym SEF nie moge za wiele teraz powiedziec a nie bardzo mi sie chce stawiac nowej instalki zeby to obejrzec.

Tart
15-05-2007, 20:59
... ale jak mowilem, z wlaczonym SEF nie moge za wiele teraz powiedziec a nie bardzo mi sie chce stawiac nowej instalki zeby to obejrzec.
Ok. To proszę masz świeże mięsko z tym błędem jak na dłoni i bez SEFa:
http://presell.freedom.pl

Niestety jest nie do końca tak jak piszesz, albo nie do końca zrozumiałem.
Artykuły dają blog, natomiast linki na kategoriach (pod tytułami do artykułów) już są błędne.
Katetegorie z kolei dają prawidłowe listy, ale te listy już zawierają złe linki do artykułów (na tytułach). Wygląda mi to na kwadraturę koła :(
Dzięki za zainteresowanie i myślę, że to problem z którego wielu właścicieli serwisów z Joomlą nie zdaje sobie sprawy. Może "za chwilę" dojdziemy z tym do ładu :)
Acha, na tym serwisie mogę włączyć/wyłączyć co sobie zarzyczy, zresztą nawet admina Ci mogę tam dać.

Rybik
15-05-2007, 21:20
Wyrażajmy się precyzyjnie :)
1. Link w menu ustawiony na blog daje blog
2. Automatyczny link do kategorii [pod tytulem artykulu] daje liste
I to najpewniej ten link wszystko partoli, poniewaz nie przekazuje itemid, wiec artykuly z tej listy sa wlasnie tymi duplikatami bez itemid lub z 9999
Przypuszczenie - automatyczny link do kategorii prawdopodobnie umie sie zachowywać grzecznie pod warunkiem ze ta kategoria ma swojego linka w menu.
Przypuszczenie 2 - kod tego linka i tak trzeba poprawić ...

Najpierw zrób tak jak mówiłem, czyli daj w menu linka do bloga z sekcji i jako element podrzedny linka do bloga z kategorii, sprawdz czy blad dalej wystepuje w obrebie tej podlinkowanej kategorii.

Tart
15-05-2007, 21:39
Najpierw zrób tak jak mówiłem, czyli daj w menu linka do bloga z sekcji i jako element podrzedny linka do bloga z kategorii, sprawdz czy blad dalej wystepuje w obrebie tej podlinkowanej kategorii.
Zrobiłem, przynajmniej tak jak zrozumiałem. Czy o to chodziło?
Dałem nawet dwa razy tego bloga z kategorii, wywaliłem listy, nawet z kosza :)
Niestety nie pomogło :(
Mogę teoretycznie zakazać linkowania na kategoriach w blogu, ale właśnie na tym mi zależy! Poza tym, chyba i tak listy będą do kitu.

Rybik
15-05-2007, 22:21
to musiałbym już w kodzie pogrzebać, temat raczej nie na dzisiaj :/

Tart
15-05-2007, 22:29
to musiałbym już w kodzie pogrzebać, temat raczej nie na dzisiaj :/
Poczekam i dzięki na dziś, trochę do przodu się w końcu posunęliśmy :)

rkubera
17-05-2007, 22:26
Witaj Tart tu Radek [z PiO ;)]
Więc mała prośba - abyś zajrzał w swój SEF i napisał - jak te linki wyglądają po rozwikłaniu- ten bez -2.html i tem .html

Przykład:
http://katalog-stron.freedom.pl/edukacja-i-kultura/inne/kursy-jezykowe-za-granica.html
to tak naprawdę:
http://katalog-stron.freedom.pl/index.php?option=com_content&task=view&id=234&Itemid=12

http://katalog-stron.freedom.pl/edukacja-i-kultura/inne/kursy-jezykowe-za-granica-2.html
to jest:
http://katalog-stron.freedom.pl/index.php?option=com_content&task=view&id=234&Itemid=9999999

Moim zdaniem problem polega na błędnym module nowości a nie na problemie z komponentem com_content - w linkach generowanych przez niego prawdopodobnie nie ma Itemid
lub jest błędny (inny niż być powinien) i dlatego masz inne Itemid w tabeli i SEF generuje Ci dwa różne linki.

Jak znajdziesz te linki, to opublikuj je, bo to dosyć istotny punkt.

Jak nie chcesz mieć duplicate content to tak na szybko schowaj moduł nowości. Wtedy dla nowych artykułów będzie Ci generować tylko jeden link, dla starych pozostanie. Chyba że usuniesz wpisy w bazie. Zobacz też, że nawigując po menu a nie wchodząc przez nowości - masz dobre linki - bez 9999999.Postaram się za jakiś czas wystawić poprawnie działający taki moduł - mam takowy gdzieś.

EDITED:
To samo dotyczy modułu "popularne" - te moduły generują CI błedne Itemid

rkubera
17-05-2007, 23:25
No dobra, chyba mam rozwiązanie, jednak com_content:
/components/com_content/content.php

linia ~1700

przed linijką:


if ($catLinkURL) {
dołożyłożyć 1 linijkę:


if (!$_Itemid) $_Itemid = '&Itemid='. $mainframe->getItemid( $row->id, 0, 0 );
if ($catLinkURL) {

Problem był z "linked categories" - tam źle wyliczał Itemid.

Tart
18-05-2007, 19:53
No dobra, chyba mam rozwiązanie, jednak com_content:
/components/com_content/content.php

linia ~1700


Po pierwsze to u mnie jest to linia 1865
Po drugie nie chyba a NA PEWNO!!!
Wielkie brawa i dzięki, podstawowy problem został rozwiązany. Być może ten błąd jeszcze gdzieś jest, ale już nie tak na wierzchu! Nie ukrywam, że sam zbyt słabo znam Joomlę, aby rozwiązać tę szaradę!
Proponuję żebyś coś puścił na ten temat na forum.joomla.org bo warto i zaoszczędzisz wielu nerwów właścicielom serwisów na Joomli!
Jeszcze raz wielkie dzięki!
T.

Edycja:
Tak jak sądziłem jednak jest to istotna, ale niestety jeszcze niepełna poprawa :(
Jeżeli w menu zrobię sobie link Kategorie zwierający "Table - Content Category" to znów zaczynają się duplikaty! Takie jak poprzednio na linkach nazw kategorii.
Na szczęście dopóki nie użyję w menu tablicy zawartości kategorii to na razie nie zauważyłem duplikatów - da się z tym przeżyć :)