• Уважаемый Гость! Если вы зарегистрировались на нашем форуме, значит вам нужна помощь! Мы всегда рады вам помочь, еще ни один пользователь не получил отказа! Но мы так же нуждаемся в Вашей поддержке. Проект полностью бесплатный, мы не имеем права требовать от вас денег, нам это и не нужно! Но от любой финансовой поддержки не откажемся. Проект развивается, но иногда очень тяжело его поддерживать, особенно в финансовом отношении. Если у вас есть возможность поддержать нас финансово, мы будем вам очень благодарны! С уважением, команда Оскласс Россия!
  • Изменение в правилах форума! В связи с огромным количеством вопросов поступающих в адрес технической поддержки мы решили изменить правила форума! Просим всех пользователей обратить внимание на данные изменения и четко их соблюдать!
  • Ребята, нуждаемся в программистах! Если хотите зарабатывать и есть время, пишите администраторам сайта. Есть база и инструменты, нужен опыт и знания =)
  • Уважаемые пользователи! На форуме появились разделы по работе с системой Yclas. Yclas - это скрипт доски объявлений. Нужны разработчики.

Поделюсь, Title и описание в категорию из админки.

LipGrad

Известный пользователь
Добрый день, решил поделиться, может кому понадобится, я добавил в админку в редакторе категорий форму для добавления описания в категорию и Title.
выглядит это так (рисунок 1). 001.jpg

НЕ забывайте сохранять копии файлов, а лучше всего что есть)

1. В бд создаем в oc_t_category_description новые столбцы как на рисунке 2 002.jpg

2. В файле Category.form.class.php (oc-includes/osclass/frm) эту функцию полностью static public function multilanguage_name_description заменить на код ниже:
PHP:
static public function multilanguage_name_description($locales, $category = null)
{
$tabs = array();
$content = array();
foreach($locales as $locale) {
$value = (isset($category['locale'][$locale['pk_c_code']])) ? $category['locale'][$locale['pk_c_code']]['s_name'] : "";
$name = $locale['pk_c_code'] . '#s_name';
$nameTextarea = $locale['pk_c_code'] . '#s_description';
$nameOpisanie = $locale['pk_c_code'] . '#s_opisanie';
$nameTitle = $locale['pk_c_code'] . '#s_title';
$valueTextarea = (isset($category['locale'][$locale['pk_c_code']])) ? $category['locale'][$locale['pk_c_code']]['s_description'] : "";
$valueOpisanie = (isset($category['locale'][$locale['pk_c_code']])) ? $category['locale'][$locale['pk_c_code']]['s_opisanie'] : "";
$valueTitle = (isset($category['locale'][$locale['pk_c_code']])) ? $category['locale'][$locale['pk_c_code']]['s_title'] : "";
$contentTemp = '<div id="'.$category['pk_i_id'].'-'.$locale['pk_c_code'].'" class="category-details-form">';
$contentTemp .= '<div class="FormElement"><label>' . __('Name') . '</label><input id="' . $name .'" type="text" name="' . $name .'" value="' . osc_esc_html(htmlentities($value, ENT_COMPAT, "UTF-8")) . '"/></div>';
// описание (Title) категории
$contentTemp .= '<div class="FormElement"><label>' . __('Title категории, не более 70 символов.') . ' <b><span id="blocktitle"></span></b></label>';
$contentTemp .= '<textarea id="' . $nameTitle . '" name="' . $nameTitle . '" rows="1">' . $valueTitle . '</textarea>';
 
// описание (Description) категории
$contentTemp .= '<div class="FormElement"><label>' . __('Description категории, не более 140 символов.') . ' <b><span id="block"></span></b></label>';
$contentTemp .= '<textarea id="' . $nameTextarea . '" name="' . $nameTextarea . '" rows="2">' . $valueTextarea . '</textarea>';
//текст категории
?>
<script type="text/javascript">
$(function() {
$("textarea[id='ru_RU#s_opisanie']").keyup(function count(){
number = $("textarea[id='ru_RU#s_opisanie']").val().length;
$("#count").html("Количество введенных символов: "+number);
});
});
</script>
<script type="text/javascript">
$(function() {
$("textarea[id='ru_RU#s_description']").keyup(function countRemainingChars(){
maxchars = 140;
number = $("textarea[id='ru_RU#s_description']").val().length;
if(number <= maxchars){
$("#block").html(maxchars-number + " символов осталось");
}
if(number == maxchars) {
$("ru_RU#s_description").attr({ maxlength: maxchars});
}
});
});
</script>
<script type="text/javascript">
$(function() {
$("textarea[id='ru_RU#s_title']").keyup(function countRemainingChars(){
maxchars = 70;
number = $("textarea[id='ru_RU#s_title']").val().length;
if(number <= maxchars){
$("#blocktitle").html(maxchars-number + " символов осталось");
}
if(number == maxchars) {
$("ru_RU#s_title").attr({ maxlength: maxchars});
}
});
});
</script>
<?php
$contentTemp .= '<div class="FormElement"><label>' . __('Description') . ' <b><span id="count"></span></b></label>';
$contentTemp .= '<textarea id="' . $nameOpisanie . '" name="' . $nameOpisanie . '" rows="20">' . $valueOpisanie . '</textarea>';
$contentTemp .= '</div></div></div>';
$tabs[] = '<li><a href="#'.$category['pk_i_id'].'-'.$locale['pk_c_code'].'">' . $locale['s_name'] . '</a></li>';
$content[] = $contentTemp;
}
echo '<div class="ui-osc-tabs osc-tab">';
echo '<ul>'.join('',$tabs).'</ul>';
echo join('',$content);
echo '</div>';
}
}
и добавляем в месте где хотите вывести описание код:
<p><?php echo nl2br(meta_opisanie()); ?></p> - стили сами подправите.
Пример вывода, рисунок 4 0004.jpg

Дискрипшен у меня так выводиться:
<?php if( meta_description() != '' ) { ?>
<meta name="description" content="<?php echo osc_esc_html(meta_description()); ?>" />
<?php } ?>
рисунок 5 0005.jpg


Добавляем функцию: в файл functions.php
Понимаю что в нем есть лишнее, кто захочет почистит сам).
PHP:
function meta_opisanie( ) {
	$text = '';
	// home page
	if( osc_is_home_page() ) {
		$text = osc_page_opisanie();
	}
	// static page
	if( osc_is_static_page() ) {
		$text = osc_highlight(osc_static_page_text(), 2000, '', '');
	}
	// search
	if( osc_is_search_page() ) {
 
	$category = osc_search_category_id();
	$category = ((count($category) == 1) ? $category[0] : '');
	$category = Category::newInstance()->findByPrimaryKey($category);
	if($category['s_opisanie']!=''){
	$text = $category['s_opisanie'];
	}
 
 
	}
 
 
	// listing
	if( osc_is_ad_page() ) {
   
			$text = osc_item_city() . ' - ' . osc_item_category() . ', ' . osc_highlight(osc_item_opisanie(), 120);
	}
 
	return (osc_apply_filter('meta_opisanie_filter', $text));
}
 
// Свой title
function meta_titleMy( ) {
$text = '';
// home page
if( osc_is_home_page() ) {
$text = osc_page_opisanie();
}
// static page
if( osc_is_static_page() ) {
$text = osc_highlight(osc_static_page_text(), 2000, '', '');
}
// search
if( osc_is_search_page() ) {
 
$category = osc_search_category_id();
$category = ((count($category) == 1) ? $category[0] : '');
$category = Category::newInstance()->findByPrimaryKey($category);
if($category['s_title']!=''){
$text = $category['s_title'];
}
 
 
}
 
 
// listing
if( osc_is_ad_page() ) {
 
$text = osc_item_city() . ' - ' . osc_item_category() . ', ' . osc_highlight(osc_item_titleMy(), 120);
}
return (osc_apply_filter('meta_titleMy_filter', $text));
}

Код для вывода своего title написал по теме ниже
 
Последнее редактирование:

LipGrad

Известный пользователь
И в head.php (создал отдельный head_search.php, копию основного, только title код заменил. И естественно в файле search.php изменил с head.php, на head_search.php). Поставил следующий код, заменил стандартный код для вывода title.
Код ниже выводит стандартный title, но если вы к категории через админку вбили свой title, то будет ваш на данной категории.

PHP:
<?php if(osc_esc_html(meta_titleMy())) { ?>
<title><?php echo osc_esc_html(meta_titleMy()); ?></title>
<meta name="title" content="<?php echo osc_esc_html(meta_titleMy()); ?>" />
<?php } else { ?>
<title><?php echo osc_esc_html(meta_title()); ?></title>
<meta name="title" content="<?php echo osc_esc_html(meta_title()); ?>" />
<?php } ?>

Не знаю на сколько доступно описал, у меня все работает, вроде ничего сложного нет.
 
Последнее редактирование:
Верх