Как сделать кнопку в drupal
Drupal Русскоязычное сообщество
Задача такая: надо прикрепить к ноде (или к товару) такое поле, которое будет отображаться на странице в виде кнопки «Спросить о товаре». При нажатии на кнопку будет вылазить окошко, или открываться отдельная страница (это не принципиально) с формой, куда пользователь печатает свой вопрос, нажимает на «Отправить» и этот вопрос улетает куда-то в систему. Потом админ или владелец магазина может где-то в админке прочитать все эти вопросы, так же эти вопросы должны дублироваться на почту кому-нибудь. А самое главное, чтобы к каждому этому вопросу была прикреплена ссылка на товар, о котором идёт речь (ну или что-то чтобы можно было автоматически сгенерировать эту ссылку)
В общем где-то я находил, что подобные вещи делаются при помощи связки Webform модуля с какими-то аргументами откуда-то. Что-то такое. Но подробностей я не смог пока что найти.
Можете проконсультировать в этом плане или поделиться полезными ссылками?
Комментарии
Через комментарии не?
Через комментарии не?
Ссылку на товар можно организовать при помощи Entity reference
надо чтобы комментарий уходил почтой
а как сделать кнопку?
Еще надо сделать чтобы комменты не публиковались без проверки. В разрешениях и в настройках комментариев смотрите.
Какую кнопку? На «Оставить комментарий» бекграунд с текстом навесьте.
ну да. только ведь она «территориально» будет находится под нодой, а мне надо чтобы посреди других полей. вот, сорри, но тоже немаловажный вопрос оформления. буду весьма благодарен, если тоже подскажете как с этим быть
Ваша задача вывести в ноде ссылку на добавление комментария. Можете?
Либо передвинуть эту ссылку повыше средствами CSS.
Через вебформу делай. Проверенно норм работает.
так, я разобрался вроде с этим. делаю через вебформу
другой вопрос.. хотелось бы всё это окончательно приукрасить и чтобы webform этот открывался в диалоговом окне прямо на странице ноды.. типа какой-то финт с ajax там должен присутствовать наверное.. как с этим быть?
в общем я пока не понял как решать эту проблему. поэтому прошу у вас помощи. однако я уверен, что если форма будет вызываться и показываться в диалоговом окне на странице товара. я подозреваю, что это тоже стандартная фишка, которую можно сделать не только с вебформой, но и с другими модулями, но к сожалению все мои попытки найти ответ в гугле не увенчались успехом.
помогите, пожалуйста с этим. может мне стоит открыть отдельный топик?
%server[HTTP_REFERER] не надежен, я по другому немного делал, к ссылкам добавлял гет переменную, например pid=артикул, и а потом засовывал в форму через %get[pid], т.е. ссылки на «задать вопрос» были вида my.com/ask?pid=A435 в принципе туда через токены впихнуть можно почти все что угодно.
%server[HTTP_REFERER] не надежен
об этом я кстати уже успел подумать. спасибо за подсказку. сейчас так и сделаю. как раз можно будет несколько параметров передать: помимо ссылки на продукт, ещё и его SKU, например.. а что делать с другим вопросом, который у меня возник? в смысле по поводу вебформы в диалоговом окне
в смысле по поводу вебформы в диалоговом окне
Drupal Русскоязычное сообщество
Вашему вниманию предлагается статья, в которой описывается способ встраивания стандартного функционала форм Drupal в редактор BUEditor для удобного добавления ссылок на внутренние материалы сайта.
Инструменты
Предыстория
Кстати, бился с поиском до последнего, т.к. не сторонник, чтобы на сайте был такой hand-made. Но готовых решений нет и был вынужден изменить своим же принципам.
Hands on
Первым делом надо сделать свой модуль (назвал его callbacks), в который войдет основной функционал, а именно:
callbacks.info
name = callbacks module
core = «6.x»
version = «6.x-1.1»
callbacks.module
/**
* Defines a form.
*/
function callbacks_link_form () <
JS часть. Файлик js/callbacks.js
CSS часть. Файлик css/callbacks.css
.callbacks-nid <
float : left ;
>
.callbacks-title <
float : left ;
>
.callbacks-alias <
color : #333 ;
font-size : 0.9em ;
clear : both ;
margin-bottom : 5px ;
font-weight : bold ;
>
.callbacks-type <
float : right ;
font-size : 0.8em ;
>
.callbacks-button <
float : right ;
>
Тут самая скука, расставить цвета и отступы.
Вторым делом добавить php-кнопку в BUEditor.
Выглядит форма таким образом:
А результат ее использования не менее красив:
Комментарии
hook_init() + генерация формы, очень интересно, очень.
Синкора негодуэ.
Не лучше было бы делать drupal_get_form() в кнопке или форму аяксом гнать?
drupal_get_form() в кнопке серьезно конфликтует с другими модулями (date) и убивает весь сайт. Лучше использовать любой вариант с кэшированной переменной, содержащей форму, а hook_init() было решением, которое заработало как раз после первого варианта с кнопкой. Суть не в этом.
Спасибо! По-моему, очень интересно.
Все сделал как написано, но при нажатии на кнопку вставить ссылку страница перезагружается и ссылка не вставляется, помогите, буду благодарен.
Drupal 6.22, Bueditor-6.x-2.4
Он перегружает страницу, потому что стандартное действие формы не переназначено из js файла. Проверь правильно ли подключился js сценарий, где submit action заменяется на вставку в текстовое поле.
Все сделал как написано, но при нажатии на кнопку вставить ссылку страница перезагружается и ссылка не вставляется, помогите, буду благодарен.
Drupal 6.22, Bueditor-6.x-2.4
Drupal Русскоязычное сообщество
Я так понимаю что на картинках выше поверх картинки приделаны кнопки. Как это делается? С помощью какого модуля?
Комментарии
Фон вёрсткой, а потом что то вроде этого
p > a href = «https://www.drupal.org/download» > img alt = «» src = «/sites/default/files/inline/images/download.gif» style = «height: 95px; width: 300px;» / > / a > / p >
А если я в баннер положу картинку, а не версткой? И на нее приделать? Может какие модули есть? Допустим на друпал орг и другие есть подобные схемы, вряд ли там все верстка. На главной только эти картинки, поэтому скорее всего тоже какие-то регионы, которые отключаются на других страницах.
Представьте себе, что не все программисты
Алгоритм хотя бы примерный можно?
Ну просто делаете ссылке border, display:block, фон и отступы по вкусу.
Я не сильно большой спец в друпале. Как сделать то, что вы описали? Можно алгоритм?
Смотрите код страницы.
Такую «кнопку» можно сделать абсолютно не в Друпале, а даже в простом html.
Учебник html css есть, например, тут. (htmlbook)
Т.е. модуля для этого нет, все это делается руками? Так? Т.е. на друпал.орг каждая такая кнопка сделана руками, так?
Но html и css знать всё равно надо.
Модуль для этого не нужен.
Кнопки относятся к темизации и дизайну.
Т.е. на друпал.орг каждая такая кнопка сделана руками, так?
СКедитор у меня стоит. Можете подробно расписать что да как?
Павел!
Вам уже тут больше никто отвечать не будет.
Вам уже подробно разжевали.
Вы задаёте вопросы не по Друпалу, а по элементарной вёрстке.
Попробуйте вначале любую кнопку поставить на страницу «Хэлло, мир!»
После этого Вы сами поймёте, как эту кнопку поставить на страницу Друпала.
Круто. А как потом на картинку наложить? Если я ее в баннер запихну тему Корпорейт?
Да в общем у меня CKeditor обрезанный стоял. Я недавно перешел на 7-ку и вообще им не пользовался. Поэтому я вообще ничего сам не понимал кто что мне говорит.
Поставил полный с возможность создания кнопок, с возможностью вставки кода и так далее. Буду пробовать. Спасибо.
Drupal Русскоязычное сообщество
Модуль реализует подключение социальных кнопок с использованием сервиса http://share42.com
Комментарии
хм, спасибо. В свое время не дотумкал как поставить на шестерку
оно того, может проще код яндекса «поделиться» взять?
ну тут панелька просто вверх-вниз скользит.
оно того, может проще код яндекса «поделиться» взять?
на d.org планируете?
а, понял, это панелька
оно того, может проще код яндекса «поделиться» взять?
Ну и вообще. поведенческие факторы ведь интересны яндексу
Скажите, подключаю к контенту, панелька есть, подключаю к шапке, нет. как сделать чтобы была?
все разобрался, необходимо в шаблон темы добавить регион «Header»
Помогите, пожалуйста, разобраться в настройках модуля.
Для чего нужны exclude и include. Что они регулируют в разделе uri, для чего нужны Logical operator и окно uri (что дают вписанные туда ссылки).
Для чего нужны exclude и include
Что они регулируют в разделе uri
для чего нужны Logical operator
что дают вписанные туда ссылки
подскажите, как можно прикрепить блок с кнопками не к материалу, а к блокам, или поставить с другой стороны материала?
Блок с кнопками прикрепляется к странице и настраивается на странице настроек.
Как же поставить его с другой стороны страницы? Например справа. В настройках этого нет.
Вы ответили, что это можно сделать с помощью theme_preprocess_page. Можно поподробней? Думаю, что не одному мне это будет интересно.
Вроде все сделал, установил. не работает.
необходимо в шаблон добавиь переменную header
Точно такая же проблема. Интересно почему никто не ответил Копаться в скрипте просто нет времени.
Собственно, без модуля все неплохо работает. Но я решил его добавить, в итоге не вижу его среди блоков. В общем-то, я думал, что модуль для этого и сделан, чтобы было проще менять положение. Собираюсь вставить горизонтально расположенные кнопки в один из столбцов футера. Подскажите, может, я чего-то очевидного не заметил
Эти кнопки не являются блочным типом, если нужны блочные то используйте addthis
Drupal Русскоязычное сообщество
Здравствуйте, подскажите пожалуйста. Вот у меня есть своя форма. И есть две кнопки. По нажатию на первую кнопку, отправляются начальные данные в базу данных, а по нажатию на вторую, должны взяться из этой базы данных только что добавленный значения, рассчитаться, и обратно вставиться в базу данных.
Собственно первая кнопка работает хорошо, все введенные данные уходят в БД. Но когда происходит нажатие на вторую кнопку, форма пытается отправиться, так как кнопка submit. Как сделать так, что бы эта кнопка не отправляла форму, а просто выполняла функцию? Заранее благодарю.
Лучший ответ
2. Названия функциям следует давать более безопасные и понятные, хорошей практикой считается начинать с названия модуля:
3. Если нужно вывести более чем 1 форму на странице, можно выводить ее как часть рендер-массива. Коллбек страницы предназначен для возврата рендер-массива, не нужно в нем рендерить элементы:
function webformizi_main_page () <
$output = array();
$output [ ‘main_form’ ] = drupal_get_form ( ‘webformizi_main_form’ );
$output [ ‘secondary_form’ ] = drupal_get_form ( ‘webformizi_secondary_form’ );
Комментарии
Так делайте батон, а не сабмит.
Или может вам аякс нужен?
В каком плане он не должен отправлять форму??
Вам нужно просто не в FORMNAME_submit реализовывать логику сохранения в БД, а в коллбеке нужного сабмита.
Ну когда происходит нажатие на вторую кнопку, форм пытаются отправиться, а получать данные формы мне не нужно во второй кнопке. Во второй кнопке мне нужно получить данные из БД, сделать расчёт исходя из полученных данных, и записать в базу данных что посчиталось. И функции разные же, на одной кнопке функция просто записывает в БД, а вторая берёт из БД
Так а какое тогда отношение имеет кнопка к форме??
Ну кнопка к форме отношения не имеет. Просто вот какой тип тогда кнопки создать, что к кнопке добавить, что бы по нажатию на неё выполнить конкретную функцию
Понятно. А подскажите пожалуйста, как отдельно сделать тогда кнопку? Просто ведь я создаю страницу
А потом возвращаю форму
2. Названия функциям следует давать более безопасные и понятные, хорошей практикой считается начинать с названия модуля:
3. Если нужно вывести более чем 1 форму на странице, можно выводить ее как часть рендер-массива. Коллбек страницы предназначен для возврата рендер-массива, не нужно в нем рендерить элементы:
function webformizi_main_page () <
$output = array();
$output [ ‘main_form’ ] = drupal_get_form ( ‘webformizi_main_form’ );
$output [ ‘secondary_form’ ] = drupal_get_form ( ‘webformizi_secondary_form’ );
Разобрался, спасибо большое. Собственно сделал вот так:
Создал кнопку вот так
А затем добавил в рендер-массив
Большое спасибо за помощь
Сделайте независимую кнопку от формы и повесьте на нее коллбек. через js скорее всего. Но, имхо, чего-то «мудрите», т.к. все равно вам нужны значения из формы и вывод. это судя по названиям кнопок.
Ну во второй кнопке значения из формы не нужны, тут просто по нажатию кнопки «Высчитать поверку», берём из БД только что добавленные значения и считаем, а потом обратно записываем результат в БД