<p>Ten post będzie długi. Może najpierw rozdzielmy to na dwa aspekty: szablon zwracający tooltip i skrypt, który go wyświetli.
</p>
<h2><span class="mw-headline" id="Szablon"> Szablon </span></h2>
<p>Na angielskiej za przygotowanie tooltipa odpowiada szablon infoboksu. Jak spojrzysz kod źródłowy np.
en:Barrier (Inquisition) to zobaczysz, że wartość parametru
style
stanowi parametr o tej samej nazwie. Zostaje on przekazany dalej. Inną rzeczą na co warto zwrócić uwagę to to, że sam infoboks jest zawarty w tagach
<onlyinclude>
.
</p>
<onlyinclude>{{SkillSpellTalentTransformer
|style = {{{style|}}}
|name = [[Barrier (Inquisition)|Barrier]]
...
}}</onlyinclude>
<p>Tak jak ze zwykłymi szablonami, onlyinclude powoduje, że tylko ten infoboks zostanie zwrócony. Za to przekazanie parametru
style
powoduje, że szablon zamiast infoboksa zwróci link z ikoną oraz tooltipem widocznym po najechaniu. Dlatego żeby dodać taki link trzeba tam użyć poniższego (dwukropek pozwala na wstawienie artykułu z przestrzeni głównej jak szablonu)
</p>
{{:Barrier (Inquisition|style=iconmed}}
<p>Ma to swoje zalety i wady.
</p>
<dl><dt>Zalety</dt><dd>
</dd></dl>
- Nie trzeba się martwić o nazewnictwo ikon (patrz niżej)
- Nie trzeba powielać informacji w dwóch miejscach
<dl><dt>Wady</dt><dd>
</dd></dl>
- Jeden dobrze wymierzony wandalizm lub błąd/niewiedza przy tworzeniu/edytowaniu może spowodować duuuuży zamęt. Np. brak
<onlyinclude>
spowoduje, że zamiast ikonki pojawi się cały artykuł.
<p>Tej jednej wady można się częściowo pozbyć rezygnując z jednej z zalet (albo obu XD)
</p>
- Można stworzyć osobny szablon zawierający to co ma być w tooltipie. Będzie sobie siedział na stronie, która nie jest oczywista. Większość tooltipów na polskiej League of Legends Wiki tak obecnie funkcjonuje:
- Można postawić na odpowiednie nazewnictwo plików z ikonami. Dzięki temu można wydzielić szablon tworzący link do osobnego. Nie będzie też opcji <i>wyciągnięcia</i> danych z infoboksa jak typu umiejętności – potrzeba drobnego powielania danych.
<h2><span class="mw-headline" id="Skrypt"> Skrypt </span></h2>
<p>Drugą częścią tooltipów jest to co je pokaże kiedy trzeba. Skrypt
Kirkburna na angiekskiej jest dość prosty i ma swoje wady. Wymaga dodania zawartości tooltipa wraz z linkiem, który go pokaże. Efekt jest taki, że tooltip jest widoczny na skróce mobilnej, bo tam nie zostaje ukryty za pomoca CSS.
</p><p>Ale i na to jest rozwiązanie :) Na Dev Wiki można znaleźć skrypt
Tooltips. Jest w użyciu na
angielskiej,
niemieckiej i
polskiej LoL Wiki,
Age of Wonders 3 Wiki,
Risk of Rain Wiki i tam gdzie się nie pochwalili.
</p><p>Ma to do siebie, że kosztem drobnego opóźnienia (jednorazowego dla danej umiejętności) można zniwelować potrzebę dodawania zawartości tooltipa na stronie. A to prowadzi do braku treści tooltipa po każdym linku w skróce mobilnej i dlatego, że w ogóle nie ma tego kodu na stronie – nie trzeba go parsować (szybciej) i przesyłać (lżejsza strona = szybciej). Tooltip jest pobierany kiedy jest potrzebny – stąd opóźnienie przy najechaniu.
</p><p>
</p>
<h2><span class="mw-headline" id="The_Choice"> The Choice </span></h2>
<p>Tutaj nasuwa się pytanie: którego sposobu na zawartość użyć? Czy robić osobny szablon, czy zrobić tak jak na angielskiej, gdzie szablon infoboksa potrafi w razie potrzeby zrobić tooltip, ale wymaga
<onlyinclude>
. W skrypcie wbudowana jest opcja odpalenia funkcji zanim tooltip się pojawi. Oznacza to, że można sprawdzić czy przypadkiem zamiast tooltipa został zwrócony cały artykuł i w razie czego go nie wyświetlić.
</p><p>Jest jeszcze kwestia szablonu tworzącego link i zwracającego element z odpowiednimi parametrami do wywołania skryptu. Tutaj raczej postawiłbym na osobny szablon i odpowiednie nazwy plików z ikonami. Z tego co widzę to i tak nazwy są w formacie
nazwa umiejętności.png
więc nie powinno być problemu.
</p><p>Moja propozycja: infoboksy zwracające tooltipy + osobny szablon dodający linki.
</p><p>Co do samego skryptu to z okazji, że JS jeszcze nie jest otwarte dla administratorów najprościej będzie jak dodam sam. Wygląd będzie można dostosować przez css.
</p>