Forums / National / Russian / Тех. поддержка / Запросы документации

Принимаем вопросы от населения

Dayver
#46735 2023-05-30 11:27
#46734 Kopusha:

1. в users/inc/ создаем users.ajax.php

Оговорка номер один - советовать хакать дефолный модуль - не очень потому что при очередном обновлении все хаки уплывут в мир забвения. И первоначальный подход к решению задачи в виде плагина самый правильный а фаршировать хаками свой или сайт клиента это путь в невозможность обновлять движок на этом сайте. Почему народ это делает?! Возможно проект такой - на этапе создания понятно что быстреее и проще сделать как есть быстро хакнув нужные файлы понимая что на этом сайте обновления движка никогда не будут производится. А возможно народ подумал что проект мёртв и обновлений ожидать не стоит - но чудеса случаются)

Возможно кто-то посмотрев на вышеупомянутый код и файлы скажет что хака как такового нет поскольку рекомендуемые действия не затрагивают существующие в дефолтном модуле файлы, но тут всплывает оговорка номер два - урл из приведённого примера index.php?e=users&m=ajax.... работать не будет потому что в модуле есть проверка, а потому что б приведённое решение заработало нужно в указанную проверку добавить элемент 'ajax' а это уже будет именно хаком который отвалится при очередном обновлении.

Добавлено 3 минуты спустя:

#46731 Kabak:

Помогите, пожалуйста, правильно оформить и загружать части плагина.

1) в файле nevalidate.php поменяли хук с standalone на ajax ?

2) в админке после этого нажали кнопку обновить?

3) после этих действий при посещении адреса http://ваш.сайт/index.php?r=nevalidate&name=admin что в ответ видите?

Добавлено 3 минуты спустя:

#46730 Dayver:

И замечание номер четыре. Ваш плагин даже после проделанных манипуляций не будет работать у других потому что код инициализации 

$("section.div_block_register input[name=rusername]").after(...
$("section.div_block_register input[name=ruseremail]").after(...
$("section.div_block_register input[name=rusername]").blur(....
$("section.div_block_register input[name=ruseremail]").blur(...

использует селекторы section.div_block_register которые присутствуют только в вашей индивидуальной теме сайта и они не будут работать ни для дефолтой коробочной темы ни для других сторонних тем стрктура которых явно будет отличатся от вашей. Потому в любом случае потребуется ручная адаптация вашего плагина для применения тем кто захочет его использовать, а потому это следует осветить(объяснить) в описании к плагину

Для универсализации кода (что б он работал на любой разметке любой темы) почему бы не сократить условия селектора до вида:

$("input[name=rusername]").after(...
$("input[name=ruseremail]").after(...
$("input[name=rusername]").blur(....
$("input[name=ruseremail]").blur(...

Скорее всего такой вариант тоже продолжит работать у вас но и как бонус будет работать и у остальных

Pavlo Tkachenko aka Dayver