Наиболее эффективный способ преобразования вызова javascript в php (связанный с проблемой бесконечной прокрутки Wordpress/социальных кнопок)


Вступление: Я новичок как в php, так и в Javascript и пытался решить эту проблему для своего сайта (другая версия этой проблемы здесь), но у меня возникли проблемы с введением в действие ответа LocalPCGuy. (короче говоря: проблема в том, что при активированной бесконечной прокрутке социальные кнопки работают с первыми загруженными сообщениями, но не работают для сообщений, загруженных впоследствии).

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

  • В настоящее время код в php-файле, который генерирует социальные кнопки, выглядит примерно так это:

    <div class="sharing-button">
        <?php dd_google1_generate('Compact (20px)') ?>                                                          
    </div>
    

Как я уже сказал, это заставляет кнопку появляться для первых загруженных сообщений, но как только бесконечная прокрутка попытается загрузить дополнительные сообщения, социальная кнопка не появится на этих сообщениях.

На данный момент я попробовал следующее:

  • Добавьте код ниже чуть выше или ниже (взят из ответа здесь ) или внутри моего <div>, содержащего кнопки в файле php.

    if (typeof gapi !== "undefined") { gapi.plusone.go(); }
    
  • Это не сработало, я решил, что это потому, что файлу .php потребуется какой-то сигнал, чтобы знать, что ему нужно выполнить операцию javascript. Поэтому я огляделся и нашел пару предложений о том, как это сделать, здесь и здесь. Ни в том, ни в другом случае мне не удалось заставить кнопки отображаться соответствующим образом. Ниже было то, что казалось наименее идиотской из этих попыток:

    <?php
        echo '<script type="text/javascript"> 
            if (typeof gapi !== "undefined") { gapi.plusone.go(); }';
        echo '</script>';
    ?>
    
  • Я также подумал, что, возможно, мне нужно передать аргумент в gapi.plusone.go(), и я попытался передать свою кнопку обмена <div> выше, но это тоже не сработало (php-код внутри скрипта javascript внутри блока php... не возлагал больших надежд).

На данный момент я не уверен, что делать - я чувствую, что решение, вероятно, довольно простое, но я полностью застрял, потратив часы на чтение тем об интеграции javascript в php и тому подобном.

У кого-нибудь есть идея, как я могу применить это решение Javascript к моей зависящей от php теме Wordpress?

Большое, большое спасибо!

Author: Community, 2013-03-14

2 answers

Краткий ответ: это невозможно.

Длинный ответ: ПЕРВЫМ идет PHP, ВТОРЫМ - javascript. "Программа" PHP запускается на Сервере, который является сервером вашего веб-провайдера. Этот сервер обрабатывает все PHP-файлы. После завершения этой работы файлы веб-сайта будут отправлены на ваш компьютер. Он содержит, среди прочего, javascript.

И этот javascript запускается только на ВАШЕМ компьютере, на котором вы смотрите. Как только ваш браузер загрузит страницу и начнет работать javscript, уже слишком поздно запрашивать у Сервера дополнительную информацию.

Существуют методы, позволяющие это (ключевое слово AJAX), но это другой вопрос:-)

 1
Author: Sebastian Schmid, 2013-03-25 23:30:16

Вам нужно запустить javascript кнопок, чтобы они работали, так как бесконечная прокрутка загружает следующий набор сообщений с помощью ajax. Один пример, который я нашел, но он делает это только для facebook, если плагин использует FBML:

$(document).ajaxComplete(function(){
    try{
        FB.XFBML.parse(); 
    }catch(ex){}
});

Я использую пользовательскую реализацию, например, Box из facebook и infinite scroll, и это работает просто отлично.

 1
Author: Ovidiu Iacomi, 2013-07-25 09:13:08