четверг, 7 июня 2012 г.

WebAsyst ShopScript меню пользователя

В файле /published/SC/html/scripts/modules/test/class.test.php есть такая функция, которая выводит текст Регистрация, Вход с паролем и др, или Мой счет и выход, в зависимости от того авторизованы вы или нет, но что если вы захотите это меню вывести совсем не в списке и убрать всякие другие ссылки?

находим функцию
function cpt_divisions_navigation()
{

list($local_settings) = $this->__getFromStack('call_params');
if(isset($local_settings['local_settings']))$local_settings = $local_settings['local_settings'];
$pages = array();
$SubDivs = &DivisionModule::getBranchDivisions(DivisionModule::getDivisionIDByUnicKey('TitlePage'), array('xEnabled'=>1));
foreach ($SubDivs as $_SubDiv){

if($_SubDiv->UnicKey == 'order_status' && isset($_SESSION["log"])){continue;}

if($_SubDiv->UnicKey == 'auth' && isset($_SESSION["log"]))
{

$login_id = $_SubDiv->ID;
$_SubDiv = DivisionModule::getDivisionByUnicKey('logout');
$_SubDiv->ID = $login_id;
}
if($_SubDiv->UnicKey == 'register' && isset($_SESSION["log"])){

$register_id = $_SubDiv->ID;
$_SubDiv = DivisionModule::getDivisionByUnicKey('office');
$_SubDiv->ID = $register_id;
}
/* @var $_SubDiv Division*/
$pages[] = array(
'id' => $_SubDiv->ID,
'name' => translate($_SubDiv->Name),
'ukey' => $_SubDiv->UnicKey,
);

if(isset($local_settings['divisions']) && $local_settings['divisions']=='mobile' && ($_SubDiv->UnicKey=='office'||$_SubDiv->UnicKey=='register')){
$_SubDiv = DivisionModule::getDivisionByUnicKey('cart');
$pages[] = array(
'id' => $_SubDiv->ID,
'name' => translate(translate($_SubDiv->Name)),
'ukey' => $_SubDiv->UnicKey,
);
}
}

if(!count($pages))return ;

$allowed_pages = explode(':', $local_settings['divisions']);

print '<ul class="'.($local_settings['view'] == 'horizontal'?'horizontal':'vertical').'">';
foreach ($pages as $page){
if(!in_array($page['id'], $allowed_pages) && !(isset($allowed_pages[0]) && $allowed_pages[0]=='mobile'))continue;

print '<li><a href="'.xHtmlSetQuery($page['ukey']?'?ukey='.$page['ukey']:'?did='.$page['id']).'">'.xHtmlSpecialChars($page['name']).'</a></li>';
}
print '</ul>';
}


комментируем ее и ниже пишем свой аналог
function cpt_divisions_navigation()
        {

            if (isset($_SESSION["log"]))
                echo '<a href="/myaccount">Мой кабинет</a> | <a href="/logout">Выйти</a>';
            else
                echo '<a href="/auth">Вход с паролем</a> | <a href="/register">Регистрация</a>';
            
        }

3 комментария:

Анонимный комментирует...

Бредовое решение

Павел комментирует...

Поясните свое мнение, если мне не нужно мультиязычности и других фишек, если решение применяется только в моем проекте и не требует ни какой гибкости и настраиваемости

Анонимный комментирует...

Полный бред.
cpt_divisions_navigation не только для ссылок логина.

Отправить комментарий