Реклама на сайте Advertise with us

Wordpress How To

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 05/03/11 в 00:20       Ответить с цитатойцитата 

Фиды

Добавляем рекламу к фиду.

Очень простой код с поистине безграничными возможностями на пути монетизации Ваших фидов.

Вставлять в конец functions.php

Код:
function spice_feed( $content ) {
   return $content.'<br/><a href="https://www.master-x.com/forum">Forum that helps.</a>';
}
add_filter( 'the_excerpt_rss', 'spice_feed' );
add_filter( 'the_content_feed', 'spice_feed' );




Делаем новый фид.

Кто сказал, что в фиды можно отдавать только посты? Следующий код добавляет новый RSS 2.0 фид, содержащий страницы блога. Будет полезен тем, кто использует Wordpress как CMS.

Вставлять в конец functions.php

Код: [развернуть]


Последний раз редактировалось: Yacc (05/03/11 в 20:10), всего редактировалось 2 раз(а)

0
 



С нами с 12.08.09
Сообщения: 619
Рейтинг: 633

Ссылка на сообщениеДобавлено: 05/03/11 в 01:10       Ответить с цитатойцитата 

Yacc: Контекстный баннер, нужная в хозяйстве весчь. Если выбрать Context по Post title сильно нагрузит блог при большом количестве постов? Плагин работает "на лету" или како-то кеш имеется?

8
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 05/03/11 в 01:21       Ответить с цитатойцитата 

Аякс

Бесконечный блог.

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

Ради простоты изложения мне пришлось отказаться от универсальности и оптимизировать код для стандартной Wordpress темы Twentyten. По той же причине я никак специально не обрабатываю посты типа Gallery и Aside.

Поэтому, если у Вас установлена другая тема или Вы вносили изменения в стандартную, то, скорее всего, на Вашем блоге этот код работать не будет. Однако обладая минимальными познаниями в php и javascript его можно легко модернизировать под любую тему.

Кроме того всегда можно стукнуть мне в аську и получить готовое решение за символическое вознаграждение или доброе слово. icon_smile.gif

Итак. Первым делом воспользуемся шаблоном из предыдущего поста и создадим новый фид.

Вставлять в конец functions.php

Код: [развернуть]


Обратите внимание на отсутсвие многих элементов обязательных в RSS 2.0 фидах. Более того в нём есть элементы которых нет в спецификации.
По этой причине я не добавляю ссылку на новый фид в секцию head, дабы не вводить в заблуждения всевозможные "читалки".

Теперь собственно аякс. Создайте в папке twentyten новую папку js. И положите в неё этот код под именем unlimited.js

Код: [развернуть]


Необходимо добавить этот сценарий в секцию head. Опять же простоты ради я вызываю его только на главной странице. С тем же успехом и минимальными изменениями его можно вызывать и на страницах архивов. Оставляю это в качестве упражнения тебе, дорогой читатель. icon_smile.gif

Код:
<?php
   if( is_home() ) {
      echo '<script src="'.get_bloginfo("template_url").'/js/unlimited.js"></script>';
   }
?>


Осталось вызвать главную функцию после загрузки страницы:

Код:
<body <?php body_class(); if( is_home() ) { echo 'onload="main();"'; } ?>>


И не забудьте обернуть в noscript страничную навигацию.

Код:
<noscript>
<?php if (  $wp_query->max_num_pages > 1 ) : ?>
   <div id="nav-below" class="navigation">
      <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Older posts', 'twentyten' ) ); ?></div>
      <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?></div>
   </div><!-- #nav-below -->
<?php endif; ?>
</noscript>


Последний раз редактировалось: Yacc (05/03/11 в 20:11), всего редактировалось 3 раз(а)

0
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 05/03/11 в 01:28       Ответить с цитатойцитата 

Lenskiy писал:
Yacc: Контекстный баннер, нужная в хозяйстве весчь. Если выбрать Context по Post title сильно нагрузит блог при большом количестве постов? Плагин работает "на лету" или како-то кеш имеется?

1. Это не плагин, а виджет.
2. Баннер показывается только на страницах одиночных постов, т.е. количество постов значения не имеет. По этой и ряду других причин нет необходимости в кэшировании.

0
 



С нами с 12.08.09
Сообщения: 619
Рейтинг: 633

Ссылка на сообщениеДобавлено: 05/03/11 в 19:11       Ответить с цитатойцитата 

Это не виджет, а просто праздник какой-то!
Yacc ты охуенен smail54.gif

8
 



С нами с 12.08.09
Сообщения: 619
Рейтинг: 633

Ссылка на сообщениеДобавлено: 06/03/11 в 16:21       Ответить с цитатойцитата 

Yacc: А можно заглушку сделать? Например если в контексте не будет не одного ключевого слова, то показывать баннер заглушку.

8
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 06/03/11 в 16:47       Ответить с цитатойцитата 

Если быстро, то надо найти в коде виджета функцию widget и заменить в ней

Код:
{
  echo $ads[$keyword];
}

на

Код:
{
  echo $ads[$keyword];
}
else { ?>
  <a href=""><img src="" /></a>
<?php }

0
 

завлекаю текстами

С нами с 30.04.09
Сообщения: 1610
Рейтинг: 1165

Ссылка на сообщениеДобавлено: 06/03/11 в 18:02       Ответить с цитатойцитата 

едрить матить, чего я сразу не подписался на топик icon_eek.gif
это ж как газета блоговодства smail101.gif

Copywriting,blogwriting En-De-Fr-It-ES-RU-SWicq 55one68two294

8
 



С нами с 12.08.09
Сообщения: 619
Рейтинг: 633

Ссылка на сообщениеДобавлено: 06/03/11 в 19:20       Ответить с цитатойцитата 

Yacc писал:
Если быстро, то надо найти в коде виджета функцию widget и заменить в ней

функцию заменить не долго. Но надо ведь что-то в виджете писать на месте кея? icon_cool.gif

8
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 06/03/11 в 19:52       Ответить с цитатойцитата 

В виджете ничего писать не надо.
Если в выбранном контексте ничего не будет найдено покажется дефолтный баннер (то что выделено красным в предыдущем посте).

0
 



С нами с 12.08.09
Сообщения: 619
Рейтинг: 633

Ссылка на сообщениеДобавлено: 07/03/11 в 19:49       Ответить с цитатойцитата 

Все работает smail54.gif Отличный виджет, заменил несколько плагинов и осуществил давнюю хотелку.
А можно к нему еще код вывода в любом месте записи? icon_rolleyes.gif

8
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 08/03/11 в 06:45       Ответить с цитатойцитата 

Shortcodes

Виджеты

С помощью этого shortcode Вы можете вывести любой виджет в любом месте шаблона.

Вставлять в конец файла functions.php

Код:
function widget($atts) {
   global $wp_widget_factory;
   extract( shortcode_atts( array( 'name' => false ), $atts ) );
   $n = explode( '-', esc_html( $name ) );
   $id = array_pop( $n );
   $nice_name = 'widget_' . implode( '-', $n );
   $class_name = 'WP_Widget_' . implode( '_', array_map( 'ucfirst', $n ) );
   if( ! is_a( $wp_widget_factory->widgets[$class_name], 'WP_Widget' ) ) return;   
   $options = get_option( $nice_name );   
   if( !array_key_exists( $id, $options ) ) { return; }
   ob_start();
   the_widget( $class_name, $options[$id], array( 'widget_id' => $name ) );   
   $output = ob_get_contents();
   ob_end_clean();
   return $output;
}
add_shortcode( 'widget', 'widget' );


Использование.

Если вставляете в пост:
Код:
[widget name='widget_id']


Если вставляете в файл шаблона:
Код:
<?php echo do_shortcode( "[widget name='widget_id']" ); ?>


Узнать widget_id можно несколькими способами.

- посмотреть в коде страницы:

Код:
<li id="recent-posts-2" class="widget-container widget_recent_entries">


- посмотреть в поле widget_название-виджета таблицы wp_options:



- смотреть в форме настроек виджета, предварительно добавив в метод form этого виджета:

Код:
<?php echo $this->id; ?>




Например вызвать обновлённый виджет Контекстный Баннер можно так:

Код:
[widget name='context-banner-5']


Стоит отметить, что никакой особой "защиты от дурака" нет. Поэтому не надо вводить несуществующие widget_id. В лучшем случае Вы ничего не увидите, в худшем, при включенной отладке, получите сообщение об ошибке.

0
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 08/03/11 в 06:48       Ответить с цитатойцитата 

Lenskiy: Я ответил на твой вопрос? icon_smile.gif

0
 



С нами с 12.08.09
Сообщения: 619
Рейтинг: 633

Ссылка на сообщениеДобавлено: 08/03/11 в 10:53       Ответить с цитатойцитата 

ID виджета нашел, но не могу правильно код для шаблона составить. В шаблоне просто появляется шорткод. Баннеров нет, ошибок нет.

Код:
<?php echo do_shortcode( "[widget name='widget_id="5"']" ); ?>

или
Код:
<?php echo do_shortcode( "[widget name='widget_id=5']" ); ?>

или
Код:
<?php echo do_shortcode( "[widget name='context_banner_widget-5']" ); ?>

или
Код:
<?php echo do_shortcode( "[context_banner_widget='5']" ); ?>

8
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 08/03/11 в 14:34       Ответить с цитатойцитата 



Например вызвать обновлённый виджет Контекстный Баннер можно так:

Код:
[widget name='context-banner-5']


Или так:

Цитата:
<?php echo do_shortcode( "[widget name='context-banner-5']" ); ?>

0
 



С нами с 12.08.09
Сообщения: 619
Рейтинг: 633

Ссылка на сообщениеДобавлено: 08/03/11 в 16:42       Ответить с цитатойцитата 

delete

Последний раз редактировалось: Lenskiy (09/03/11 в 21:30), всего редактировалось 1 раз

8
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 08/03/11 в 16:51       Ответить с цитатойцитата 

Lenskiy писал:
Где ошибся?

Возьми обновлённую версию виджета. icon_smile.gif

Код:
<?php echo do_shortcode( "[widget name='context-banner-5']" ); ?>


Если и это не поможет - стучи в аську, разберёмся.

0
 



С нами с 12.08.09
Сообщения: 619
Рейтинг: 633

Ссылка на сообщениеДобавлено: 09/03/11 в 15:02       Ответить с цитатойцитата 

не работает же!
Parse error: syntax error, unexpected '}' /public_html/wp-content/themes/f2/functions.php on line 640
два раза пробовал, оба раза одинаковая ошибка.
Проверь еще раз код, может где-то что-то упустил. Может это <?php

8
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 09/03/11 в 15:43       Ответить с цитатойцитата 

Lenskiy писал:
не работает же!
Parse error: syntax error, unexpected '}' /public_html/wp-content/themes/f2/functions.php on line 640

А что у тебя в строках 630-650?

Скопипастил себе код из поста, проверил - работает. icon_smile.gif

0
 



С нами с 12.08.09
Сообщения: 619
Рейтинг: 633

Ссылка на сообщениеДобавлено: 09/03/11 в 16:42       Ответить с цитатойцитата 

до внесения кода виджета в файле functions.php было 600 строк и все работало. Стало быть ошибка во внесенном коде. а если быть точным между 30-50 строчками.
Проверил код на другом сайте, там вообще все фатально накрылось
Fatal error: Call to undefined function has_post_thumbnail() in /public_html/wp-content/themes/Selalu/index.php on line 11
icon_confused.gif
Может еще кто попробует вставить код?

8
 



С нами с 28.04.08
Сообщения: 623
Рейтинг: 687

Ссылка на сообщениеДобавлено: 09/03/11 в 17:52       Ответить с цитатойцитата 

Lenskiy: ну он же тебе явно пишет, неожиданный }, лишний символ у тебя где то..., пости файл полностью, найдем где именно, если сам не можешь...

8
 



С нами с 28.04.08
Сообщения: 623
Рейтинг: 687

Ссылка на сообщениеДобавлено: 09/03/11 в 17:54       Ответить с цитатойцитата 

Lenskiy писал:

Проверил код на другом сайте, там вообще все фатально накрылось
Fatal error: Call to undefined function has_post_thumbnail() in /public_html/wp-content/themes/Selalu/index.php on line 11
icon_confused.gif



версия WP(точнее просто не может данную функцию найти) не имеет данной функции has_post_thumbnail() ! Интерпретатор же пишет все...

8
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 09/03/11 в 18:00       Ответить с цитатойцитата 

has_post_thumbnail поддерживается начиная с версии 2.9

скопипастил ещё раз - всё работает.

Код:
...
                        echo $ads[$keyword];
                     }
                  }
               }
            }
         } ?>
         </div>
      <?php
      echo $after_widget; // Строка 40. Всё нормально. icon_smile.gif
   }
   
   function update( $new_instance, $old_instance ) {
...

0
 



С нами с 12.08.09
Сообщения: 619
Рейтинг: 633

Ссылка на сообщениеДобавлено: 09/03/11 в 18:13       Ответить с цитатойцитата 

А как выложить код свернутый? Нехочется тут длиннющую портянку лепить.
icon_cool.gif

8
 



С нами с 28.04.08
Сообщения: 623
Рейтинг: 687

Ссылка на сообщениеДобавлено: 09/03/11 в 18:19       Ответить с цитатойцитата 

code hidden - /code , квадратные скобки упущены..

p.s. для администрации, надо бы по дефолту hidden поставить, как раньше, имхо так удобнее было...

8
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »