2013-09-02 6 views
5

У меня проблема с моей функцией AngularJS в приложении Wordpress. То, что я хочу создать, - это СПА, так что Веб-сайт (его не блог, я просто использую WP как CMS) работает свободно и без перезагрузки на мобильных телефонах. Для достижения этой цели я решил включить AngularJS в Wordpress (если это не лучшее решение, скажите мне :)). После того, как я сделал несколько учебников, которые объяснили мне тему «взглядов» в AJS, я попытался сделать это сам в отдельном html-документе, и он отлично поработал.AngularJS Views in Wordpress

Итак, моя проблема заключается в том, что мой SPA разделен на 3-х колоний. Левая - это статичная (просто базовая информация), вторая имеет всегда новейший контент через WP (это тоже отлично работает), а правый colum должен изменить свой контент, нажав на одну из ссылок «новейшего контента», , Вы понимаете мою идею до сих пор? :) Итак, как вы можете догадаться - он действительно не хочет работать.

<?php get_header();?> <!-- Header + AngularJS included --> 



<div class="content"> <!-- open class="content"--> 
<a href="/?page_id=6"> 

</a> 
<div class="bg-texture"> <!--open class "bg-texture/ closed in "footer"--> 
    <?php while(have_posts()):the_post();?> 
    <div class="col"> 


    <?php if (in_category('infotext')):?> 
    <div class="infotext"> 




    <?php elseif (in_category('apps')):?>     
     <div class="round-borders-panel"> 

    <?php elseif (in_category('righttext')):?> <!-- hier kommen die single-pages rein--> 
      <?php if(function_exists('get_twoclick_buttons')) {get_twoclick_buttons(get_the_ID());}?> 
     <?php endif;?>  


      <h1> 
       <a href="<?php the_permalink()?>"> <?php the_title();?> </a> 
      </h1> 

     <?php the_content(__(''));?> 
     </div> 
    </div> 

       <?php endwhile;?> 

<?php get_the_ID('');?> 


     <script src="angular.min.js"></script> 

     <div data-ng-view></div> 
    <script> 
    var cloud = angular.module("cloud", []); 

    demoApp.config(function ($routeProvider) { 
    $routeProvider 
      .when('/?=p<?php get_the_ID();?>, 
        { 
          controller: 'SimpleController', 
          templateUrl: '<?php get_template_part('single','');?>' 
        }) 
      .when('/view2', 
        { 
          controller: 'SimpleController', 
          templateUrl: 'Partials/view2.html' 
        }) 
      .when('/view3', 
        { 
          controller: 'SimpleController', 
          templateUrl: 'Partials/view3.html' 
        }) 
      .otherwise({redirectTo: '/view1'}); 
    }); 


    </script> 
<!-- Loop--> 

</div> <!-- Close <class="bg-texture--> 

->

Он не будет работать прямо сейчас, конечно. Буду признателен, если вы поможете мне решить эту проблему. BTW, я начал программировать около 5 недель назад - так что могут быть некоторые действительно глупые miskates новичка! :)

Привет, Yannic :)

+0

Проверьте это: https://github.com/HRoger/angularpresstheme - эта тема превратит wordpress в одностраничное приложение. Здесь есть демо-версия: http://angularpresstheme.com – RoyRogers

ответ

2

Я думаю, что угловая вполне излишеством здесь. Вы можете рассмотреть возможность использования jquery (который поставляется с WordPress). Сделайте ссылки в своих функциях пожарной jquery «новейшего содержимого», которые вставляют запрошенный контент с помощью запроса ajax в нужное поле.

WordPress имеет некоторые интересные функции AJAX встроенный в: http://codex.wordpress.org/AJAX Это может быть наибольший интерес для Вас: http://codex.wordpress.org/AJAX_in_Plugins#Ajax_on_the_Viewer-Facing_Side

Основная идея заключается в том зарегистрировать функцию с к крюку с wp_ajax_nopriv_ («без привилегий») крючок и просить его, используя что-то вроде этого:

jQuery(document).ready(function($) { 
    var data = { 
     action: 'my_action', 
     whatever: 'any value to access later in php' 
    }; 
    jQuery.post(ajax_url, data, function(response) { 
     alert('Got this from the server: ' + response); 
    }); 
}); 

«my_action» должен быть равен вещи вы с приставкой wp_ajax_nopriv_. ajax_url должен указывать на admin_url('admin-ajax.php'). Вы можете использовать wp_localize_script(), чтобы сделать его доступным в js.

+0

Большое спасибо за этот быстрый ответ. Я попробую jQuery сейчас, но возможно ли с jQuery изменить URL-адрес и представление, но НЕ перезагружать все? Я попытался понять это на google, но я не нашел удовлетворительного ответа. –

+0

jQuery не поставляется с какой-либо функцией маршрутизации. Но [pathjs] (https://github.com/mtrpcic/pathjs) выглядит разумно и быстро интегрировать аддон. Не думал о маршрутизации, когда изначально предлагал jQuery, но angularjs - это намного больше, чем вам нужно. Я все же рекомендую сделать это с помощью jQuery. Не стесняйтесь спрашивать, нужна ли вам дополнительная помощь. – ahoereth

+1

Хорошо, я просто хочу сказать спасибо вам! В конце все работает отлично. Приятная община здесь! –