Скорее всего нужно установить права "666" для файла robots.txt. Делается через фтп или панель управления (что у вас там на хостинге, я не в курсе)
Про вайбер вообще ничего не знаю, по телеграму - гуглите "telegram bot google script". Я посмотрел пару мануалов как сделать простеньких ботов, вник как все работает и адаптировал для контактной формы
Вот мой код, который сейчас работает (писал давно, не исключаю что-то можно сделать лучше, но цели такой сейчас нет)
GAS:
function sendMessage(chatId, text) { var url = botUrl + "/sendMessage?chat_id=" + chatId + "&text=" + text + "&parse_mode=Markdown"; var response = UrlFetchApp.fetch(url);}function doGet(e) { var name = e.parameter.name || '- Не указано -'; var email = e.parameter.email || '- Не указан -'; var phone = e.parameter.phone || '- Не указан -'; var messageToSend = '*Имя:* ' + name + '%0A*Телефон:* [' + phone + '](tel:' + phone + ')%0A*Email:* ' + email; sendMessage(CHATID, messageToSend); // CHATID - прихардкоженый ID чата куда бот шлет сообщения var MyResponse = 'OK'; return ContentService.createTextOutput(MyResponse).setMimeType(ContentService.MimeType.JAVASCRIPT);}
В JS на сайте:
$contactForm.submit(function (e) { e.preventDefault(); var $submit = $('input:submit', $contactForm); var defaultSubmitText = $submit.val(); var data = $contactForm.serialize(); $.ajax({ url: '<<_ТУТ_ССЫЛКА_НА_ГУГЛ_СКРИПТ>>', method: 'GET', data: data, beforeSend: function beforeSend() { $submit.attr('disabled', true).val('Подождите'); }, success: function success() { $submit.val('Сообщение отправлено!'); $('.contact-form-sent').addClass('ok'); }, error: function error(_error) { console.log('error: ', _error); $submit.val('Что-то пошло не так...'); setTimeout(function () { $submit.attr('disabled', false).val(defaultSubmitText); }, 5000); } });});
Давайте на примере кода РСЯ покажу решение (рабочее, сам так делаю). Есть код который дает нам РСЯ:
<!-- Yandex.RTB R-A-777777-1 --><div id="yandex_rtb_R-A-777777-1"></div><script type="text/javascript"> (function(w, d, n, s, t) { w[n] = w[n] || []; w[n].push(function() { Ya.Context.AdvManager.render({ blockId: "R-A-777777-1", renderTo: "yandex_rtb_R-A-777777-1", async: true }); }); t = d.getElementsByTagName("script")[0]; s = d.createElement("script"); s.type = "text/javascript"; s.src = "//an.yandex.ru/system/context.js"; s.async = true; t.parentNode.insertBefore(s, t); })(this, this.document, "yandexContextAsyncCallbacks");</script>
Мы в html вставляем только:
<div id="yandex_rtb_R-A-777777-1"></div>
А вторую часть (но уже без тега <script>) вставляем в js файл:
(function(w, d, n, s, t) { w[n] = w[n] || []; w[n].push(function() { Ya.Context.AdvManager.render({ blockId: "R-A-777777-1", renderTo: "yandex_rtb_R-A-777777-1", async: true }); }); t = d.getElementsByTagName("script")[0]; s = d.createElement("script"); s.type = "text/javascript"; s.src = "//an.yandex.ru/system/context.js"; s.async = true; t.parentNode.insertBefore(s, t); })(this, this.document, "yandexContextAsyncCallbacks");
Это общий принцип как выводить код. Теперь для вашего конкретно случая (у вас есть 2 кода разных). Т.е. в одно место в html вставляем 2 дива:
<div id="yandex_rtb_R-A-777777-1"></div><div id="yandex_rtb_R-A-777777-2"></div>
Ну а в js уже в зависимости от условий выполняем один из двух кодов. Например:
var rnd = Math.round(Math.random());if (rnd) { // выполнить первый код} else { // выполнить второй код}
В заголовке вам нужен телеграм бот для сайта, а по факту вы интересуетесь настройкой сертификата. Или я не так понимаю? ))
Если телеграм бот все-таки нужен, я делал как раз то что вы описали с помощью Google Apps Script - бесплатно и работает даже для статических сайтов.
Если есть небольшие знания в js - погуглите как это сделать, там ничего сложного. Минусов у такого решения я не нашел.
Что за чушь???
beastmaster28, конечно проиндексирует. Вот я когда-то очень давно верстал:
https://korew.github.io/YellowMoon/
В гугле просто поищите site:korew.github.io test и убедитесь что индексирует и в поиске выдает.
LyalinDV,
Две функции:
date.getDate();date.setDate();
Первая возвращает день месяца, вторая устанавливает новый день месяца. При переходе на следующий месяц все само автоматически считается, можно не переживать.
Готовый код:
<script>var d = new Date();var day = d.getDate();d.setDate(day + 2);d.toLocaleString();</script>
Напишите в каком формате вам нужна итоговая дата - поправлю код.
PS Вместо <script language="javascript" type="text/javascript"> просто <script> используйте
Ну что значит не прав? ТС попросил выводить баннеры отдельно для десктопа и мобил - я предлагаю написать готовый код и гарантирую, что это будет работать именно так, как нужно ТС. Как я могу быть не прав?
Я ничего не утверждал, я просто предположил и готов доказать/показать, что мой вариант будет работать и с картинками и с кодом РСЯ/адсенс и вообще с чем угодно. Хоть два баннера текстом сделайте.
Если, например, указать фон в css, то загрузятся только нужные медиа, тут можно не переживать. Если в html коде будут две картинки и одну из них скрывать через медиа-запросы в цсс, то тогда все-равно будут грузится две картинки.
бе-бе-бе
По делу:
Если это какая-то монетизация, то 99,9% что код баннера представляет из себя JS код. Если ТС продал рекламу напрямую, например, и ему нужно отдельно отслеживать переходы с мобил и десктопа через utm-метки (самое банальное, что можно придумать и точно стоит сделать), либо вообще в абсолютно разные места сливать отдельно трафик с мобил и десктопа - то тут srcset вообще не подойдет.
Так что извините, но я прав пока что, а некоторые вышеотписавшиеся - нет :)
PS Ну и перечитайте внимательно все что я писал, даже если ТС выберет вариант с srcset или тупо картинки или даже баннеры будет менять (скрывать/показывать) через css media - я все равно был прав.
Я в этом "неправильном направлении" напишу код, который будет идеально работать в любых условиях. А с вашим решением я могу показать ситуацию когда на компе покажется баннер предназначенный для мобильного.
Я знаю о чем говорю и не надо рассказывать что я морочу кому-то голову.
Я именно так и сделал - исходил из того, что написано в стартпосте. А вы наоборот исходите из того, что там не написано - придумали себе что-то и выдаете это за истину.
Это уже прям вызов :D
ТС, давайте сюда ваши баннеры - специально заморочусь и напишу вам готовое решение
Sitealert, как раз это именно то. Просто это не готовый код, а лишь правильное направление ))
Вдруг у ТС "баннеры" это коды блоков адсенса или РСЯ? Ваш вариант ничем не поможет, а через js все решается в один миг ))
Grimm Patron, если хотите готовый код - покажите сначала готовый код ваших текущих баннеров.
Средствами js можно легко и максимально надежно сделать.
https://stackoverflow.com/questions/11381673/detecting-a-mobile-browser
С учетом того, что js можно написать прям в html, рискну предположить что этот вариант должен вам подойти.