Как да поддържаме съвместимост, докато адаптираме 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, като го замените с:

Това е всичко!