Приношу свои извинения, что отвлёк.Всё исправлено
AlexSF
+187
Репутация
36
Рейтинг
Написал хостеру. Они через пол часа ответили:
Всем доброго времени суток.
Пару дней назад хостер произвёл обновление РНР до версии 5.3.16. И после этого пропала возможность добавлять объявления. Выдаёт следующую ошибку.
Пару дней назад хостер произвёл обновление РНР до версии 5.3.16. И после этого пропала возможность добавлять объявления. Выдаёт следующую ошибку.
Такая же ошибка при попытке фильтрации объявлений.Fatal error: Call to undefined method cms_model_board::strClear() in /****/****/gorodv.by/core/cms.php on line 1865
public function request($var, $type='str', $default=false){ switch($type){ case 'int': return (int)$_REQUEST[$var]; break; case 'str': if ($_REQUEST[$var]) { return $this->strClear($_REQUEST[$var]); } else { return $default; } break; case 'email': if(preg_match("/^([a-zA-Z0-9\._-]+)@([a-zA-Z0-9\._-]+)\.([a-zA-Z]{2,4})$/i", $_REQUEST[$var])){ return $_REQUEST[$var]; } else { return $default; } break; case 'html': if ($_REQUEST[$var]) { return $this->strClear($_REQUEST[$var], false); } else { return $default; } break; case 'array': if (is_array($_REQUEST[$var])) { return $_REQUEST[$var]; } else { return $default; } break; case 'array_int': if (is_array($_REQUEST[$var])) { foreach($_REQUEST[$var] as $k=>$i){ $arr[$k] = (int)$i; } return $arr; } else { return $default; } break; case 'array_str': if (is_array($_REQUEST[$var])) { foreach($_REQUEST[$var] as $k=>$s){ $arr[$k] = $this->strClear($s); } return $arr; } else { return $default; } break; } } else { return $default; } }
Если вдруг чего сразу не получилось, то стоит проверить не прописан ли код глубиномера в шаблоне.
Если он там есть, то вносите правки туда — по аналогии.
Если он там есть, то вносите правки туда — по аналогии.
Всем доброго времени суток.
Я решил продолжить развитие темы, “Микроразметка Schema.org для InstantCms”. И сегодня я расскажу, как реализовать “Хлебные крошки” (Breadcrumb, Глубиномер) в выдаче Поисковых систем. К сожалению это будет небольшой хак ядра.
Для внесения правок нам понадобится только один файл — ваш сайт/core/classes/page.class.php. В нём находим функцию “Глубиномера”. В чистом, не изменённом, файле она находится на строках с 252 по 273.
Собственно теперь мы готовы произвести “Микроразметку хлебных крошек”. Так как на сайте Schema.org мне не удалось найти вразумительных правил для разметки Breadcrumb, я пошёл на сайт data-vocabulary.org. В совокупности эти два сайта открывают практически безграничные возможности для работы с “Микроразметкой сайта”.
И так, на 263 строке размещён <div class="pathway">. Добавим сюда атрибуты, объявляющие о начале и типе разметки — itemscope itemtype="http://data-vocabulary.org/Breadcrumb".
Далее на 265 строке расставляем атрибуты — itemprop="url"(адрес цепочки) и <span itemprop="title">(Название цепочки). А на 267 строке ставим атрибут <span itemprop="child">(переход к следующему элементу в цепочке).
Вот и вся “Микроразметка для хлебных крошек(Breadcrumb)”.
В итоге у меня получился такой код:
Результат проверки на www.google.com/webmasters/tools/richsnippets
Я решил продолжить развитие темы, “Микроразметка Schema.org для InstantCms”. И сегодня я расскажу, как реализовать “Хлебные крошки” (Breadcrumb, Глубиномер) в выдаче Поисковых систем. К сожалению это будет небольшой хак ядра.
Для внесения правок нам понадобится только один файл — ваш сайт/core/classes/page.class.php. В нём находим функцию “Глубиномера”. В чистом, не изменённом, файле она находится на строках с 252 по 273.
Собственно теперь мы готовы произвести “Микроразметку хлебных крошек”. Так как на сайте Schema.org мне не удалось найти вразумительных правил для разметки Breadcrumb, я пошёл на сайт data-vocabulary.org. В совокупности эти два сайта открывают практически безграничные возможности для работы с “Микроразметкой сайта”.
И так, на 263 строке размещён <div class="pathway">. Добавим сюда атрибуты, объявляющие о начале и типе разметки — itemscope itemtype="http://data-vocabulary.org/Breadcrumb".
Далее на 265 строке расставляем атрибуты — itemprop="url"(адрес цепочки) и <span itemprop="title">(Название цепочки). А на 267 строке ставим атрибут <span itemprop="child">(переход к следующему элементу в цепочке).
Вот и вся “Микроразметка для хлебных крошек(Breadcrumb)”.
В итоге у меня получился такой код:
/** * Печатает глубиномер * @param string $separator */ public function printPathway($separator='→'){ $inCore = cmsCore::getInstance(); $inConf = cmsConfig::getInstance(); //Проверяем, на главной мы или нет if (($inCore->menuId()==1 && !$inConf->index_pw) || !$inConf->show_pw) { return false; } echo '<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="pathway">'; foreach($this->pathway as $key => $value){ echo '<a href="'.$this->pathway[$key]['link'].'" class="pathwaylink" itemprop="url">'.'<span itemprop="title">'.$this->pathway[$key]['title'].'</span></a> '; echo '<span itemprop="child">'.$separator.'</span>'; } } echo '</div>'; } }
Внёс посильную лепту в копилку Аудита
Продолжаю развивать тему расширенного сниппета для статей/блогов сайта в ПС.
Пока не получается реализовать звёздный рейтинг, а жаль. Но я ведь и не программист.
Решил чуток отдохнуть от рейтингов и привязать профиль пользователя к Google+.
Зачем это нужно? – спросят многие. По сути это передача забот по охране авторских прав на плечи Google.
И добавляет фото автора статьи к сниппету в выдаче Google.
Решить эту задумку оказалось гораздо проще, чем в Joomla. И так, что же я делал:
В конструкторе форм создал текстовое поле – Мой профиль в Google+.
На сайте в настройках профиля добавил соответствующую ссылку и сохранил профиль.
Посмотрел результат сохранения и заплакал. Ссылка получила вид
mysayt/user/hobby/ plus.google.com/u/0/айди пользователя/posts
Пошёл искать, где же формируется сей ужас — //mysayt/user/hobby/.
Нашёл в конструкторе форм mysayt/components/users/includes/ userforms.php, в районе 93 строки:
И заменил на:
То есть для подключения профиля Google+ нужно ввести ссылку на профиль и в самом профиле Google+ указать ссылку на ваш сайт. Теперь в выдаче Google(точно) для некоторых, популярных, статей и блогов будет присутствовать фото автора статьи. Что будет повышать уровень доверия пользователей к вашему сайту. А, следовательно, влиять на все остальные показатели сайта.
Данное решение не элегантное и я не знаю как оно повлияет на безопасность сайта, но оно работает.
В принципе всё, осталось решить одну глобальную проблему – как объяснить пользователям сайта, что это за поле и чего с ним делать. Но это уже совсем другая история.
Пока не получается реализовать звёздный рейтинг, а жаль. Но я ведь и не программист.
Решил чуток отдохнуть от рейтингов и привязать профиль пользователя к Google+.
Зачем это нужно? – спросят многие. По сути это передача забот по охране авторских прав на плечи Google.
И добавляет фото автора статьи к сниппету в выдаче Google.
Решить эту задумку оказалось гораздо проще, чем в Joomla. И так, что же я делал:
В конструкторе форм создал текстовое поле – Мой профиль в Google+.
На сайте в настройках профиля добавил соответствующую ссылку и сохранил профиль.
Посмотрел результат сохранения и заплакал. Ссылка получила вид
mysayt/user/hobby/ plus.google.com/u/0/айди пользователя/posts
Пошёл искать, где же формируется сей ужас — //mysayt/user/hobby/.
Нашёл в конструкторе форм mysayt/components/users/includes/ userforms.php, в районе 93 строки:
$default = cmsPage::getMetaSearchLink('/users/hobby/', $default);
$default = '<a rel="me" target="_blank" href="'.$default.'">'.$default.'</a>';
Данное решение не элегантное и я не знаю как оно повлияет на безопасность сайта, но оно работает.
В принципе всё, осталось решить одну глобальную проблему – как объяснить пользователям сайта, что это за поле и чего с ним делать. Но это уже совсем другая история.
Разумеется. Для этого и показал. Хотя о com_content_read2.tpl даже и не знал
можно просто скопировать код и сохранить как com_content_read2.tpl и при создании статьи использовать шаблон ?

общаюсь/работаю с InstantCMS
Сейчас колдую над рэйтингами.
Чтобы в снипетах присутствовали звёзды рейтинга нужно размечать кодом типо такого:
<div itemprop = "aggregateRating" itemscope itemprop = "http://schema.org/AggregateRating" > Rated <span itemprop = "ratingValue" > 3.5 </span> /5 based on <span itemprop = "reviewCount" > 11 </span> customer reviews </div>
При проверке на Гугле должен получаться такой вид:
а сейчас я получаю
Item 1
Type: schema.org/aggregaterating
ratingvalue = 5.0
bestrating = 5
bestrating = 5
ratingcount = 3
Item 1
ratingvalue = +1
bestrating = 1
reviewcount = 3
Все коды смотрите под спойлерами в посте №7а поделиться шаблонами, со страждущими, реально ?
Просто не решился показать прямые коды, так-как длинна поста станет аки скатерть самобранка на 300персон

Ну я бы не был так уверен. На одном сайте(на Joomla) я подключил профиль пользователя к профилю Google+. В итоге в снипете Гугла к некоторым статьям стали прикрепляться аватар из Google+. В итоге статьи с аватарам пошли вверх в ранжировании Гугла. Яндекс не отслеживал.на ранжирование это не влияет ни как
Было бы очень здорово вместо <span itemprop="contentRating"> прикрутить
<div itemprop = "aggregateRating" itemscope itemprop = "http://schema.org/AggregateRating" > Rated <span itemprop = "ratingValue" > 3.5 </span> /5 based on <span itemprop = "reviewCount" > 11 </span> customer reviews </div>
Я показал разметку от schema.org/ для статей(http://schema.org/Article) и её подраздела блоги( itemscope="BlogPosting") и +добавил раздел отзывы.
А если связать профиль пользователя сайта и профиль Google+ то вообще здорово будет.
Проверено на трёх сайтах — Google принимает на ура, а вот Яндекс акромя рецептов и товаров магазина ещё ничему не научился
хотя и утверждает, что поддерживает Схема.орг/ help.yandex.ru/webmaster/?id=1122758
А если связать профиль пользователя сайта и профиль Google+ то вообще здорово будет.
Проверено на трёх сайтах — Google принимает на ура, а вот Яндекс акромя рецептов и товаров магазина ещё ничему не научился

Не соглашусь. Микроразметка будет полезна и уже давно работающим сайтам. Тем более, что делов на пол часа. Жаль, что микроразметка поддерживает ещё не все типы страниц сайтов.
Интересная тема, особенно если только начинаешь создавать проект.
Приведу пару примеров, что сделал для своего проекта(пока только для статей и блогов)
шаблон/название шаблона/components/com_content_read.tpl
{* ======================= Заголовок статьи =============================== *} <div itemtype="http://schema.org/Article" itemscope=""> {if $article.showtitle} <h1 itemprop="headline" class="con_heading">{$article.title}</h1> {/if} {* ======================= Дата публикации =============================== *} {if $article.showdate} <div class="con_pubdate"> <span itemprop="datePublished">{if !$article.published}<span style="color:#CC0000">{$LANG.NO_PUBLISHED}</span>{else}{$article.pubdate}{/if}</span> - <span itemprop="author"><a rel="author" href="{profile_url login=$article.user_login}">{$article.author}</a></span> </div> {/if} {* =============== Cодержание статьи (список страниц) ========================= *} {if $is_pages} <div class="con_pt" id="pt"> <span class="con_pt_heading"> <a class="con_pt_hidelink" href="javascript:void;" onClick="{literal}$('#pt_list').toggle();{/literal}">{$LANG.CONTENT}</a> {if $cfg.pt_hide} [<a href="javascript:void(0);" onclick="{literal}$('#pt').hide();{/literal}">{$LANG.HIDE}</a>] {/if} </span> <div id="pt_list" style="{$pt_disp_style} width:100%"> <div> <ul id="con_pt_list"> {if ($tid+1 != $page)} {math equation="x + 1" x=$tid assign="key"} <li><a href="{$page.url}">{$page.title}</a></li> {else} <li>{$page.title}</li> {/if} {/foreach} <ul> </div> </div> </div> {/if} {* =============== Текст статьи =============================== *} <div class="con_text" style="overflow:hidden"> {if $article_image} <div class="con_image" style="float:left;margin-top:10px;margin-right:20px;margin-bottom:20px"> <img itemprop="image" src="/images/photos/medium/{$article_image}" border="0" alt="{$article_image}"/> </div> {/if} <span itemprop="articleBody">{$article_content}</span> </div> {* ============= Ссылка на тему форума ======================== *} {if $cfg.af_showlink && $forum_thread_id} <div class="con_forum_link"> <a href="/forum/thread{$forum_thread_id}.html">{$LANG.DISCUSS_ON_FORUM}</a> </div> {/if} {* ============= Ссылки редактирования и модерации ======================== *} {if $is_admin || $is_editor || $is_author} <div class="blog_comments"> {if !$article.published && ($is_admin || $is_editor)} <a class="blog_moderate_yes" href="/content/publish{$id}.html">{$LANG.ARTICLE_ALLOW}</a> | {/if} {if $is_admin || $is_editor || $is_author_del} <a class="blog_moderate_no" href="/content/delete{$id}.html">{$LANG.DELETE}</a> | {/if} {if $is_admin || $is_editor || $is_author} <a href="/content/edit{$id}.html" class="blog_entry_edit">{$LANG.EDIT}</a> {/if} </div> {/if} {* ================ Теги статьи =============================== *} {if $article.showtags} <span itemprop="keywords">{$tagbar}</span> {/if} {* =============== Рейтинг статьи =============================== *} {if $cfg.rating && $article.canrate} <div id="con_rating_block"> <div> <strong>{$LANG.RATING}: </strong><span id="karmapoints"><span itemprop="contentRating">{$karma_points}</span></span> <span style="padding-left:10px;color:#999"><strong>Голосов:</strong> <span itemprop="interactionCount" content="UserLikes:">{$karma_votes}</span></span> <span style="padding-left:10px;color:#999">{$article.hits|spellcount:$LANG.HIT:$LANG.HIT2:$LANG.HIT10}</span> </div> {if $karma_buttons} <div><strong>{$LANG.RAT_ARTICLE}:</strong> {$karma_buttons}</div> {/if} </div> {/if} {* ======================= Шаблон комментариев см. в файле com_comments_view.tpl =============================== *} </div><!--закрывающий див микроразметки-->
{* ========================== Вывод комментариев ================================== *} {* ====================================== Заголовок ============================================ *} <div itemprop = "reviews" itemscope itemtype = "http://schema.org/Review" > <div class="cmm_heading"> {$labels.comments} <span itemprop="reviews">({$comments_count})</span> </div> </div><!--закрывающий див микроразметки--> {* ========================= Сообщение о добавлении/удалении коммента ========================== *} {if $cm_message} <p style="color:green">{$cm_message}</p> {/if} <div class="cm_ajax_list"> {if $cfg.cmm_ajax} <script type="text/javascript"> {literal} var anc = ''; } {/literal} loadComments('{$target}', {$target_id}, anc); </script> {else} {$html} {/if} </div> {* ========================= Сообщение об ошибке добавления коммента ========================== *} {if $cm_error} <p style="color:red">{$cm_error}</p> {/if} {* ===================== Ссылки на добавление комментария и подписку ========================== *} <div id="addcommentlink" src="#"> <table cellspacing="0" cellpadding="2"> <tr> <td width="16"><img src="/templates/_default_/images/icons/comment.png" /></td> <td><a href="javascript:void(0);" id="addcommentlink" onclick="{$add_comment_js}">{$labels.add}</a></td> {if $cfg.subscribe} {if $is_user} {if !$user_subscribed} <td width="16"><img src="/templates/_default_/images/icons/subscribe.png"/></td>
- Предыдущая
- 1
- 2
- Показаны 16-25 из 25