Как да поддържаме съвместимост, докато адаптираме js шаблон (плъгин) към js двигател
Нови разширения от каталога
Съвети и трикове
На живо
- Блог за развитие на LiveStreet132,73
- Сайтове на LiveStreet121.49
- Въпроси78,96
- Допълнителни модули и подобрения за LiveStreet73.21
- Техническа документация на LiveStreet68,62
- Съвети и трикове60,64
- Пазар на поръчки за разработка и подкрепа за пари56.28
- Предложения и пожелания46.04
- Шаблони на LiveStreet38,75
- Решение на проблема28,89
Често, когато адаптирате шаблони/плъгини, е трудно да поправите js в двигателя, което е изпълнено със загуба на съвместимост с други шаблони и плъгини.
За да се справя с този въпрос и за целите на самообразованието, реших да напиша тази тема - може би ще дойде по-удобно на някого.
Какви са опциите:
Редактирайте js файлове направо в двигателя
Пренапишете (заменете) желания метод
Например (чрез писане в js на шаблона):
Също лошо. Практически = вариант 1, но с малки предупреждения:
- съвместимостта на такъв шаблон с плъгини е голям въпрос
- ще остане съвместимост на двигателя с други шаблони
Използвайте js куки
-
Маркери за куки (Наречен за допълване методи на js обекти LiveStreet)
Маркерът е определена "маркирана" точка в js двигателя, с която можете добавка всеки метод. Всъщност всеки метод на js двигателя е „маркиран“, дори и да няма маркер.
Самият маркер (ако има такъв) изглежда по следния начин: По правило такива маркери са във функции непосредствено след присвояване на променливи, непосредствено преди изпълнение на каквато и да е логика. Можете да вмъкнете нещо свое (в js шаблона) на това място по следния начин: Параметър с името на маркера не е необходимо да посочвате, тогава кодът ще бъде вмъкнат в самото начало на метода. Така самите маркери може да не присъстват в метода, но той все пак може да бъде допълнен с помощта на "инжектиране".
Куки (Наречен промяна функции в методите на js обекти LiveStreet)
Често не е достатъчно да се допълни метода, а е необходимо промяна метод вътре в метода.
Куките са места вътрешни функции js обекти на двигателя.
Тези „места, където се стартира кодът“ изглеждат така: Можете да вмъкнете нещо свое в това място (като го напишете в js на шаблона):
Заслужава да се отбележи, че за разлика от маркерите, самите куки не са специфични за js обекти.
Тези. за да вмъкнете кода от куката, просто декларирайте името му и тя ще бъде изпълнена там, където се намира куката, независимо от js обекта.
Нека помисля малко за js куки.
Въз основа на горното, имаме възможност:
- методи за допълване js обекти LS
- променя функциите в методите js обекти LS.
За пълнота на цветовете няма достатъчно възможност замени функции в методи, подобно на блокиращите куки в шаблоните . .
Също така забелязах, че когато използваме горните методи, понякога получаваме дублиране на код. Например чрез куки добавяме нова логика към някаква функция, но старата всъщност не е необходима. Вероятно, когато използвате hookb, можете да изхвърлите дубликати от там, преди да обедините js.
Въпреки че, ако съществува такава възможност, нейното използване ще бъде приравнено на заместване на "по-мек" метод (клауза 2).
Използвайте опции
Случва се, че няма начин да се използват куки - те не са на правилните места или не са там, където имаме нужда)).
Какво да правя? В крайна сметка е лошо да редактирате в двигателя или да пренапишете целия метод.
Почти всеки js двигател има т.нар. настроики (настроики). Това са вид променливи, само за целия js обект наведнъж.
Моето мнение е, че когато не е възможно да се използват куки, можете да добавяте опции без "увреждане на здравето" на двигателя (съвместимост).
Между другото, според мен този метод е лишен от недостатъка на възможното дублиране на код при използване на куки.
Нека да разгледаме този метод с малък пример.
2. Веднага по-долу заместваме:
- сгънатият клас при this.options.classes.folding_folded (ред 353)
- класове за опции, промяна на линии 310-316 на:
3. Нека заменим класовете на иконите в js шаблона, като добавим над този ред:
4. Нека заменим иконата в шаблона с тази, от която се нуждаем:
5. Коригирайте CSS, като го замените с:
Това е всичко!