господа, нужен совет (кто любит машины, а точнее наваливать на них, не останется равнодушным)

Главные вкладки

Аватар пользователя arhboy arhboy 11 декабря 2015 в 5:59

приветствую, уважаемые друпалисты. 1 абзац на предысторию, а затем сабж вопроса

а дело было вот как.. есть такой город, где пребываю последние пару лет, Минск называется. прошлой зимой (ура!) выпал снег и решил "поехать подрифтить.." но одному было лень и написал в интернетах, в разных пабликах, клич, вроде "ребята, кто тоже хочет, давайте вместе". и так душевно все прошло, что через неделю решили повторить. с тех пор стали каждую каждые входные тусить. ну и чтобы это не было бездумным хаосом, стали строить трассы и проходить их на время. таким образом, постепенно, появилось over 20 карт, на которых можно "играть". компания постепенно так же разрослась не только в количестве (over 300 номеров участников из разных городов), но и в качестве - на тусовке не принято материться, мусорить, в том числе сигаретными бычками, алкоголь исключен, даже для "пассажиров". хотя иногда музыка и шашлычок подключаются, только без быдлопесен и глушащих сабов, эстетично, но суть не в этом..

дабы не путаться в результатах, решил назначить каждому участнику свой номер (id), а для публикации результатов создать что-то вроде сайта, где можно было бы сравнивать "рекорды" в таблицах, видеть свой рейтинг за всю "карьеру и т.д. беда была только в том, что я не умею делать сайты. кое-как помучившись, узнав, что такое html и какие-то азы, за 2 месяца бессонных ночей, моего интеллекта хватило на то, чтобы распилить несколько bootstrapовских шаблонов, склеить их воедино, перемножить на стыренные откуда-то скрипты и эффекты, чтобы в результате получилось кое-какое полувялое подобие интерфейса компьютерной игры автомобильной тематики. (не знаю, можно ли тут ссылки оставлять - http://www.kastor.by , если нет, прошу администрацию простить и удалить)

какое-то время все шло неплохо, для базы игроков и расчета рейтингов, я использовал эксель, там же сохранены все результаты за все дни, по каждому водителю
не то, чтобы я заколебался все это пересчитывать в ручную, а затем менять кучу цифр в html-документах, каждые выходные, а то и по несколько раз (особенно весело, когда обнаруживается допущенная ошибка..), но все-таки друг убедил меня прекратить заниматься маразмом и большую часть процессов автоматизировать, начиная от регистрации участников, до расчета и выдачи рейтингов - чтобы это делалось через сайт. "разумно и логично" посчитал я, в связи с чем товарищ, поверхностно владеющий друпалом, однако с чистым сердцем обучающий и направляющий меня, иногда вечерами сидит рядом со мной и подсказывает, что делать и как.. точим потихоньку новую версию, процесс пошел

в данный момент, с порога, столкнулись с проблемой - хотелось бы, чтобы человеку, который регистрируется на сайте, можно было: 1) менять айдишник (а он по задумке соответствует номеру участника) вручную, в последствии; 2) при регистрации айдишник присваивался автоматически, начиная с номера допустим 500 (т.к. до этого уже номера заняты существующими участниками - их только нужно внести в базу, вместе с результатами, и разослать пароли, когда сайт будет готов), причем не все подряд, а чтобы "красивые" номера, типа 500, 555, 511 и т.д. пропускались (потому что даются за особые заслуги - например если участник помогает процессу организации, следит за безопасностью и тд, короче старается, а не просто пассивный "потребитель"). может быть есть какой-то скрипт или модуль или другой способ, чтобы такие айдишники блокировать для произвольной регистрации (хотябы даже вручную перечислив, я готов потратить на это время) - чтобы система понимала, что некоторые номера, или включающие вид xx, xxy x0x, например, пропускались? в разделе RTFM ничего подобного не нашел..( может не так сёрчил - подскажите, буду признателен за любые подсказки

p.s. делаем на drupal 7

просто, чтобы было понимание, как это происходит, почему это важно, вот видео http://vk.com/autoparties?z=video-81701603_171026374%2Fvideos-81701603%2... самая бессовестная фишка в том, что все это делается бесплатно, силами самих участников, ни с кого бабло не берется ни за что. просто, так уж получилось, что программистов среди нас не оказалось. но вот есть люди, которые инициативничают по-особенному, вроде меня. кто офлайн, кто онлайн. поэтому хочется читая про php, на данном этапе уже повеситься довести дело до ума. и если это получится, сделаю все, чтобы приехать в город, где пройдет послеследующая встреча друпалистов, и отблагодарить всех любителей машин подобным событием в том городе

Комментарии

Аватар пользователя sas@drupal.org sas@drupal.org 11 декабря 2015 в 8:53

arhboy wrote:

менять айдишник

Можно использовать https://www.drupal.org/project/unique_field для профиля пользователя
Также я бы на основе этого поля сделал шаблон для страницы пользователя через https://www.drupal.org/project/pathauto

Аватар пользователя arhboy arhboy 16 декабря 2015 в 4:54

sas@drupal.org, если я правильно понял, как работает pathauto, то он автоматически генерирует ссылки с номерами подряд, что ноды, что юзеров, типа site/user/3, -4,5,6,7,8,9,10,11,12,13.. Вопрос в том, чтобы оно автоматически (по предварительной настройке формулы или буквальному перечислению) присваивало номера подряд, но пропуская определенные, т.е. 3,4,6,7,8,9,12,13 например.
Что делает unique_field пока не понимаю.. Вроде как позволяет создавать уникальное поле для любого типа материалов.. но чем это поможет? Простите, пожалуйста, мою нубловатость, попытки разобраться самостоятельно пока ничего не дали, поэтому могу спрашивать вещи, которые покажутся многим само собой разумеющимся, но для меня это пока что как гидротрансформатор и земляника.

Аватар пользователя tlito tlito 11 декабря 2015 в 16:59

id пользователя должен остаться id пользователя - это нужно для правильной работы бд.
id участника вам нужно хранить в отдельном поле. вам нужно скопировать значения id пользователей в это новое поле, а для новых пользователей задавать по вашим правилам в этом новом поле id участника.
как выполнить ваше правило пропуска - сделайте ручную прописку id участника при его присутствии на мероприятии.
ну или используйте hook_user_insert()

Аватар пользователя arhboy arhboy 16 декабря 2015 в 5:05

tlito, я непротив, чтобы id пользователя в sql не соответствовали "номеру участника", если для базы данных это критично, особенно, если это не будет влиять на доступ к страницам пользователя по цифрам в url.. Но по-моему такое несоответствие задать невозможно, или я ошибаюсь?
Забегая немного вперед, объясню смысл, почему я так сильно парюсь с новой, "автоматизированной" версией сайта. Номера должны присваиваться именно автоматически, чтобы пользователи могли регистрироваться самостоятельно и приезжая на мероприятия просто называть свой номер (который они видят в своем профиле, после регистрации). Во-первых, некоторые ребята из других городов оценили тусовки и хотели бы проводить у себя в других городах подобное, затем скидывать результаты, для внесения в общую базу. То есть для внесения результатов в трек лист я смогу выбрать номер участника, машину из его "парка", ввести результат - и все. На основе этих данных рассчитаются рейтинги для всех участников. Не нужно будет опять открывать эксэль, смотреть какие номера свободные, залезать в настройки профиля каждого участника, не запутаться и т.д. В общем, просто поверьте, заморочка на тему автоматического присвоения номера не просто каприз. Беларусь, довольно маленькая страна, мы ездим в гости друг к другу разными авто-клубами в другие города, участников становится все больше. Поэтому, во-вторых, в случае одновременного хода нескольких тус в разных городах, проще когда участники заранее знают свои номера, чем искать себя в таблице с результатами. Ну и, в-третьих - смысл в том, чтобы "развязать себе руки". Если продолжать регистрировать всех ручками, проще сразу просто застрелиться.
Кроме того, хотелось бы дать в дальнейшем возможность пользователям сайта, которые даже не были на тусовке, чтобы они могли "забить стрелку", если хотят погоняться с кем-то вне вечеринки. Даже находясь в другом городе или стране, но найти единомышленника. или могли познакомиться. Для этого предполагается сделать поиск не только по машине, но и по биометрическим характеристикам.
Большое спасибо за hook_user_insert() - только объясните, пожалуйста, как им пользоваться, если он выполняет ту функцию, которая требуется. Там можно где-то прописать номера, которые необходимо пропускать про добавлении материала и этот скрипт просто нужно вставить в какую-то часть кода? Или это не совсем то?

Аватар пользователя arhboy arhboy 16 декабря 2015 в 4:58

ХулиGUN, id присваивается на участника, а не на машину, потому что один и тот же человек может приезжать в разные дни на разных машинах. И на разных трассах у одних и тех же людей рекорды на совершенно разных авто. А рейтинг за все заезды начисляется на их "профиль" - см. http://kastor.by/map.html Это как Need For Speed - выбираешь любую машину и приезжаешь на трек. ID это ВОДИТЕЛЬ\DRIVER\ALIAS или как там оно называется.. А рейтинг - его суммарная "карьера" (http://kastor.by/career.html)
Но проблема не в совпадениях номеров (drupal их слава богу не путает) а в том, чтобы "красивые" всем подряд не назначались.

Аватар пользователя arhboy arhboy 18 декабря 2015 в 18:26

+Ребята, большое спасибо, что отозвались. Надеюсь на дальнейшие пояснения, ибо пока застрял на этом моменте, без него двигаться дальше не представляется возможным..(