helekopter
Ответы в темах
-
Форум: Проблемы и решения
Тема: Передача данных ajaxВопрос решен. Вот рабочий код.
// Подключаем Jquery и инициируем проверку на существования блока рекламы jQuery(document).ready(function($) { if ($.adblockJsFile === undefined){ // Если блок не найден присваиваем статус true bar_blocked=true; } else { // Найден присваиваем статус true bar_blocked=false; } // Запускаем ajax jQuery.ajax({ type: "POST", data: { // !Важно, указываем название функции php в которую необходимо передать данные action: 'ad_blockit', bar_blocked: bar_blocked, }, dataType: "json", url: "/wp-admin/admin-ajax.php", success: function( response ) { alert( response ); } }); });
function ad_blockit() { // Получаем данные $blocker = $_POST['bar_blocked']; echo $blocker; // !Важно не забыть убить функцию. die(); } // !Важно не забыть повесить эти 2 хука. Дабы wp не отправил 0 или пустой ответ add_action("wp_ajax_ad_blockit", "ad_blockit"); add_action("wp_ajax_nopriv_ad_blockit", "ad_blockit");
Форум: Проблемы и решения
Тема: Перенаправление на php сессиюВопрос для подумать. В чем отличие от стандартных (чит: правильных) вариантов решения
Вверху я уже сказал, в чем отличие. В простоте, экономии места, в существовании лишь 1 темы.
Если это без заморочек.. Столько всего нужно создать проверить обработать…
//При этом напихать шаблоны темы условиями в которых потом разобраться будет не возможно (вместо того, что бы создать отдельные шаблоны для моб. версии) //Код легко комментируется и не требует долгого разбирательства, а при должном уровне знаний и умений можно все это вынести в отдельный плагин, что еще больше упростит работу.
Чем это отличается от is_mobile?
Тем, что не все хотят использовать мобильную версию на своем смарт-устройстве из-за ее урезанной функциональности в пользу уменьшения трафика. А потому, есть прямая необходимость дать пользователю возможность выбора версий сайта. Поэтому я и искал решение при котором редирект на мобильную версию будет происходить 1 раз за сессию, дабы не брать на себя ответственность в принятии решение за пользователя.
Форум: Проблемы и решения
Тема: Перенаправление на php сессиюЗвучит как риторический вопрос, но я все же отвечу. /?version=mobile, создаёт php request который перехватывается и передаётся для создания новой сессии. После чего, функция mobileview получает данные о текущей сессии и возвращает параметр (true), если мобильная сессия активна, что в свою очередь позволяет при помощи простого логического выражения типа: if(mobileview($on){wp_deregister_script (‘jquery’)} создать условие при котором во время инициированной мобильной сессии библиотека jquery подгружаться, не будет. Такое же условие можно создать для любой типовой функции внутри цикла wordpress, что в свою очередь позволяет иметь лишь одну активную тему без лишних заморочек. Как то так -)
P.s в примере могут быть ошибки в названии функции, так как пишу с мобильного и по памяти.
Форум: Проблемы и решения
Тема: Перенаправление на php сессию1. На поддомене\подкаталоге
2. Подменой темы по определению ЮА.Может я конечно ошибаюсь из-за своей неопытности. Но если я правильно понимаю контекст первых двух пунктов, то из них следует, что мне необходимо создать второй шаблон темы поместив его в отдельную папку, с собственными archive.php, index.php, functioins.php и прочим, как например это сделано на wp-touch. Если я ошибаюсь, поправьте.
3. Адаптивная вёрстка (media queries)
Этот метод (конечно если htmlbook не врет) предполагает определения типа устройства и его разрешения средствами css и позволяет изменять только стили. Опять таки, поправьте если я ошибаюсь.
Чего хотел я? Я хотел при помощи логических условий в своей родительской и !единственной теме, изменить логику работы wp (читай цикл) исключив ненужные элементы. Самое логичное решение этой проблемы, php session’s. Я не понимаю, почему Вы меня считаете идиотом, но с удовольствием послушаю Вашу аргументацию, если у Вас будет желание обсуждать эту тему.
P.s проблему описываемую в данном топике — решил. Вот таким:
if( !isset($_SESSION['version']) && wp_is_mobile()) { wp_redirect( '/?version=mobile' ); exit; }
незамысловатым способом, можно проверить была ли прежде инициирована сессия на мобильном устройстве и если ответ — отрицателен, перенаправить пользователя соответственно на моб. версию.
В итоге полная механика переключения с мобильной версии на десктоп, реализована следующем методом:
/*-- Переключение на мобильную версию сайта ссылкой --*/ session_start(); // начинаем сессию, запонимая какой выбор сделал пользователь if (isset($_REQUEST['version'])) { // создаем перехват линка $_SESSION['version'] = $_REQUEST['version']; } function mobileview($on){ // создаем удобную функцию $on=$_SESSION['version'] == 'mobile'; return $on; } if( !isset($_SESSION['version']) && wp_is_mobile()) { wp_redirect( '/?version=mobile' ); exit; }
В футере 2 ссылки:
<?php if (!mobileview($on)){ ?> <a href="http://109.254.129.121/?version=mobile">Мобильная версия</a> <?php } if (mobileview($on)){ ?> <a href="http://109.254.129.121/?version=desktop">Полная версия</a> <?php } ?></span>
.
Сразу оговорюсь, код может быть грязным и некрасивым, писал исходя из своих знаний (а у меня их на данный момент не много). К тому же еще не до конца определился, будет ли (при определение смартфон пользователя впервые) лучшим вариантом использовать isset, empty или $_SESSION [‘session_name’] == »
Спасибо всем за помощь -))
Форум: Проблемы и решения
Тема: Перенаправление на php сессиюО чём Вам уже неоднократно говорили.. Делали бы как советовали — уже 3 недели назад как забыли бы о костылях..
Понимаете, дело в том, что любое из тех решений которые Вы предлагали,
а именно:Всё правильно Вам кидают.
Есть 3 варианта решения мобильной версии.
1. На поддомене\подкаталоге
2. Подменой темы по определению ЮА.
3. Адаптивная вёрстка (media queries)wp_is_mobile это лишь условие, проверяющее мобильный ЮА или нет. Что дальше — зависит от фантазий
Первые 2 способа решаются с пом. плагинов (если не считать отдельной установки), 3-й — вёрсткой темы.
предполагало создания отдельной мобильной версии (зеркала), или манипулированием css media quaries, которые никак бы не смогли исключить «лишние» элементы из цикла wordpress. Решение с сессией, позволяет имея 1 шаблон адаптировать сайт абсолютно под все устройства так же исключая лишний трафик в виде ненужных js библиотек, лишнего css мусора и лишних изображений. А при учете, что в странах СНГ нет нормального lte повсеместно, это весьма уместное решение.
P.s спасибо, что откликнулись =)
Форум: Проблемы и решения
Тема: Проверка ширины окна браузера в phpvjpo, спасибо, но вы меня немного не так поняли. В вычисление размера окна браузера средствами php уже нет нужды (а надо мне это было, для исключения некоторых элементов в цикле wp). В данный момент, мне необходима просто функция которая позволяет при клике на ссылку переключать сайт в мобильный/текстовый вид. Зачем ссылка если есть media quaries? Все для того же, что бы исключить картинки и некие элементы сайты дабы таким образом уменьшить размер и время загрузки страницы. К сожалению не у всех есть быстрый безлимит…
Благодарю всех, кто откликнется на помощь. Очень хотелось бы увидеть пример такой функции, что бы потом переработать под себя -) Еще раз спасибо -)
Форум: Проблемы и решения
Тема: Собственный шаблон post-new.phpОтчасти Вы конечно же правы, но в данном случае мне помогло обращение к google на английском -)
Форум: Проблемы и решения
Тема: Собственный шаблон post-new.phpНе поверите, до этого копался в нете около 3 часов в поисках ответа. Как только оставил пост, буквально через секунду наткнулся на нужную инфу.
Всем кому интересно вот решение данной проблемы =)) Всем спасибо за внимание -)После долгих метаний по форумам, проблему решил таким условием
function taqyeem_scripts_and_styles() { if (is_single () && taqyeem_insert_review($content)){ wp_enqueue_script('taqyeem-main', plugins_url('js/tie.js' , __FILE__), array( 'jquery' ) , false , false ); } } add_action( 'wp_enqueue_scripts', 'taqyeem_scripts_and_styles' );
Скрипт подключается только на странице архива и только там где есть вызов taqyeem_insert_review.
Варианты с is_category; in_category; query_post(‘obzor’) и еже с ними, провалились, ибо скрипт подключался везде где есть хотя бы упоминание о этой категории. Помогло только двойное условие типа:
if (is_single () && in_category(78)){}
Pixelix, огромное спасибо Вам за то что натолкнули на поиск правильного решения =)
P.s.s Кстати, может кто помнит условие по которому можно сделать вызов функции только на странице где есть комментарии =)
Вот строение самого плагина (кусок кода отвечающий за вывод таблицы, за подгрузку скриптов и сам вид плагина)
/*-----------------------------------------------------------------------------------*/ # Register and Enquee plugin's styles and scripts /*-----------------------------------------------------------------------------------*/ function taqyeem_scripts_styles(){ if( !is_admin()){ wp_register_style( 'taqyeem-style' , plugins_url('style.css' , __FILE__) ) ; wp_enqueue_style( 'taqyeem-style' ); wp_register_script( 'taqyeem-main', plugins_url('js/tie.js' , __FILE__), array( 'jquery' ) , false , false ); wp_enqueue_script( 'taqyeem-main' ); } } add_action( 'init', 'taqyeem_scripts_styles' ); /*-----------------------------------------------------------------------------------*/ # Get Reviews Box /*-----------------------------------------------------------------------------------*/ function taqyeem_get_review( $position = "review-top" ){ if( !is_singular() && taqyeem_get_option('taq_singular') ) return false; global $post ; $get_meta = get_post_custom($post->ID); $criterias = unserialize( $get_meta['taq_review_criteria'][0] ); $title = $get_meta['taq_review_title'][0] ; $summary = htmlspecialchars_decode( $get_meta['taq_review_summary'][0] ); $short_summary = $get_meta['taq_review_total'][0] ; $style = $get_meta['taq_review_style'][0]; $image_style = taqyeem_get_option('rating_image'); if( empty($image_style) ) $image_style ='stars'; $total_score = $total_counter = $score = $ouput = 0; if( taqyeem_get_option('allowtorate') != 'none' ) $users_rate = taqyeem_get_user_rate(); else $users_rate = ''; if( $style == 'percentage' ) $review_class = ' review-percentage'; elseif( $style == 'points' ) $review_class = ' review-percentage'; else $review_class = ' review-stars'; $ouput = ' <div class="review_wrap" itemscope itemtype="http://schema.org/Review"> <div style="display:none" itemprop="reviewBody">'. wp_trim_words($post->post_content, 500 ) .'</div> <div style="display:none" class="name entry-title" itemprop="name">'. get_the_title() .'</div> <div style="display:none" class="entry-title" itemprop="itemReviewed" itemscope itemtype="http://schema.org/Thing"><span itemprop="name">'. get_the_title() .'</span></div> <div style="display:none" class="updated">'. get_the_time( 'Y-m-d' ) .'</div> <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> <meta itemprop="datePublished" content="'. get_the_time( 'Y-m-d' ) .'" /> <div id="review-box" class="review-box '. $position.$review_class.'">'; if( !empty($title) ){ $ouput .= '<h2 class="review-box-header">'.$title.'</h2>'; } if( !empty($criterias) && is_array($criterias) ){ foreach( $criterias as $criteria){ if( $criteria['name'] && is_numeric( $criteria['score'] )){ if( $criteria['score'] > 100 ) $criteria['score'] = 100; if( $criteria['score'] < 0 ) $criteria['score'] = 0; $score += $criteria['score']; $total_counter ++; if( $style == 'percentage' ): $ouput .= ' <div class="review-item"> <span><h3>'. $criteria['name'] .' - '. $criteria['score'] .'%</h3><span data-width="'. $criteria['score'] .'"></span></span> </div>'; elseif( $style == 'points' ): $point = $criteria['score']/10; $ouput .= ' <div class="review-item"> <span><h3>'. $criteria['name'] .' - '. $point.'</h3><span data-width="'. $criteria['score'] .'"></span></span> </div>'; else: $ouput .= '<div class="review-item"> <h3>'. $criteria['name'] .'</h3> <span class="post-large-rate '.$image_style.'-large"><span style="width:'. $criteria['score'] .'%"></span></span> </div>'; endif; } } } if( !empty( $score ) && !empty( $total_counter ) ) $total_score = $score / $total_counter ; $ouput .= ' <div class="review-summary" itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating"> <meta itemprop="worstRating" content = "1" /> <meta itemprop="bestRating" content = "100" /> <span class="rating points" style="display:none"><span class="rating points" itemprop="ratingValue">'. round($total_score) .'</span></span>'; if( $style == 'percentage' ): $ouput .= ' <div class="review-final-score"> <h3>'. round($total_score) .'<span>%</span></h3> <h4>'. $short_summary .'</h4> </div>'; elseif( $style == 'points' ): $total_score = $total_score/10 ; $ouput .= ' <div class="review-final-score"> <h3>'. round($total_score,1).'</h3> <h4>'. $short_summary .' </h4> </div>'; else: $ouput .= ' <div class="review-final-score"> <span title="'. $short_summary .'" class="post-large-rate '.$image_style.'-large"><span style="width:'. $total_score .'%"></span></span> <h4>'. $short_summary .'</h4> </div>'; endif; if( !empty( $summary ) ){ $ouput .= ' <div class="review-short-summary" itemprop="description"> <p>'. $summary .'</p> </div>'; } $ouput .= ' </div>'.$users_rate.' <span style="display:none" itemprop="reviewRating">'. round($total_score) .' </span> </div> </div>'; return $ouput ; } /*-----------------------------------------------------------------------------------*/ # Get Reviews Box /*-----------------------------------------------------------------------------------*/ function taqyeem_insert_review($content) { global $post; if( is_feed() ) return $content; $get_meta = get_post_custom($post->ID); if( !empty( $get_meta['taq_review_position'][0] ) ) $review_position = $get_meta['taq_review_position'][0] ; $output = $output2 = ''; if( !empty( $review_position ) && $review_position == 'top' ) $output = taqyeem_get_review('review-top'); if( !empty( $review_position ) && $review_position == 'bottom' ) $output2 = taqyeem_get_review('review-bottom'); return $output.$content.$output2; } add_filter ('the_content', 'taqyeem_insert_review');
Я пытался сделать это разными способами вот 3 из них.
1.
if( taqyeem_get_review()){ wp_register_script( 'taqyeem-main', plugins_url('js/tie.js' , __FILE__), array( 'jquery' ) , false , false ); wp_enqueue_script( 'taqyeem-main' ); }
непонятно почему но подгружает скрипт на всех страницах блога, даже на главной, где упоминания о get_review даже нету.
2.
function taqyeem_onload(){ if( is_category('obzor')){ wp_register_script( 'taqyeem-main', plugins_url('js/tie.js' , __FILE__), array( 'jquery' ) , false , false ); wp_enqueue_script( 'taqyeem-main' ); } } add_action ('wp_head' 'taqyeem_onload')
так же безуспешно. Скрипт не подгружается вообще нигде. То же самое если я размещаю условие не при помощи хука, а вручную в head.
3.
if( is_singular()){ wp_register_script( 'taqyeem-main', plugins_url('js/tie.js' , __FILE__), array( 'jquery' ) , false , false ); wp_enqueue_script( 'taqyeem-main' ); }
опять таки скрипт не загружается нигде, хотя порывшись в исходниках wp с comment-reply.js — это прокатывает.
Что скажите? =)) Большое спасибо за помощь =)
Форум: Проблемы и решения
Тема: Загрузка только для мобильныхЧерт +) Надо будет в кодекс поглубже погрузиться =) Спасибо за ответ =)
Форум: Проблемы и решения
Тема: Загрузка только для мобильныхwikicms, большое спасибо Вам за помощь. Не могли бы Вы еще подсказать, как можно запретить загрузку скрипта. То есть например команда <?php wp_enqueue_script ?> подключает определенный скрипт к сайту, а есть ли его системная команда «антоним» которая отключает загрузку этого скрипта, на пример типа <?php wp_deregister_script() ?> которая удаляет инфо о зарегистрированном скрипте -) Большое спасибо за ответы -)
Спасибо, Ваш совет помог решить проблемы с кодировкой =)
Плагинофобию уже вылечили =) Но все равно, даже отсутствие плагинофобии не решает мой вопрос на 100%. Так как в тех плагинах правки комментария нет такого который позволял бы это делать банальным переносом формы отправки комментария к комментарию который я редактирую. Ajax comment edit делает это в убогом popup окошке =(
Форум: Проблемы и решения
Тема: Создание условия на phpSergey Biryukov, спасибо огромное, очень Вам признателен =)