Jeszcze raz o linkach... problem

0

W zalozeniach istnieje punkt, zeby linki byly proste i czytelne - np.:

/text/Operatory

Proste. W skrypcie text robimy getenv('PATH_INFO') i juz mamy temat tekstu. To jest proste, ale w takiej postacii. Co jezeli tekst "Operatory" bedzie w encyklopedii Delphi oraz C++? W takim wypadku link powinien posiadac taka postac:

/text/Delphi/Operatory

Aby wskazac, ze chcemy skorzystac z encyklopedii Delphi. To tez jest proste, mozemy rozdzielic fraze przy pomocy funkcji explode() na podstawie znaku /. Ale jezeli tekst "Operatory" istnieje zarowno w encyklopedii Delphi PL oraz Delphi EN?
W takim wypadku proponuje link sformatowac nastepujaco:

/text/pl/Delphi/Operatory

Zakladajac, ze tytul artukulu moze zawierac znak / sytuacja staje sie skomplikowana:

/text/pl/Delphi/Operatory/bitowe

Jak rozdzielic taki lancuch uzyskujac informacje o nazwie encyklopedii, jezyku encyklopedii oraz tytule artykulu? Zakladajc, ze link moze miec rozna postac:

/text/Operatory/bitowe
/text/Operatory
/text/pl/Operatory
/text/Delphi/Operatory
/text/pl/Delphi/Operatory

Jakies pomysly? :-/

0

Z powyzszym juz sobie mniej wiecej poradzilem. Prosta petla ktora analizuje poszczegolne elementy. Jezeli element jest dwuznakowy to przyjmujemy ze to oznaczenie jezyka (w takim wypadku haslo musi byc dluzsze niz 2 znaki). Majac nazwy dostepnych encyklopedii rowniez jestesmy w stanie stwierdzic ktory element jest encyklopedia. To co pozostanie to tytul artykulu.

Nasunal sie jednak kolejny problem, zwiazany z linkami w artykulach (patrz dokumentacja, opis tabeli rr_link). Pobierajac tytul artykulu z tabeli rr_article nie mozemy stwierdzic czy artykul jest opisem klasy, metody, zdarzenia, funkcji, modulu czy tez zwyklym "luznym" tekstem. Nie wiem co w takim wypadku :/

Czy w zapytaniu dodac fraze LEFT JOIN sprawdzajaca czy ID tekstu odpowiada np. polu property_article, method_article itd? Czy w tabeli rr_article stworzyc kolumny article_unit, article_class itp. ktore posiadalyby wartosc 1 w przypadku gdy tekst jest opisem modulu, klasy itp...

Sam juz nie wie [???]

0

Jezeli element jest dwuznakowy to przyjmujemy ze to oznaczenie jezyka (w takim wypadku haslo musi byc dluzsze niz 2 znaki).
A nie przewidujecie takich linków? /text/pl/Delphi/Operatory/in czy /text/pl/Delphi/Operatory/or ? czyli szczegółowych prowadzących opisu danego operatora? Tak tylko mi się nasunłęo ;)

0

Owszem, przewidujemy. Taki przyklad jaki zaprezentowales zostanie rozpoznany prawidlowo :)

0

A gdyby do tabeli rr_article dodac pole article_type ktore zawieralo by trzy znaki
np opis:
klasy - kla - to 0
metody - met - to 1
zdarzenia - zda - to 2
funkcji - fun - to 3
modulu - mod - to4
tekst - txt

wtedy mozna zrobic funkcje sprawdzajaca czym jest dany art i w zaleznosci od tego co zwroci bedziemy wiedzieli ze np np jezeli w article_type jest 'met' oznaczamy jako 1

0

widmo: tak, na tej samej zasadzie funkcjonuja przestrzenie nazw (patrz dokumentacja). To o czym mowisz jest juz opisane w specyfikacji, tyle, ze kolumna ta nosi nazwe article_namespace.

0

hmm... moim zdaniem można było by usunąć znacznik jezyka, tzn. np. /text/Delphi/Operatory i w tym artykule gdzieś z boku napisać PL | EN czy inne jezyki w których dostepny jest artykuł. A przecież jeśli jest w innym jezyku to też inaczej sie nazywa np. /text/Delphi/Operators
albo w ogole zmiane jezyka zrobic na sesjach czy cookie

0

Hmm... tylko jest pewien problem: jezeli ja mam wybrany jezyk interfejsu: polski, a chce przeczytac artykul o "TMemo" w wersji ang.? W linku musi zostac zawarta jakas informacja o tym, w jakim jezyku jest napisany dany artykul, ktory zechce przeczytac.

0

Na CVS znajduje sie modul functions.php ktory zawiea moja funkcje get_path() ktora zwraca w tablicy informacje odnosnie tytulu tekstu, jezyka uzywanego w tekscie oraz encyklopedii a takze przestrzeni nazw. Mozna jej uzywac w ten sposob:

print_r(get_path('/text/Delphi/pl/Class:TMemo'));

Uwaga! Ten algorytm bazuje na tym, iz URL jest zbudowany tak: /text/{nazwa encyklopedii}/{jezyk uzywany w tekscie}/{Przestrzen nazw:}{artykul}.

Wszystkie parametry oprocz tytulu tekstu sa opcjonalne.

Co prawda algorytm niezbyt mi sie podoba, ale na razie nie wymyslilem nic innego :/ Jezeli ktos bedzie mogl go ulepszyc, to dziekuje z gory.

1 użytkowników online, w tym zalogowanych: 0, gości: 1