X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Title подкатегории и под подкатегории
Jean
Jean
Topic Starter сообщение 3.2.2014, 16:48; Ответить: Jean
Сообщение #1


Доброго времени.
Есть проблема с корректным отражением title в WP
На данный момент он составляется так
Категория-Название сайта
Запись - Категория - Название сайта

А вот если я создаю подкатегорию, то тут уже проблема

Подкатегория-Название сайта
Запись-Название сайта

А хотелось бы:
Запись-Подкатегория-Категория-Название сайта

Что очень не удобно когда это к примеру подкатегория товара.
Подскажите как исправить?

Сообщение отредактировал Jean - 3.2.2014, 22:38
Причина редактирования: для большей доходчивости
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Игорян_mw
Игорян_mw
сообщение 3.2.2014, 21:43; Ответить: Игорян_mw
Сообщение #2


Думаю, плагин "All In One SEO Pack" решит вашу проблему. Если конечно я правильно понял чего вы хотите.

[img]http://cdn.joxi.ru/uploads/prod/2014/02/03/90b/369/105177309e5dc2a9c943a94876b94c880704a0c8.jpg[/img]

Сообщение отредактировал Игорян - 3.2.2014, 21:45
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Jean
Jean
Topic Starter сообщение 3.2.2014, 22:37; Ответить: Jean
Сообщение #3


Не уж то ни одного программера на форуме нет? или не сталкивались?


[member=Игорян], конечно не правильно, ибо тема даже не в Seo разделе создана...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 4.2.2014, 12:13; Ответить: matroskin8
Сообщение #4


Приветствую.
Заинтересовала задача, решил попробовать набросать функцию. Функцию помещаем в файл functions:
function nav_title(){
// строка для title
$nav_title = '';
// разделитель
$sep = ' - ';
// если главная страница
if( is_home() || is_front_page() ){
  echo get_bloginfo('name');
  return;
}
// если страница метки
if( is_tag() ){
  echo single_tag_title('', false) . $sep . get_bloginfo('name');
  return;
}
// если результаты поиска
if( is_search() ){
  echo "Результаты поиска: " . get_search_query();
  return;
}
// если не категория, тогда название берем из wp_title
if(!is_category()){
  $nav_title .= wp_title('', false) . $sep;
}
// получаем массив категории поста
$category = get_the_category();
// ID категории
$cat_id = $category[0]->cat_ID;
// если есть ID
if($cat_id){
  // пробуем получить родительские категории
  $categories = get_category_parents($cat_id);
  // удаляем слеш в конце
  $categories = rtrim($categories, '/');
  // получаем массив
  $categories = explode('/', $categories);
  // меняем порядок элементов на обратный
  $categories = array_reverse($categories);
  // формируем строку
  $nav_title .= implode($sep, $categories);
  // добавляем разделитель
  $nav_title .= $sep;
}
$nav_title .= get_bloginfo('name');
echo $nav_title;
}


В тайтле шаблона header вызываем функцию:
<title><?php nav_title(); ?></title>

Функцию тестировал на простенькой теме на компонентах страницы / записи / категории / подкатегории / метки / поиск. Все работает. Если нужны какие-то дополнительные компоненты, тогда нужно расширять функцию.
Чуть позже, наверное, перепишу функцию, сделав ее более универсальной и пригодной не только для тайтла, но и для хлебных крошек.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Jean
Jean
Topic Starter сообщение 5.2.2014, 10:34; Ответить: Jean
Сообщение #5


[member=matroskin8], я не программист к сожалению) возможно что то ни так сделал

Parse error: syntax error, unexpected $end in /home/a8574/public_html/m.ru/wp-content/themes/Ms/functions.php on line 749
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 5.2.2014, 11:13; Ответить: matroskin8
Сообщение #6


В ошибке сообщается, что где-то в районе 749-ой строки пропущена точка с запятой. До добавления моей функции эта точка с запятой была необязательна. Поэтому либо поставьте точку с запятой, либо поместите мою функцию в начало файла функциий... ну либо можете прикрепить файл функций и я гляну.
К слову, функцию уже переписал (поскольку предыдущая не лишена недостатков), остались некоторые мелочи. Если заинтересует, то смогу выложить чуть позже.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Jean
Jean
Topic Starter сообщение 5.2.2014, 11:14; Ответить: Jean
Сообщение #7


[member=matroskin8], Буду очень благодарен, выкладывайте. Кстати, а будет ли дружить ваша функция с плагинами seo оптимизации?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 5.2.2014, 11:24; Ответить: matroskin8
Сообщение #8


Никаких конфликтов с плагинами быть не должно (но нужно, конечно же, тестировать), поскольку функция использует стандартные теги WP для построения цепочки навигации для основных компонентов:
- Главная страница
- Страница метки
- Страница результатов поиска
- Страница 404
- Рубики
- Записи
- Отдельные страницы
- Для всех остальных возможных компонентов использован стандартный тег wp_title().
Сегодня чуть позже выложу функцию и прикреплю небольшую видео инструкцию.

Сообщение отредактировал matroskin8 - 5.2.2014, 11:25
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 5.2.2014, 14:04; Ответить: matroskin8
Сообщение #9


Новая функция:
function nav_title($breadcrumbs = false){
// $nav_title = array();
$sep = ' - ';
$site = get_bloginfo('name');
$site_url = home_url();
$home = "<a href='{$site_url}'>{$site}</a>";
if( is_home() || is_front_page() ){
  $nav_title = array($home);
}
elseif( is_tag() ){
  $nav_title = array( $home, single_tag_title('Метка: ', false) );
}
elseif( is_search() ){
  $nav_title = array( "Результаты поиска по запросу: " . get_search_query() );
}
elseif( is_404() ){
  $nav_title = array( $home, '404' );
}
elseif( is_category() ){
  $cat_id = get_query_var('cat');
  $cat = get_category($cat_id);
  if($cat->parent){
   $categories = rtrim(get_category_parents($cat_id, true, $sep), $sep);
   if(!$breadcrumbs){
    $categories = explode($sep, $categories);
    $categories = array_reverse($categories);
    $categories = implode($sep, $categories);
   }
   $nav_title = array($home, $categories);
  }else{
   $nav_title = array($home, $cat->name);
  }
}
elseif( is_single() ){
  $category = get_the_category();
  $cat_id = $category[0]->cat_ID;
  $categories = rtrim(get_category_parents($cat_id, true, $sep), $sep);
  $categories = explode($sep, $categories);
  $home_arr = array($home);
  $title = array(get_the_title());
  $nav_title = array_merge($home_arr, $categories, $title);
}
elseif( is_page() ){
  $nav_title = array($home, get_the_title());
}
else{
  $nav_title = wp_title( '/', false, 'right' );
  return rtrim($nav_title, ' /');
}
if(!$breadcrumbs){
  $nav_title = array_reverse($nav_title);
  $nav_title = implode($sep, $nav_title);
  $nav_title = strip_tags($nav_title);
}else{
  $nav_title = implode($sep, $nav_title);
}
return $nav_title;
}


Вызываем в теге title:
<title><?php echo nav_title(); ?></title>


Также функцию можно использовать для формирования хлебных крошек, вызывая в нужном месте шаблона и передавая параметром строку true:
<div class="breadcrumbs">
<?php echo nav_title(true); ?>
</div>


В видео ниже на всякий случай показал весь процесс с комментариями. С плагином All in One Seo функция не конфликтует. Однако, плагин полностью переписывает title и вставляет туда результат своей работы. Поэтому, как вариант, можно отключить переписыванияе плагином заголовков... ну, или копаться в коде плагина / писать свой плагин.
[media]http://youtu.be/qRI9z7pTpLs[/media]

P.S. Видео почему-то на форуме проигрывается через раз, поэтому вот прямая ссылка на видео.

Сообщение отредактировал matroskin8 - 5.2.2014, 14:11
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Jean
Jean
Topic Starter сообщение 11.2.2014, 11:42; Ответить: Jean
Сообщение #10


[member=matroskin8], Кстати вы в примере что тут написали зачем то закомментировали код, в итоге он не работал)
function nav_title($breadcrumbs = false){//
Убрал и заработало)Но есть проблема на блоге, где тема не совсем простая))
<title>Warning: rtrim() expects parameter 1 to be string, object given in /home/srv32044/lov2.me/wp-content/themes/lov21/functions.php on line 51Название сайта</title>
Файл functions.php там от фреймверка) Скопировал с тем как я ставлю в код
<?php/** * Theme functions file * * DO NOT MODIFY THIS FILE. Make a child theme instead: http://codex.wordpress.org/Child_Themes * * @package ClassiPress * @author AppThemes */global $cp_options;// current version$app_theme = 'ClassiPress';$app_abbr = 'cp';$app_version = '3.3';$app_db_version = 1960;$app_edition = 'Ultimate Edition';// define rss feed urls$app_rss_feed = 'http://feeds2.feedburner.com/appthemes';$app_twitter_rss_feed = 'http://api.twitter.com/1/statuses/user_timeline.rss?screen_name=appthemes';$app_forum_rss_feed = 'http://forums.am/external.php?type=RSS2';// define the transients we use$app_transients = array($app_abbr.'_cat_menu');define( 'APP_TD', 'classipress' );// Frameworkrequire_once( dirname( __FILE__ ) . '/framework/load.php' );// Paymentsrequire_once( dirname( __FILE__ ) . '/includes/payments/load.php' );// Optionsrequire_once( dirname( __FILE__ ) . '/includes/theme-options.php' );scb_register_table( 'app_pop_daily', $app_abbr . '_ad_pop_daily' );scb_register_table( 'app_pop_total', $app_abbr . '_ad_pop_total' );APP_Mail_From::init();require_once( dirname( __FILE__ ) . '/framework/includes/stats.php' );if ( is_admin() )	require_once( dirname( __FILE__ ) . '/framework/admin/importer.php' );// Theme-specific filesrequire_once( dirname( __FILE__ ) . '/includes/theme-functions.php' );function nav_title($breadcrumbs = false){ $nav_title = array();$sep = ' - ';$site = get_bloginfo('name');$site_url = home_url();$home = "<a href='{$site_url}'>{$site}</a>";if( is_home() || is_front_page() ){  $nav_title = array($home);}elseif( is_tag() ){  $nav_title = array( $home, single_tag_title('Метка: ', false) );}elseif( is_search() ){  $nav_title = array( "Результаты поиска по запросу: " . get_search_query() );}elseif( is_404() ){  $nav_title = array( $home, '404' );}elseif( is_category() ){  $cat_id = get_query_var('cat');  $cat = get_category($cat_id);  if($cat->parent){   $categories = rtrim(get_category_parents($cat_id, true, $sep), $sep);   if(!$breadcrumbs){	$categories = explode($sep, $categories);	$categories = array_reverse($categories);	$categories = implode($sep, $categories);   }   $nav_title = array($home, $categories);  }else{   $nav_title = array($home, $cat->name);  }}elseif( is_single() ){  $category = get_the_category();  $cat_id = $category[0]->cat_ID;  $categories = rtrim(get_category_parents($cat_id, true, $sep), $sep);  $categories = explode($sep, $categories);  $home_arr = array($home);  $title = array(get_the_title());  $nav_title = array_merge($home_arr, $categories, $title);}elseif( is_page() ){  $nav_title = array($home, get_the_title());}else{  $nav_title = wp_title( '/', false, 'right' );  return rtrim($nav_title, ' /');}if(!$breadcrumbs){  $nav_title = array_reverse($nav_title);  $nav_title = implode($sep, $nav_title);  $nav_title = strip_tags($nav_title);}else{  $nav_title = implode($sep, $nav_title);}return $nav_title;}
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыSEO-продвижение USA, Europe, Asia под ключ | Dating, Gambling, Essay и 10+ ниш
1 Needmylink1 643 17.3.2024, 12:58
автор: Needmylink1
Открытая тема (нет новых ответов) HideHost.net - Виртуальные и выделенные сервера под любые Ваши проекты с индивидуальным подходом.
Работаем уже более 12 лет
5 HIDEHOST 2107 15.3.2024, 17:28
автор: Yaguar76
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыКакой сайт пробовать создавать под небольшое ГЕО?
6 kapusta1 1195 15.3.2024, 13:06
автор: OS_ZP_UA
Горячая тема (нет новых ответов) Hyper.hosting - сервера под любые задачи [разрешены dmca, гэмблинг, адалт и пр.]
Лучшие сервера по доступной цене
29 Hyper_Hosting 8307 12.3.2024, 14:51
автор: Hyper_Hosting
Открытая тема (нет новых ответов) SEO Линк Билдинг под Бурж | Вечные ссылки США, Европа и Мир с Гарантией
17 Needmylink1 6306 11.3.2024, 12:33
автор: Needmylink1


 



RSS Текстовая версия Сейчас: 19.3.2024, 12:36
Дизайн