Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Загрузка js только в определенном месте

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Aligatro
Отправлено: 09 Января, 2014 - 21:07:40
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




Доброго времени суток уважаемое сообщество. Давеча столкнулся с такой проблемой. На сайте необходимо реализовать подгрузку js к плагину только в тех статьях где есть вызов функции отвечающий за отображение таблицы, ну или хотя бы, только в статьях определенной категории.

Вот строение самого плагина (кусок кода отвечающий за вывод таблицы, за подгрузку скриптов и сам вид плагина)


PHP:
скопировать код в буфер обмена
  1. /*-----------------------------------------------------------------------------------*/
  2. # Register and Enquee plugin's styles and scripts
  3. /*-----------------------------------------------------------------------------------*/
  4. function taqyeem_scripts_styles(){
  5.         if( !is_admin()){
  6.                 wp_register_style( 'taqyeem-style' , plugins_url('style.css' , __FILE__) ) ;
  7.                 wp_enqueue_style( 'taqyeem-style' );
  8.                 wp_register_script( 'taqyeem-main', plugins_url('js/tie.js' , __FILE__), array( 'jquery' ) , false , false );
  9.                 wp_enqueue_script( 'taqyeem-main' );
  10.         }
  11. }
  12. add_action( 'init', 'taqyeem_scripts_styles' );
  13.  
  14. /*-----------------------------------------------------------------------------------*/
  15. # Get Reviews Box
  16. /*-----------------------------------------------------------------------------------*/
  17. function taqyeem_get_review( $position = "review-top" ){
  18.  
  19.         if( !is_singular() && taqyeem_get_option('taq_singular') ) return false;
  20.  
  21.         global $post ;
  22.         $get_meta = get_post_custom($post->ID);
  23.         $criterias = unserialize( $get_meta['taq_review_criteria'][0] );
  24.         $title = $get_meta['taq_review_title'][0] ;
  25.         $summary = htmlspecialchars_decode( $get_meta['taq_review_summary'][0] );
  26.         $short_summary = $get_meta['taq_review_total'][0] ;
  27.         $style = $get_meta['taq_review_style'][0];
  28.  
  29.         $image_style = taqyeem_get_option('rating_image');
  30.         if( empty($image_style) ) $image_style ='stars';
  31.  
  32.         $total_score = $total_counter = $score = $ouput = 0;
  33.  
  34.         if( taqyeem_get_option('allowtorate') != 'none' )
  35.                 $users_rate = taqyeem_get_user_rate();
  36.         else $users_rate = '';
  37.  
  38.         if( $style == 'percentage' ) $review_class = ' review-percentage'; elseif( $style == 'points' ) $review_class = ' review-percentage'; else $review_class = ' review-stars';
  39.         $ouput = '
  40. <div class="review_wrap" itemscope itemtype="http://schema.org/Review">
  41.         <div style="display:none" itemprop="reviewBody">'. wp_trim_words($post->post_content, 500 ) .'</div>
  42.         <div style="display:none" class="name entry-title" itemprop="name">'. get_the_title() .'</div>
  43.         <div style="display:none" class="entry-title" itemprop="itemReviewed" itemscope itemtype="http://schema.org/Thing"><span itemprop="name">'. get_the_title() .'</span></div>
  44.         <div style="display:none" class="updated">'. get_the_time( 'Y-m-d' ) .'</div>
  45.         <div style="display:none" class="vcard author" itemprop="author" itemscope itemtype="http://schema.org/Person"><strong class="fn" itemprop="name">'. get_the_author() .'</strong></div>
  46.  
  47.         <meta itemprop="datePublished" content="'. get_the_time( 'Y-m-d' ) .'" />
  48.  
  49.         <div id="review-box" class="review-box '. $position.$review_class.'">';
  50.         if( !empty($title) ){
  51.                 $ouput .= '<h2 class="review-box-header">'.$title.'</h2>';
  52.         }
  53.  
  54.         if( !empty($criterias) && is_array($criterias) ){
  55.                 foreach( $criterias as $criteria){
  56.                         if( $criteria['name'] && is_numeric( $criteria['score'] )){
  57.                                 if( $criteria['score'] > 100 ) $criteria['score'] = 100;
  58.                                 if( $criteria['score'] < 0 ) $criteria['score'] = 0;
  59.  
  60.                         $score += $criteria['score'];
  61.                         $total_counter ++;
  62.                         if( $style == 'percentage' ): $ouput .= '
  63.                 <div class="review-item">
  64.                         <span><h3>'. $criteria['name'] .' - '. $criteria['score'] .'%</h3><span data-width="'. $criteria['score'] .'"></span></span>
  65.                 </div>';
  66.                 elseif( $style == 'points' ):   $point =  $criteria['score']/10;
  67.                 $ouput .= '     <div class="review-item">
  68.                         <span><h3>'. $criteria['name'] .' - '. $point.'</h3><span data-width="'. $criteria['score'] .'"></span></span>
  69.                 </div>';
  70.                 else:
  71.                 $ouput .= '<div class="review-item">
  72.                         <h3>'. $criteria['name'] .'</h3>
  73.                         <span class="post-large-rate '.$image_style.'-large"><span style="width:'. $criteria['score'] .'%"></span></span>
  74.                 </div>';
  75.                 endif;
  76.                         }
  77.                 }
  78.         }
  79.                 if( !empty( $score ) && !empty( $total_counter ) )
  80.                         $total_score =  $score / $total_counter ;
  81.                 $ouput .= '
  82.                 <div class="review-summary" itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">
  83.                 <meta itemprop="worstRating" content = "1" />
  84.                 <meta itemprop="bestRating" content = "100" />
  85.                 <span class="rating points" style="display:none"><span class="rating points" itemprop="ratingValue">'. round($total_score) .'</span></span>';
  86.                 if( $style == 'percentage' ):
  87.                 $ouput .= '
  88.                         <div class="review-final-score">
  89.                                 <h3>'. round($total_score) .'<span>%</span></h3>
  90.                                 <h4>'. $short_summary .'</h4>
  91.                         </div>';
  92.                 elseif( $style == 'points' ): $total_score = $total_score/10 ;
  93.                 $ouput .= '
  94.                         <div class="review-final-score">
  95.                                 <h3>'. round($total_score,1).'</h3>
  96.                                 <h4>'. $short_summary .' </h4>
  97.                         </div>';
  98.                 else:
  99.                 $ouput .= '
  100.                         <div class="review-final-score">
  101.                                 <span title="'. $short_summary .'" class="post-large-rate '.$image_style.'-large"><span style="width:'. $total_score .'%"></span></span>
  102.                                 <h4>'. $short_summary .'</h4>
  103.                         </div>';
  104.                 endif;
  105.                 if( !empty( $summary ) ){
  106.                         $ouput .= '
  107.                         <div class="review-short-summary" itemprop="description">
  108.                                 <p>'. $summary .'</p>
  109.                         </div>';
  110.                 }
  111.                         $ouput .= '
  112.                 </div>'.$users_rate.'
  113.                 <span style="display:none" itemprop="reviewRating">'. round($total_score) .' </span>
  114.         </div>
  115.  
  116. </div>';
  117.  
  118.         return $ouput ;
  119. }
  120.  
  121. /*-----------------------------------------------------------------------------------*/
  122. # Get Reviews Box
  123. /*-----------------------------------------------------------------------------------*/
  124. function taqyeem_insert_review($content) {
  125.         global $post;
  126.  
  127.         if( is_feed() ) return $content;
  128.  
  129.         $get_meta = get_post_custom($post->ID);
  130.         if( !empty( $get_meta['taq_review_position'][0] ) )     $review_position = $get_meta['taq_review_position'][0] ;
  131.         $output = $output2 = '';
  132.         if( !empty( $review_position ) &&  $review_position == 'top'  ) $output =  taqyeem_get_review('review-top');
  133.         if( !empty( $review_position ) &&  $review_position == 'bottom' ) $output2 = taqyeem_get_review('review-bottom');
  134.  
  135.         return $output.$content.$output2;
  136. }
  137. add_filter ('the_content', 'taqyeem_insert_review');


Я пытался сделать это множеством разных способов, вот несколько из них.

1.
PHP:
скопировать код в буфер обмена
  1. if( taqyeem_get_review()){
  2.                 wp_register_script( 'taqyeem-main', plugins_url('js/tie.js' , __FILE__), array( 'jquery' ) , false , false );
  3.                 wp_enqueue_script( 'taqyeem-main' );
  4.         }


непонятно почему но подгружает скрипт на всех страницах блога, даже на главной, где упоминания о get_review даже нету.

2.
PHP:
скопировать код в буфер обмена
  1. function taqyeem_onload(){
  2. if( is_category('obzor')){
  3.                 wp_register_script( 'taqyeem-main', plugins_url('js/tie.js' , __FILE__), array( 'jquery' ) , false , false );
  4.                 wp_enqueue_script( 'taqyeem-main' );
  5.         }
  6.         } add_action ('wp_head' 'taqyeem_onload')


так же безуспешно. Скрипт не подгружается вообще нигде. То же самое если я размещаю условие не при помощи хука, а вручную в head.

3.
PHP:
скопировать код в буфер обмена
  1. if( is_singular()){
  2.                 wp_register_script( 'taqyeem-main', plugins_url('js/tie.js' , __FILE__), array( 'jquery' ) , false , false );
  3.                 wp_enqueue_script( 'taqyeem-main' );
  4.         }
  5.  

опять таки скрипт не загружается нигде, хотя порывшись в исходниках wp с comment-reply.js - это прокатывает.

Что скажите? =)) Большое спасибо за помощь =)
 
 Top
IllusionMH
Отправлено: 09 Января, 2014 - 21:53:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Aligatro, последний аргумент должен быть true и они будут добавлены в футер, как и должны скрипты. а вызвать эту функцию можно прямо из интересующей функции.
 
 Top
zelenin
Отправлено: 09 Января, 2014 - 21:54:15
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Дек. 2012  


Помог: 1 раз(а)




я бы регистрацию стиля и скрипта оставил как есть, а вызывал бы их в 22 строчке после global $post;
 
 Top
Aligatro
Отправлено: 10 Января, 2014 - 22:02:59
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




После долгих метаний по форумам, проблему решил таким условием

PHP:
скопировать код в буфер обмена
  1. function taqyeem_scripts_and_styles() {
  2.         if (is_single () && taqyeem_insert_review($content)){
  3.                 wp_enqueue_script('taqyeem-main', plugins_url('js/tie.js' , __FILE__), array( 'jquery' ) , false , false );
  4.         }
  5. }
  6. add_action( 'wp_enqueue_scripts', 'taqyeem_scripts_and_styles' );


Скрипт подключается только на странице архива и только там где есть вызов taqyeem_insert_review.

Варианты с is_category; in_category; query_post('obzor') и еже с ними, провалились. Ибо скрипт подключался везде где есть хотя бы упоминание о этой категории. Помогло только двойное условие типа
PHP:
скопировать код в буфер обмена
  1. if (is_single () && in_category(78)){}


P.s Пож, не кидайтесь камнями, просто решил выложить пример решения проблемы для всех страждущих, кто забредет сюда с похожим вопросом =)

Огромное спасибо всем за ответы и помощь =)

P.s.s Кстати, может кто помнит условие по которому можно сделать вызов функции только на странице где есть комментарии =)

(Отредактировано автором: 10 Января, 2014 - 22:12:09)

 
 Top
zelenin
Отправлено: 10 Января, 2014 - 22:15:11
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Дек. 2012  


Помог: 1 раз(а)




я вам подсказал лучшее решение, которым вы не воспользовались. Предлагаю дальше рыскать по форумам, а не задавать ненужные вопросы.
 
 Top
Aligatro
Отправлено: 11 Января, 2014 - 02:00:21
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




zelenin пишет:
я вам подсказал лучшее решение, которым вы не воспользовались. Предлагаю дальше рыскать по форумам, а не задавать ненужные вопросы.


Во-первых, чем мое решение хуже?
Во-вторых, я не понимаю чем вызван Ваш пренебрежительный тон.
В-третьих, я конечно еще совсем новичок в программировании, но как мне кажется мое решение является более гибким и подходит для решения разных типов задач а не только моей.

Все-равно спасибо Вам за оказанную помощь...
 
 Top
zelenin
Отправлено: 11 Января, 2014 - 02:32:28
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Дек. 2012  


Помог: 1 раз(а)




Aligatro пишет:
zelenin пишет:
я вам подсказал лучшее решение, которым вы не воспользовались. Предлагаю дальше рыскать по форумам, а не задавать ненужные вопросы.


Во-первых, чем мое решение хуже?
Во-вторых, я не понимаю чем вызван Ваш пренебрежительный тон.
В-третьих, я конечно еще совсем новичок в программировании, но как мне кажется мое решение является более гибким и подходит для решения разных типов задач а не только моей.

Все-равно спасибо Вам за оказанную помощь...

ваше решение хуже тем, что вы используете вызов функции, возвращающий данные, но эти данные не используете. Вообще это не решение, а глупость.
Вот мое решение как раз очень гибкое и понятное - скрипт вызывается именно там, где у вас вызывается таблица (или что там у вас).
Этим и вызван пренебрежительный тон - бежите за советом, получаете его, используете "левое" решение.
 
 Top
Aligatro
Отправлено: 11 Января, 2014 - 10:42:43
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




zelenin пишет:
ваше решение хуже тем, что вы используете вызов функции, возвращающий данные, но эти данные не используете


Я бы с удовольствием узнал бы какие данные не учитывает моя функция? Правда, не потому-что я пытаюсь Вас уязвить, просто интересно.

zelenin пишет:
Вот мое решение как раз очень гибкое и понятное - скрипт вызывается именно там, где у вас вызывается таблица


Ваше решение не подходит по одной простой причине - эта функция вызывается на главной, где есть пост с таблицей (а значит и скрипт грузится на главной в том числе). Я могу сделать как Вы и посоветовали, но что-бы скрипт грузился лишь там где надо, необходимо в любом случае добавить is_single...
 
 Top
zelenin
Отправлено: 11 Января, 2014 - 15:06:35
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Дек. 2012  


Помог: 1 раз(а)




Aligatro пишет:

Я бы с удовольствием узнал бы какие данные не учитывает моя функция? Правда, не потому-что я пытаюсь Вас уязвить, просто интересно.

taqyeem_insert_review - вы посомтрите, сколько данных возвращает эта функция. Сколько запросов в базу делает. А вам она подошла лишь потому, что в самом начале она делает проверку !is_singular

Aligatro пишет:

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

вам не везде нужно вызывать скрипт, где есть таблица? Для этого есть conditional tags
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB