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

Перенос выбора языка в шапку (Bender)

Dmitry

Новичок
Приветствую всех. Столкнулся с проблемой, сам осилить не могу, поэтому прошу помочь, если кто знает.

В общем, при создании темы Bender автора озарила гениальная идея - вставить выбор языка в подвал сайта. Я же, как человек простой и приземленный, не смог по достоинству оценить ход конем от маэстро и решил переставить выбор языка в шапку.

Я скопировал из footer.php этот код:

PHP:
<?php if ( osc_count_web_enabled_locales() > 1) { ?>
			<?php osc_goto_first_locale(); ?>
			<strong><?php _e('Language:', 'bender'); ?></strong>
			<?php $i = 0;  ?>
			<?php while ( osc_has_web_enabled_locales() ) { ?>
			<span><a id="<?php echo osc_locale_code(); ?>" href="<?php echo osc_change_language_url ( osc_locale_code() ); ?>"><?php echo osc_locale_name(); ?></a></span><?php if( $i == 0 ) { echo " &middot; "; } ?>
				<?php $i++; ?>
			<?php } ?>
		<?php } ?>

и вставил его в header.php.

Код работает в шапке, языки нормально переключаются. Но появляется проблема. Я попробовал как пользователь добавить на сайт несколько объявлений (модерация отключена), объявления появились на сайте - заголовок и описание, как и должно быть. Но когда я затем в админке вхожу в эти объявления для редактирования - они абсолютно пустые. Нет ни текста, ни заголовка, ни в одной из 2 языковых версий. Поэтому нет никакой возможности ни редактировать, ни сохранять эти объявления, потому что редактировать и сохранять просто нечего.

Подумал, что, возможно, проблему создают два одинаковых куска кода на странице, попробовал удалить код из footer.php, оставляя его только в header.php - не помогает.

Когда я удаляю из header.php скопированный из футера код выбора языка - все приходит в норму - объявления добавляются, заголовок и описание видны и на сайте, и в админке.

Но очень хочется облегчить юзерам жизнь, оставив выбор языка в шапке. Возможно, кроме простого копирования кода нужно внести еще какие-нибудь корректировки в папке oc-admin, потому что фактически объявления заносятся в базу и видны на сайте, проблемы наблюдаются только в админпанели.

Спросил на буржуйском форуме - там все молчат как партизаны. Наверное, пока в шоке от моего английского. Так что единственная надежда на родную поддержку). Версия движка 3.3.2.

Спасибо заранее.
 

Dis

Гость
Включите в админке использование всех этих языков и тогда над объявлением появятся табы для переключения языков, текст будет виден в той вкладке, на языке которой опубликовано объявление.
 

Dmitry

Новичок
Dis, в админке все языки включены, вкладки над объявлениями есть. Объявления пустые в обоих языковых версиях. Проверил также на теме Modern - там код работает из любого места - и из футера тоже, добавляемые объявления в админке видны и их можно редактировать. Проблема наблюдается только на теме Bender.

P.S. Спасибо за желание помочь.
 

administrator

Блудный сын.
Команда форума
Неужели просто пять минут нет желания подумать? Вы файлы просто сравнить можете?
 

dotof

Новичок
Я ещё не разбирал этот вопрос, просто думал что мож кто-то решил. Пока парюсь с языками, чтоб при подаче объявления высвечивался язык на котором пользователь зашёл на доску.
 

Dmitry

Новичок
dotof, нет, не решилось. Оказалось, что на бендере еще и табы не работают, и виджеты тоже. В общем, наплевал я на него и стал использовать модерн. Вам тоже советую.
 

administrator

Блудный сын.
Команда форума
Все немного проще, использование языка нужно разбирать. Т.к. совместное использование языков во всех сайтах достаточно тяжело правильно спроектировать. Мультиязычность лучше пока оставить, хотя решение есть.
Собственно тема по установке виджетов.
С проблемой мультиязычности разбираться нужно.
 

dotof

Новичок
с мультязычностью разобрался, сделал вкладки как в модерне, тока по умолчанию первая вкладка английского языка, а не твоего родного))
если кто знает как решить - отпишитесь)
а вот с переносом языка в шапку щас буду разбираться - флажки надо творить)
 

dotof

Новичок
Всё нормально с переносом языка в шапку. Работает. Если сделать вкладки мультиязычности при подаче объявления, то и проблем с переносом переключателя наверх нет.
Dmitry, поздно мне уже менять тему для OSC, уже люди привыкли и знают как и что. Не хочу отпугивать народ, мне проще докопаться и разобраться) - не ищем лёгких путей) хахахаха
 

Dmitry

Новичок
dotof, ясно, отлично! ) Мне в плане смены шаблона намного легче - посещаемость пока только в мечтах.
Кстати, думаю, что если выложите на форуме свое решение по вкладкам мультиязычности в бендере - обязательно кому-нибудь пригодится.
Удачи.
 

dotof

Новичок
OsClass – тема Bender – мультиязычность

Для того чтоб сделать вкладки мультиязычности в теме bender нужно определиться с количеством языков ( я использую 3 языка: русский, английский и сербский). Итак, заходим в файл oc-includes/osclass/frm/Item.form.class.php

Находим строку мультиязычности, где-то 409-я. Выделяем текст от этой строки, и до 438-й , выделяем всё что между этих строк:

static public function multilanguage_title_description($locales = null, $item = null) {
*
*
*
*
*
*
self::description_textarea('description', $locale['pk_c_code'], $description);

Меняем всё что выделили на следующие строки

static public function multilanguage_title_description($locales = null, $item = null) {
if($locales==null) { $locales = osc_get_locales(); }
if($item==null) { $item = osc_item(); }
$num_locales = count($locales);

if($num_locales>1) { echo '<div class="tabber"><input type="radio" name="odin" checked="checked" id="vkl1"/><label for="vkl1" style="padding-left: 10px; padding-right: 10px; padding-top: 20;">' . __('Version in English') . '</label><input type="radio" name="odin" id="vkl2"/><label for="vkl2" style="padding-left: 10px; padding-right: 10px; padding-top: 20;">' . __('Version in Russian') . '</label><input type="radio" name="odin" id="vkl3"/><label for="vkl3" style="padding-left: 10px; padding-right: 10px; padding-top: 20;">' . __('Version in Serbian') . '</label>'; };
foreach($locales as $locale) {
if($num_locales>1) { echo '<div class="tabbertab">'; };
if($num_locales>1) { echo '<h2 style="margin-top: 30px;">' . $locale['s_name'] . '</h2>'; };
echo '<div class="title" style="margin-bottom: 40px;">';
echo '<div><label for="title" style="/* border-style: none; */ /* margin-right: 20px; */float: left; width: 165px; padding-top: 7px; text-align: right; font-size: 0.85em;">' . __('Title') . ' *</label></div>';
$title = (isset($item) && isset($item['locale'][$locale['pk_c_code']]) && isset($item['locale'][$locale['pk_c_code']]['s_title'])) ? $item['locale'][$locale['pk_c_code']]['s_title'] : '';
if( Session::newInstance()->_getForm('title') != "" ) {
$title_ = Session::newInstance()->_getForm('title');
if( $title_[$locale['pk_c_code']] != "" ){
$title = $title_[$locale['pk_c_code']];
}
}
self::title_input('title', $locale['pk_c_code'], $title);
echo '</div>';
echo '<div class="description" style="margin-bottom: 20px;">';
echo '<div><label for="description" style="/* border-style: none; */ /* margin-right: 20px; */float: left; width: 165px; padding-top: 7px; text-align: right; font-size: 0.85em;">' . __('Description') . ' *</label></div>';
$description = (isset($item) && isset($item['locale'][$locale['pk_c_code']]) && isset($item['locale'][$locale['pk_c_code']]['s_description'])) ? $item['locale'][$locale['pk_c_code']]['s_description'] : '';
if( Session::newInstance()->_getForm('description') != "" ) {
$description_ = Session::newInstance()->_getForm('description');
if( $description_[$locale['pk_c_code']] != "" ){
$description = $description_[$locale['pk_c_code']];
}
}


Как вы видите, я сразу сюда вписывал css, мне так было удобнее и тут я их и оставил. Вы можете при желании сделать другие стили и перенести их в файл css.

Шаг номер два – это замена кода в файле oc-content/themes/bender/item-post.php
Находим строчку с ценой – это наш ориентир:

<?php if( osc_price_enabled_at_items() ) { ?>

И всё что выше этой строчки удаляем – всю первую часть файла. Всю до самого верха.

Вместо этого вставляем новую половину файла:


<?php
/*
Osclass – software for creating and publishing online classified
advertising platforms
*
Copyright (C) 2013 OSCLASS
*
This program is free software: you can redistribute it and/or
modify it under the terms of the GNU Affero General Public License
as published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
*
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
*
You should have received a copy of the GNU Affero General Public
License along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

// meta tag robots
osc_add_hook('header','bender_follow_construct');

osc_enqueue_script('jquery-validate');
bender_add_boddy_class('item item-post');
$action = 'item_add_post';
$edit = false;
if(Params::getParam('action') == 'item_edit'){
$action = 'item_edit_post';
$edit = true;
}
?>
<style>
.tabber > div, .tabber > input { display: none; }

.tabber label { padding: 5px; border: 0px solid #aaa; line-height: 28px; cursor: pointer; position: relative; bottom: 1px; }
.tabber input[type="radio"]:checked + label { border-bottom: 0px solid #fff; background-color: rgba(53, 195, 217, 0.26); border-radius: 5px; padding-bottom: 4px; }

.tabber > input:nth-of-type(1):checked ~ div:nth-of-type(1),
.tabber > input:nth-of-type(2):checked ~ div:nth-of-type(2),
.tabber > input:nth-of-type(3):checked ~ div:nth-of-type(3) { display: block; padding: 5px; border: 0px solid #aaa; background-color: rgba(53, 195, 217, 0.26); border-radius: 5px; }
</style>
<?php osc_current_web_theme_path('header.php') ; ?>
<?php ItemForm::location_javascript_new(); ?>
<?php if(osc_images_enabled_at_items()) ItemForm::photos_javascript(); ?>
<div class="form-container form-horizontal">
<div class="resp-wrapper">
<div class="header">
<h1><?php _e('Publish a listing', 'bender'); ?></h1>
</div>
<ul id="error_list"></ul>
<form name="item" action="<?php echo osc_base_url(true);?>" method="post" enctype="multipart/form-data" id="item-post">
<fieldset>
<input type="hidden" name="action" value="<?php echo $action; ?>" />
<input type="hidden" name="page" value="item" />
<?php if($edit){ ?>
<input type="hidden" name="id" value="<?php echo osc_item_id();?>" />
<input type="hidden" name="secret" value="<?php echo osc_item_secret();?>" />
<?php } ?>
<h2 style="padding-top: 20px; padding-bottom: 20px; width: 700px; line-height: 1.5; color: #35c3d9; font-weight: lighter;"><?php _e('Write your text on the language you prefer', 'bender'); ?></h2>
<div class="control-group">
<label class="control-label" for="select_1"><?php _e('Category', 'bender'); ?></label>
<div class="controls">
<?php ItemForm::category_select(null, null, __('Select a category', 'bender')); ?>
</div>
</div></div></div><div class="content add_item">
<div class="box general_info">
<div class="row" style="padding-bottom: 20px; padding-top: 20px; width: 680px;">
<?php ItemForm::multilanguage_title_description(); ?>
</div> </div>
<div class="form-container form-horizontal"><div class="resp-wrapper">



Но обратить внимание, в некоторых версиях Bender возникает ошибка при открытии страницы “опубликовать объявление”:

Ругается на следующее

// meta tag robots
osc_add_hook('header','bender_follow_construct');

osc_enqueue_script('jquery-validate');
bender_add_boddy_class('item item-post');
$action = 'item_add_post';
$edit = false;
if(Params::getParam('action') == 'item_edit'){
$action = 'item_edit_post';
$edit = true;
}


У кого-то boddy с двумя dd (например у меня) , а у кого-то с одной body (например у меня на тестовом сайте)

Так вот посмотрите сначала сколько у вас d.

Так же прошу обратить внимание, что тут мы используем CSS для создания вкладок.

<style>
.tabber > div, .tabber > input { display: none; }

.tabber label { padding: 5px; border: 0px solid #aaa; line-height: 28px; cursor: pointer; position: relative; bottom: 1px; }
.tabber input[type="radio"]:checked + label { border-bottom: 0px solid #fff; background-color: rgba(53, 195, 217, 0.26); border-radius: 5px; padding-bottom: 4px; }

.tabber > input:nth-of-type(1):checked ~ div:nth-of-type(1),
.tabber > input:nth-of-type(2):checked ~ div:nth-of-type(2),
.tabber > input:nth-of-type(3):checked ~ div:nth-of-type(3) { display: block; padding: 5px; border: 0px solid #aaa; background-color: rgba(53, 195, 217, 0.26); border-radius: 5px; }
</style>

Вы можете менять стили тут.


В результате я получил вот такую картину.



Можно глянуть и на моём сайте http://boardfor.me
 

Вложения

  • Screen Shot 2014-02-01 at 16.37.54.png
    Screen Shot 2014-02-01 at 16.37.54.png
    50,8 КБ · Просмотры: 16
Верх