PDA

Zobacz pełną wersję : mosviewonly automatycznie?



Crafi
07-05-2008, 23:07
Witam, moje pytanie wygląda następująco. Czy dało by sie umieści

{viewonly=Registered, Special}tekst{/viewonly}w kodzie, a nie bezpośrednio w tekście, tak by bot sam już blokował dostęp dla grupy public do pełnej treści artykułów. Dodając dziennie po kilka naście pozycji staje sie to trochę uciążliwe, i ze trzeba to tłumaczyć każdemu nowemu redaktorowi. Jeżeli sie da to w jakim pliku trzeba to wstawić i w jakim miejscu.

Pozdrawiam.

Crafi
09-05-2008, 01:57
Nikt nie ma pomysłu jak to zrobić?

inkos
11-05-2008, 12:37
Może wskazówk: Zrób z tego button pod edytorem i naucz swoich uzytkownikow iz kiedy zaczynaja pisac cos co juz jest dla zarejestrowanych/platnych klikaja na jakas ikonke i potem piszą pomiedzy kodem. Chyba najprostsze. Inna mozliwosc to krotka instrukcja jak to zrobic. W koncu jesli sa to redaktorzy to powinni sie wykazac przynajmniej podstawowym zrozumieniem tematu. ;)

Crafi
12-05-2008, 23:47
Może i tak ale co z starymi artykułami? Mam ręcznie dodawać wszedzie ten kod? To pare set pozycji...

Jola
13-05-2008, 00:46
Witam,
hmmm co niektórzy zapomnieli, że treść artykułów zapisywana jest w bazie danych i można wiele zrobić za pomocą update (stare pozycje) a nawet triggerów ( po dodaniu nowego artykułu automatycznie będzie dodawać ten kod na początku i na końcu pełnej treści artykułu bez wiedzy redaktora). Jeśli to rozwiązanie pasuje - pomogę z update i triggerem.
Pozdrawiam

inkos
13-05-2008, 09:17
jolaass: Ano zapomnieli. :) Jeśli mozesz to opisz to tutaj. Niech inni tez maja pozytek. A moze temat bedzie nadawal sie do pomocy albo faq? :)

Jola
13-05-2008, 09:58
Najpierw update zapisanych pozycji.
Po odpaleniu polecenia np w phpMyAdmin wszystkie zapisane art. będą miały pełną treść artykułu pomiędzy kodem:

{viewonly=Registered, Special}pełna treść artykułu{/viewonly}Zakładam, że nagłówek tabeli to jos_.

update jos_content as a set a.fulltext=concat("{viewonly=Registered, Special}",a.fulltext,"{/viewonly}") where a.fulltext not like "%{viewonly=Registered, Special}%";Teraz trigger będzie przypisany do tabeli jos_content spowoduje, że przy każdym dodaniu artykułu automatycznie zostanie dopisany na początku i na końcu pełnego tekstu potrzebny kod jeśli nie został wstawiony podczas pisania przez uprawnioną do pisania osobę. (Dla wtajemniczonych - użyłam before update ponieważ w Joomli zapisanie treści art. dzieje się jako update a nie insert.) Konieczna jest zmiana domyślnego separatora ";" na np "|" bo utworzenie triggera nie powiedzie się (zostaną wykonane komendy tylko do pierwszego ";").


create trigger ukryty_art before update on jos_content
for each row
begin
if new.fulltext not like "%{viewonly=Registered, Special}%" then
set new.fulltext=concat("{viewonly=Registered, Special}",new.fulltext,"{/viewonly}");
end if;
end;To polecenie, tak jak każde inne polecenie sql należy odpalić np w phpMyAdmin. Od tej pory w sposób niewidoczny dla użytkownika baza danych sama dopisuje kod. Jeśli chcemy zakończyć działanie triggera ukryty_art trzeba wydać polecenie:

drop trigger ukryty_art;Pozdrawiam

crazyluki
13-05-2008, 10:21
świetne!:)

Jola
13-05-2008, 10:31
Zapomniałam tylko o jednym. Uprawnienia do tworzenia triggerów!
W poprzednich wersjach mySQL takie prawo miał tylko superadministrator!
Dobrze by było przetestować i dać pełną informację.
Ja też sprawdzę.

Dodawanie triggerów (wyzwalaczy) jest możliwe w mySQL od wersji 5.0.2.
Z tego co udało mi się ustalić to aby wykonać create trigger trzeba mieć uprawnienia root lub super do bazy danych.
W nowszych wersjach miało to zostać zmienione ale moja wiedza kończy się na tej informacji. Może jest ktoś bardziej oświecony? :)

Crafi
13-05-2008, 18:00
Jolaass jak bys mogl/a? mi pomoc :) sam nie jestem zbytnio obcykany w mysql :P

gg6335278

Crafi
14-05-2008, 15:06
Jolaass

Dzięki wielkie, pomogło. Mimo braku uprawnień super admina, firma hostingowa nie robiła żadnych problemów i wykonała mi zapytanie do bazy danych:).

Update artów zrobiłem sam, wszystko działa jak należy :)

Polecam to rozwiązanie :)

Przyklejcie to dla potomnych :D