18ответ(ов) в теме
Валерий
не в сети 4 года
На сайте с 20.03.2015
Участник
Тем 35
Сообщения 87
1
15:41
Версия WP-Recall: 16.8.7

Как сделать вкладки ЛК на всех страницах сайта?
На сайте было решение, но для более ранних версий плагина.

Кое в чем разобрался, но не до конца...

1. Что бы отобразить вкладки на других страницах, в файле rcl-functions.php в функции rcl_register_tabs закомментируем строку:

remove_action('wp','rcl_register_tabs',10);
add_action('wp','rcl_register_tabs_remove',10);
function rcl_register_tabs_remove(){
   // if(is_admin()||!rcl_is_office()) return false; 
    $rcl_tabs = rcl_get_tabs(); 
    if(!$rcl_tabs) return false;   
    if (!class_exists('Rcl_Tab')) 
        require_once RCL_PATH.'classes/class-rcl-tab.php'; 
    foreach($rcl_tabs as $tab){
        $Rcl_Tab = new Rcl_Tab($tab);
        $Rcl_Tab->register_tab();
    } 
}

2. В файле class-rcl-tab.php необходимо скорректировать функцию print_tab_button, добавив user_ID.
Только там нет хуков... Получается как то так:

   function print_tab_button($content){
        global $user_LK,$user_ID;
 if(rcl_is_office()) {	$content .= $this->get_tab_button($user_LK);}		
 if(is_admin()||!rcl_is_office()) {	$content .= $this->get_tab_button($user_ID);}	
        return $content;
    }

3. Ссылки на приватные вкладки вне кабинета получаются корректными, но не кликабельными, к ним применяется какой то скрипт.

Как все до ума довести?

0
Вова (Otshelnik-Fm)
не в сети 48 минут
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18654
2
15:55

Если у вас постоянен набор вкладок - почему бы не вывести под свой проект так

Вы не можете просматривать опубликованные ссылки
1
Андрей CS
не в сети 27 минут
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16928
3
15:59

что значит "отобразить вкладки на других страницах"? Вывести список доступных вкладок пользователя за пределами ЛК?

0
Валерий
не в сети 4 года
На сайте с 20.03.2015
Участник
Тем 35
Сообщения 87
4
16:53

Андрей CS сказал(а)
что значит "отобразить вкладки на других страницах"? Вывести список доступных вкладок пользователя за пределами ЛК?

Да, верно, что бы функция rcl_area_menu выводила список за пределами ЛК. Например что бы на странице продукта пользователя, выводилось вкладки владельца этого продукта.

Otshelnik-Fm сказал(а)
Если у вас постоянен набор вкладок - почему бы не вывести под свой проект так

Вы не можете просматривать опубликованные ссылки

Спасибо за наводку, но хотелось бы вывести всю область вкладок...

0
Вова (Otshelnik-Fm)
не в сети 48 минут
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18654
5
16:57

Валерий сказал(а)
но хотелось бы вывести всю область вкладок...

что это значит? И мобильное меню чтоли когда кнопки переполнены? - не думаю что так выйдет

А вот тот метод что я предложил - делаете свои кнопки и вставляете полученные методом урл в них. Список вкладок вам известен
Да - этот метод не универсален (если его отдавать другим юзерам не зная их набор вкладок) - но под конкретный проект где известны id вкладок подойдет на 100%

0
Андрей CS
не в сети 27 минут
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16928
6
17:11

как то так:

global $user_ID;

$rcl_tabs = rcl_get_tabs();

if (!class_exists('Rcl_Tab')) 
	require_once RCL_PATH.'classes/class-rcl-tab.php';

$content = '<ul>';
foreach($rcl_tabs as $tab){
	$Rcl_Tab = new Rcl_Tab($tab);
	$content .= '<li>'.$Rcl_Tab->get_tab_button($user_ID).'</li>';
}
$content .= '</ul>';

return $content;

Редакции сообщения
23.11.2017 17:11Андрей CSПричина: поправил код
23.11.2017 17:12Андрей CSПричина: поправил код
1
Валерий
не в сети 4 года
На сайте с 20.03.2015
Участник
Тем 35
Сообщения 87
7
17:31

Андрей CS, спасибо, крутое решение, только наверное где то в коде ошибка или я затупил...

Otshelnik-Fm, Я имел ввиду Область "Menu", ваш метод тоже хороший, подумаю может и так и сделаю, спасибо.

0
Андрей CS
не в сети 27 минут
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16928
8
17:35

Валерий сказал(а)
где то в коде ошибка или я затупил

а что за проблема то?

0
Вова (Otshelnik-Fm)
не в сети 48 минут
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18654
9
17:43

Валерий сказал(а)
имел ввиду Область "Menu", ваш метод тоже хороший, подумаю может и так и сделаю, спасибо.

- я понял что про него. Но например когда вы в настройках реколл выводите его в горизонтальном представлении - то переполнившись по горизонтали в нем скрываются не уместившиеся элементы скриптом. И выводятся в мобильном меню по клику

Вы не можете просматривать опубликованные ссылки

- вот такое поведение не скопировать. Надо значительно переписывать скрипт этого меню.

p.s. Решение что дал Андрей я посмотрел - работает.

Оффтоп
Я не хотел хвалиться раньше времени но подобное решение я делал для своего нового сайта - но сайт пока не открыт и отдавать этот доп еще я не готов. Хотя там есть значительная гибкость. В качестве анонса - да, такой доп появится от меня. Но не ранее чем через неделю-две.

1
Валерий
не в сети 4 года
На сайте с 20.03.2015
Участник
Тем 35
Сообщения 87
10
18:45

Андрей CS сказал(а)

Валерий сказал(а)
где то в коде ошибка или я затупил

а что за проблема то?

Все ок, работает, извиняюсь, спасибо!

0
Валерий
не в сети 4 года
На сайте с 20.03.2015
Участник
Тем 35
Сообщения 87
11
20:55

Можете еще пожалуйста подсказать, как вывести вкладки именно из области Menu?
Желательно в заданном в Менеджере вкладок порядке или задать перечень вкладок вручную ручную. Возможно ли такое?

Андрей CS сказал(а)
как то так:

global $user_ID;

$rcl_tabs = rcl_get_tabs();

if (!class_exists('Rcl_Tab')) 
	require_once RCL_PATH.'classes/class-rcl-tab.php';

$content = '<ul>';
foreach($rcl_tabs as $tab){
	$Rcl_Tab = new Rcl_Tab($tab);
	$content .= '<li>'.$Rcl_Tab->get_tab_button($user_ID).'</li>';
}
$content .= '</ul>';

return $content;

0
Вова (Otshelnik-Fm)
не в сети 48 минут
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18654
12
21:39

Валерий сказал(а)
или задать перечень вкладок вручную ручную

я все равно не понимаю - почему вы взялись за сложное для себя, игноря простое?

Otshelnik-Fm сказал(а)
Если у вас постоянен набор вкладок - почему бы не вывести под свой проект так

Вы не можете просматривать опубликованные ссылки

это все равно что использовать ЧПУ станок, не умея его программировать, для того чтобы сделать в фанерном листе всего 10 дырок. Хотя под рукой лежит дрель...

0
Андрей CS
не в сети 27 минут
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16928
13
21:45

Элементарно. В этом цикле

foreach($rcl_tabs as $tab){
	$Rcl_Tab = new Rcl_Tab($tab);
	$content .= '<li>'.$Rcl_Tab->get_tab_button($user_ID).'</li>';
}

делайте проверку на область вывода меню, указанную в $tab['output'], может быть ничего не указано, тогда это тоже menu

0
Валерий
не в сети 4 года
На сайте с 20.03.2015
Участник
Тем 35
Сообщения 87
14
14:19

Otshelnik-Fm сказал(а)
я все равно не понимаю - почему вы взялись за сложное для себя, игноря простое?

Набор кнопок может меняться в будущем у меня, да и хочется разобраться... простое решение оставлю на крайний случай наверное...

Андрей CS сказал(а)
делайте проверку на область вывода меню, указанную в $tab['output'], может быть ничего не указано, тогда это тоже menu

Сделал так, все работает:

foreach($rcl_tabs as $tab){
 if(isset($tab['output'])&&$tab['output']!='menu') continue;     
	$Rcl_Tab = new Rcl_Tab($tab);
	$content .= $Rcl_Tab->get_tab_button($user_ID);
}

Стал вопрос, как правильно задать сортировку вкладок согласно настройкам, за это отвечает кажется эта функция rcl_get_area_options();, подскажите как её правильно вставить в цикл?

0
Андрей CS
не в сети 27 минут
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16928
15
14:23

перед циклом пропустите вкладки через фильтр:

$rcl_tabs = apply_filters('rcl_tabs',$rcl_tabs);

0
Валерий
не в сети 4 года
На сайте с 20.03.2015
Участник
Тем 35
Сообщения 87
16
14:43

Спасибо, но фильтр почему то не срабатывает, вот полный код:

global $user_ID;
$rcl_tabs = rcl_get_tabs();

if (!class_exists('Rcl_Tab')) 
	require_once RCL_PATH.'classes/class-rcl-tab.php';
$content = '<div id="lk-menu" class="rcl-menu">';

$rcl_tabs = apply_filters('rcl_tabs',$rcl_tabs);	
foreach($rcl_tabs as $tab){
if(isset($tab['output'])&&$tab['output']!='menu') continue;      
	$Rcl_Tab = new Rcl_Tab($tab);
	$content .= $Rcl_Tab->get_tab_button($user_ID);
}
$content .= '</div>';
echo $content;	

0
Андрей CS
не в сети 27 минут
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16928
17
14:53

попробуйте вместо фильтра пропустить через функцию rcl_add_custom_tabs()

$rcl_tabs = rcl_add_custom_tabs($rcl_tabs);

0
Валерий
не в сети 4 года
На сайте с 20.03.2015
Участник
Тем 35
Сообщения 87
18
15:08

Сделал, но на результат все так же не влияет...

0
Вы не имеете права на публикацию сообщений в этой теме