Задать вопрос
  • React Graphql в чем ошибка?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    react-apollo@3.1.5 требует @types/react ^16.8.0, но Ваш проект использует @types/react@18.3.3.

    react-apollo project is deprecated
    Попробуйте @apollo/clien вместо react-apollo.
    Ответ написан
    Комментировать
  • Как лучше сделать поле в models для нескольких файлов?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Или есть какое-нибудь другое решение?

    Для Вашей задачи можно использовать сигнал post_delete, чтобы автоматически удалять связанные файлы из модели File, когда удаляется объект модели Question.
    Ответ написан
    Комментировать
  • Какую выбрать CMS для сайта на Next.js?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    заказчику требуется также CMS

    или подключить все на WordPress, но там все как-то сделано через одно место

    Вопрос стоимости и задач. WP далеко не идеальный инструмент, но дешевый и базовые фунции реализует легко.

    В ином случае, можно выбрать Strapi, cms под все, хоть админку для электрочайника делайте. Максимальная популярность в своем небольшом сегменте.
    Ответ написан
    1 комментарий
  • Как сделать на Python генерацию бейджика из ексель таблицы?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    1. Для gui pyqt или pyside.
    2. Для работы с excell openpyxl.
    3. Для работы с изображениями pillow.
    Ответ написан
    Комментировать
  • Почему не работает callback второй раз?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    - Зачем светить своим токеном?
    - Зачем 2 раза объявлять одну и туже функцию callback_message?
    - Внутри функции callback_message Вы использовали callback.message.chat.id для отправки сообщений, но callback.message является ссылкой на сообщение, которое инициировало callback, а не на сообщение, которое нужно отправить.
    - А как же обработка callback_data cadastral?
    - message.message_id минус 0?
    import telebot
    from telebot import types
    
    bot = telebot.TeleBot('token')
    file = open('./start1.jpg', 'rb')
    
    @bot.message_handler(commands=['start'])
    def start(message):
        markup = types.InlineKeyboardMarkup()
        markup.add(types.InlineKeyboardButton('Оценка', url='https://google.com'))
        markup.add(types.InlineKeyboardButton('Кадастровые работы', callback_data='cadastral'))
        markup.add(types.InlineKeyboardButton('Строительные экспертизы', callback_data='expertise'))
        bot.send_photo(message.chat.id, file, 
                       caption='Здравствуйте, это Бот-помощник группы компаний "Стандарт Оценка", я помогу Вам определиться с нужной услугой, оформить заявку и связаться с администратором. Выберете желаемую услугу', 
                       reply_markup=markup)
    
    @bot.callback_query_handler(func=lambda call: True)
    def callback_message(call):
        if call.data == 'cadastral':
            bot.delete_message(call.message.chat.id, call.message.message_id)
            bot.send_message(call.message.chat.id, 'Введите свое ФИО')
            bot.register_next_step_handler(call.message, message_input_step)
        elif call.data == 'expertise':
            bot.send_message(call.message.chat.id, 'Вы выбрали Строительные экспертизы')
        elif call.data == 'all':
            bot.send_message(call.message.chat.id, 'Все данные верны')
    
    def message_input_step(message):
        global name
        name = message.text
        bot.send_message(message.chat.id, 'Введите свой номер телефона')
        bot.register_next_step_handler(message, phone)
    
    def phone(message):
        global phone
        phone = message.text
        markup = types.InlineKeyboardMarkup()
        markup.add(types.InlineKeyboardButton('Все верно✅', callback_data='all'))
        markup.add(types.InlineKeyboardButton('Начать сначало❌', callback_data='cadastral'))
        bot.send_message(message.chat.id, f'Ваше ФИО: {name}\nВаш номер телефона: {phone}', reply_markup=markup)
    
    if __name__ == "__main__":
        bot.polling(none_stop=True)
    Ответ написан
    3 комментария
  • Почему next.js при билде выдает ошибку Cannot destructure property 'store' of 'useReduxContext2(...)' as it is null?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    А если так?
    // app/layout.js
    'client'
    
    import type { Metadata } from "next";
    import { Inter } from "next/font/google";
    import "@/base.scss";
    import { Provider } from 'react-redux';
    import { store } from '../redux/store';
    import Layout from "@/components/Layout";
    
    const inter = Inter({ subsets: ["latin"] });
    
    export const metadata: Metadata = {
      title: "Home | PlayCloud",
      description: "Unique web application for listening to a huge amount of music in a unique format",
    }
    
    export default function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) {
      return (
        <html lang="en">
          <body className={inter.className}>
            <Provider store={store}>
              <Layout>
                {children}
              </Layout>
            </Provider>
          </body>
        </html>
      )
    }

    Cannot destructure property 'store' of 'useReduxContext2(...)' as it is null?

    Вам не нужно использовать useReduxContext2, потому что у Вас уже есть Provider, который делает контекст доступным для всех вложенных компонентов. Используйте useSelector и useDispatch из react-redux для получения доступа к состоянию и отправки в Redux.
    Ответ написан
  • Как выводить только записи в Wordpress?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Как вариант, для постов можно использовать get_posts():
    <?php
    
    $args = array(
        'post_type' => 'post', // posts
        'posts_per_page' => -1, // counts per page
        'order' => 'ASC', // по умолчанию get_posts() возвращает посты в порядке от новых к старым, изменим на обратное
    );
    
    $posts = get_posts($args);
    
    if (!empty($posts)) :
    
        foreach ($posts as $post) : setup_postdata($post); ?>
            <div>
                <h3><?php the_title(); ?></h3>
                <h4>Краткое описание:</h4>
                <p><?php the_excerpt(); ?></p>
                <a href="<?php the_permalink(); ?>">Ссылка на запись</a>
                <p>Тип записи: <?php echo get_post_type($post); ?></p> <!-- check post type -->
            </div>
        <?php endforeach;
    
        wp_reset_postdata();
    endif; ?>

    КартинкО

    6683aca90858a877454980.png

    P.S. вставлять в button превью и заголовок не самая лучшая идея...
    Ответ написан
    Комментировать
  • Могут ли по сайту найти админа?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Насколько реально получить из сайта на Вордпресс личную информацию админов?

    Зависит от того, кто будет искать. Если хулиганы, то лишь через перебор доступов или дырку в плагине, а вот если органы, то здесь другой риторический вопрос...
    Ответ написан
    3 комментария
  • Как декодироавать строку без искажений?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    server_response = "..."  # https://gist.github.com/serrhiy/56b1f296cb7b4fbf42febaf8c08347a1
    
    def decode_unicode_escapes(string):
        return re.sub(r'\\u([0-9A-Fa-f]{4})', lambda m: chr(int(m.group(1), 16)), string)
    
    unicode_decoded = decode_unicode_escapes(server_response)
    
    try:
        res = unicode_decoded.encode('utf-8').decode('utf-8')
    except UnicodeEncodeError as e:
        print(f"Ошибка: {e}.")
        res = unicode_decoded.encode('utf-8', errors='replace').decode('utf-8', errors='replace')
    
    print(res)  # <a href='https://www.immowelt.de/immoweltag/datenschutz' target="_blank" class="hm_link" title="Datenschutzerklärung der AVIV Germany GmbH">
    Ответ написан
  • Как в wordpress убрать noindex на страницах поиска?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Как вариант, remove_action():
    function test() {
        if (is_search()) {
            remove_action('wp_head', 'noindex', 10);
        }
    }
    
    add_action('wp', 'test');


    UPD:
    Возможно, кто то другой добавляет тег. Есть ли файл search.php в теме? Возможно в нем имеется noindex.
    https://stackoverflow.com/questions/28043745/wordp...
    Ответ написан
    3 комментария
  • Возможно ли настроить локализации для оптимизации видимости сайта в разных странах?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    развернуть на субдоменах

    Подпапки. Для геозависимые запросов рекомендую комбинировать https://habr.com/ru/articles/809681/
    Ответ написан
    2 комментария
  • Консультация по авторскому праву. Как правильно использовать чужие фото на своем сайте?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Может быть, есть какие-то другие варианты для решения подобных проблем? Что можете посоветовать?

    Один из вариантов:
    - Получить согласие на размещение.
    - Удалить незаконно размещённые материалы.
    - Заплатить штраф, компенсацию и выполнить решение суда.
    Ответ написан
    Комментировать
  • Как создать рассылку через личные сообщений Telegram Business API для новых пользователей?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Возможно ли это сделать средствами питона?

    Возможно.
    Либо есть ли способ сделать все сложнее - скачать приложение Телеги, поймать его трафик и эмулировать, отправляя через его порт, хотя бы на Си или Си++?

    Возможно.
    Ответ написан
  • Повлияет ли долг в Яндекс Директ на оплату Яндекс Бизнес?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Может ли Яндекс зачесть деньги, предназначенные для другого сервиса в счет старого долга?

    Если регистрационные данные организаций разные (директ и бизнес), которые принимали платеж, то - это разные организации, соответственно и ответственность разная (если не указано иное). А вот если данные одинаковые, то решение зависит от настроения левой пятки местного менеджера.
    Ответ написан
  • Является ли количество проектов в портфолио фактором ранжирования сайта?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Вопрос: является ли количество работ в разделе "портфолио" сайта фактором ранжирования в Яндексе и Google?

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

    Ключ "портфолио", регион Москва и область, 1 замер:
    - Яндекс: на 90% информационный ключ.
    - Гугл: на 60% информационный ключ.

    P.S. "портфолио" как ключ - не очень эффективно, т.к. непонятно, что имеется ввиду (как сделать портфолио самостоятельно, купить портфолио, пример детского портфолио, пример портфолио рептилойдов), используйте более целевые ключи.
    Ответ написан
    Комментировать
  • VSCode python не дает подсказки кода, как исправить?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
  • Как происходит сборка JS с множеством страниц и компонентов?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    во всех видео и статьях рассказывается, про единый файл app.js неужели один файл нужно прикреплять вообще на все страницы сайта и этот монстр будет по id или вызову компонентов понимать

    Или происходит сборка под каждую сложную сущность?

    Зависит от того, как настроите, но я бы сделал 1 директорию под 1 страницу, в ней находится html и js именно для этой страницы, в нее импортируются общие js библиотеки, общий js для страницы нужен для того, чтобы прописать логику именно под эту страницу. Правильно настроенный сборщик самостоятельно сгенерирует и подключит js файлы, необходимые для каждой страницы. Аналогично и по css.
    project/
    
    - home/
    
    -- home.html <-- подключение home.js/scss и библиотек (если они не требуют кастомной настроки)
    -- home.js <-- импорт js библиотек и кастомная настройка именно под страницу home
    -- home.scss <-- импорт scss библиотек и кастомная настройка именно под страницу home
    
    - catalog/
    
    -- catalog.html <-- подключение catalog.js/scss и библиотек (если они не требуют кастомной настроки)
    -- catalog.js <-- импорт js библиотек и кастомная настройка именно под страницу catalog
    -- catalog.scss <-- импорт scss библиотек и кастомная настройка именно под страницу 
    
    - libs/
    
    -- popup.js
    -- form.js

    на выходе примерно такое:
    dist/
    - home.html <-- подключено main.js/css + home.js/css
    - catalog.html <-- подключено main.js/css + catalog.js/css
    
    - assests/
    
    -- main.js <-- общие
    -- main.css <-- общие
    -- home.js
    -- home.css
    -- catalog.js
    -- catalog.css
    Ответ написан
    Комментировать
  • Как подключить вордпресс по FTP к серверу на таймвеб?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Если речь про shared хостинг, то WP нормально встает на TimeWeb и не просит указывать FTP в настройках. Пишите в поддержку, проблема конкретно в Вашем WP (вероятно, проблема с правами на директории или файлы).

    Отдельно, можете самостоятельно попробовать такой вариант.
    Ответ написан
    Комментировать
  • Как сделать парсер для excel таблицы?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Подскажите, как написать такой парсер, чтобы разбить информацию по ячейкам.

    1. Запросить данные с сайта используя requests.
    2. Использовать beautifulsoup для парсинга html из п1.
    3. Использовать openpyxl для работы с excel.
    Ответ написан
    Комментировать
  • Как проверить из каких источников приходит ответ при запросе на сайте?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Вопрос: как по запросу (после отправки) посмотреть из каких источников этот ответ приходит?

    В хроме можно посмотреть, куда ушёл запрос.
    Ответ написан
    Комментировать