Автор Тема: Как добавить новое поле в форму регистрации  (Прочитано 3200 раз)

26 Января 2012, 21:57:03
  • Новичок
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
доброго времени суток у меня такой вопрос.
при регистрации пользователя в магазине prestashop хотелось бы добавить некоторые поля к форме "Your personal information" в коде она называется "account-creation_form" на сколько я понимаю надо редактировать authentication.tpl? но при редактировании кода, к сожалению ничего не меняется... форма отображается так же. новых полей нет. скажите в какую сторону копать, может это вообще далеко не tpl.
27 Января 2012, 12:15:22
Ответ #1
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102473
  • Репутация: +34218/-0
    • Просмотр профиля
Вот минимум изменений, что нужно сделать:
1. Добавить поле в бд
2. Добавить обработчик данных в класс
3. Добавить изменения в back-office
4. Добавить поле в файл шаблона
Это общие правила, они действуют и в вашем случае.
29 Февраля 2012, 17:22:43
Ответ #2
  • Новичок
  • *
  • Сообщений: 3
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день,

Столкнулся с проблемой отображения поля мыла в create-account_form. Я пытался данное поле убрать в authentication.tpl прописав
вместо: <input type="text" id="email_create" name="email_create" value="{if isset($smarty.post.email_create)}{$smarty.post.email_create|escape:'htmlall':'UTF-8'|stripslashes}{/if}" class="account_input" />

<input type="hidden" id="email_create" name="email_create" value="a@a.ru" class="account_input" />

Да и фактическое редактирование authentication.tpl плодов не приносило. Полностью чистил файл - данные отображались в нужном порядке и все работало О_О

Мне нужно вместо него пихнуть телефонное поле, а я банально текст там поправить не могу через authentication.tpl.

Где я косячу?

29 Февраля 2012, 17:55:17
Ответ #3
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102473
  • Репутация: +34218/-0
    • Просмотр профиля
Уже обсуждали не раз,
Цитировать
Вот минимум изменений, что нужно сделать:
1. Добавить поле в бд
2. Добавить обработчик данных в класс
3. Добавить изменения в back-office
4. Добавить поле в файл шаблона
Это общие правила, они действуют и в вашем случае.
Добавили поле в шаблон authentication.tpl , добавляйте это поле в класс Customer.php.
Добавляйте название поля в табл. customer.
Для управления нужно тоже добавить поле в админку AdminCustomers.php
Просмотр значения поля в шаблоне identity.tpl
01 Марта 2012, 11:10:30
Ответ #4
  • Новичок
  • *
  • Сообщений: 3
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Я прочитал, спасибо.
Я не понимаю концептуальной модели:
1. Почему когда я удаляю из шаблона ВСЁ. Шаблон 0 байт - он пустой. А отображается все как надо. Но если комментить фукнцию display(_PS_THEME_DIR_.'authentication.tpl'); то данный элемент перестает отображаться.
2. Когда я меняю тег <h3> на <h2> в <h3>Create account</h3>, то изменений вообще не происходит

Сорри, возможно вопросы абсолютно глупые. Но я с пхп не общался уже лет 7, да и плюс в гугле вразумительного не нашел.
01 Марта 2012, 11:31:17
Ответ #5
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22210
  • Репутация: +17111/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Цитировать
1. Почему когда я удаляю из шаблона ВСЁ. Шаблон 0 байт - он пустой. А отображается все как надо. Но если комментить фукнцию display(_PS_THEME_DIR_.'authentication.tpl'); то данный элемент перестает отображаться.
2. Когда я меняю тег <h3> на <h2> в <h3>Create account</h3>, то изменений вообще не происходит
1. У вас включено кеширование. Если в шаблоне все удалить, то ничего не должно выводить. Очистите кеш.
display(_PS_THEME_DIR_.'authentication.tpl'); - это указывает какой шаблон использовать.
2. Измените стили.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
01 Марта 2012, 12:11:17
Ответ #6
  • Новичок
  • *
  • Сообщений: 3
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
1. Попробую, но если правильно помню - кэш в браузере чистил - и ни чего не изменялось...
2. ок спасибо понял.

Еще позволю себе вопрос, который просто съедает меня:)
Рыскал по коду и не нашел, где проходит прямое соответствие между файлом локализации и кодом выводящим данную надпись на экран?
Если конкретнее:
та же надпись "Create account", если менять ее в шаблоне соответственно ни чего не изменится (возможно конечно из-за кэша, но сомневаюсь). Меняем в файле локализации - изменения сразу на экране.
Из того где я подафигел:
прямого вызова массива _LANG фактически ни где нет, индексирование массива с помощью хеш. Видимо идет свое в Language.php (ну или как-то так называется), там уже не копал.
Но вот где в коде происходит конкретный вывод в данном случае соответствующего элемента массива надписи я не уразумел)
01 Марта 2012, 12:27:17
Ответ #7
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102473
  • Репутация: +34218/-0
    • Просмотр профиля
1. Удалите все файлы, кроме index.php из папок :
/tools/smarty/cache/
/tools/smarty/compile/
/tools/smarty_v2/cache/
/tools/smarty_v2/compile/

2. Для перевода нужно использовать такой формат :
{l s='Create account'}а не просто текст
<h3>Create account</h3>
Если у вас возникают вопросы не связанные с уже открытой темой, создайте новую тему.