Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

Нужно: у залогиненного кнопка Вход менялась на Выход

Доброго времени суток
Уверен, что это можно сделать, но не знаю как)


ну так а чего стандартный шаб то не открыть и не посмотреть там?)

{if $account}{if $smarty.session.customer_id}
<a href="{$logoff}">{#link_logoff#}</a>
{else}
<a href="{$login}">{#link_login#}</a>
{/if}
{/if}


Сомневаюсь уже что кто-либо ответит, но надежда есть))
Данная конструкция работает только если ее выводить через index.html... а как заставить работать ее в боксах?
На примере бокса content (вообще в его копии надо, но там аналогия). Его содержимое:


{config_load file="$language/lang.conf" section="boxes"}
<h2>{#heading_infobox#}</h2>
<ul>
{$BOX_CONTENT}
</ul>


Если добавить нашу конструкцию, получим:

{config_load file="$language/lang.conf" section="boxes"}
<h2>{#heading_infobox#}</h2>
<ul>
{$BOX_CONTENT}
<li>
{if $account}{if $smarty.session.customer_id}
<a href="{$logoff}">Выход</a>
{else}
<a href="{$login}">Вход</a>
{/if}
{/if}
</li>
</ul>


Но на выходе в html коде получим просто пустой элемент спика <li></li>. Прошерстил поиском по форуму и кешу яндекса - ноль. Прошу помощи.

Связываю с темой переменных smarty в боксах - http://www.shopos.ru/forum/index.php?topic=7034.0


Пробуйте

{if $smarty.session.customer_id}
<a href="{$logoff}">{#link_logoff#}</a>
{else}
<a href="{$login}">{#link_login#}</a>
{/if}


Да, спасибо, работает отчасти... на фурычат только {$login} и {$logoff} . Вполне, конечно, можно обойтись заменой на ../login.php и ../logoff.php соответственно, но интересно почему переменные не работают.


Все переменные РАБОТАЮТ.
Выводят не то, что Вам надо - это совсем другая песня.
Выводят пустой текст - значит, не определены предварительно.
Если интересно - разбирайтесь, как устроена система, где  и как определяются значения, почем определены в одном случае и не определены в другом...


В том-то и дело что не знаю где определить эти переменные для корректной работы не в index.html, а в html файлах бокса. Вот поэтому и написал на форум за помощью.
Да и разбираюсь как устроена система постепенно.


themes/cleanshop/source/boxes
themes/cleanshop/boxes


Мы видимо не совсем понимаем друг друга, но спасибо за помощь вам. Первая конструкция реально помогла.



В том-то и дело что не знаю где определить эти переменные для корректной работы не в index.html, а в html файлах бокса. Вот поэтому и написал на форум за помощью.
Да и разбираюсь как устроена система постепенно.


Определить эти переменные для корректной работы где-то тут:
themes/cleanshop/source/boxes
themes/cleanshop/boxes



Мы видимо не совсем понимаем друг друга, но спасибо за помощь вам. Первая конструкция реально помогла.

Вам правильно все ответили.
Хотите, чтобы что-то выводилось в определенном блоке, то правите блок. Хотите, чтобы везде, то правите все, либо класс osTemplate.
Чтобы {$login} и {$logoff} работали везде, нужно везде определить их. Пример тому файл \includes\header.php, именно в нем они определяются, например
$osTemplate->assign('login', os_href_link(FILENAME_LOGIN, '', 'SSL'));

Чтобы работало в другом месте, нужно в определенном файле, который отвечает на вывод добавить аналогичную строку, указав правильно только объект шаблонизатора, который там определен.
Т.е. вместо $osTemplate может быть $module или $box. Примеры практически в любом php файле бокса.


вот вот вот вот вот вот буду здесь рыть точно) клево что еще хоть два человека помогают
P.S.
Млин, как жалко что проект шопоса медленно но верно загнивает и osc-cms не развивается особо...готов тратить силы, время и средства на развитие, плохо


Дайте пример того что хотите выводить и где выводить. я подскажу.


Да пример простой... есть копия бокса, которая выводит главное меню. html файл бокса:


{config_load file="$language/lang.conf" section="boxes"}
<ul id="mainmenu">
<li class="mainpage"><a href="{$index}" title="main"></a></li>
{$BOX_CONTENT}
<li>
{if $smarty.session.customer_id}
<a href="../logoff.php">Выход</a>
{else}
<a href="../login.php">Вход</a>
{/if}
</li>
</ul>

изначально вместо относительных ссылок ../login(off).php были переменные {$login} и {$logoff}, которые, как правильно сказал korshunov, работали, но выводили пустые значения. На самом деле можно все оставить и как я написал, только хочется разобраться чтобы потом меньше нависать с подобными вопросами.

----------------------
Попробовал в \includes\header.php вставить следующую конструкцию по аналогии и хрен...

if (isset($_SESSION['customer_id'])) {

$box->assign('logoff',os_href_link(FILENAME_LOGOFF, '', 'SSL'));
}

$box->assign('login', os_href_link(FILENAME_LOGIN, '', 'SSL'));


Так а что нужно? Чтобы в блоке выводились ссылки через {$login} и {$logoff} ?

В php коде бокса добавить две строки
$box->assign('login', os_href_link(FILENAME_LOGIN, '', 'SSL'));
$box->assign('logoff', os_href_link(FILENAME_LOGOFF, '', 'SSL'));



В php коде бокса добавить две строки
$box->assign('login', os_href_link(FILENAME_LOGIN, '', 'SSL'));
$box->assign('logoff', os_href_link(FILENAME_LOGOFF, '', 'SSL'));

Да, благодарю! Надо же прям в файле бокса их объявлять....я начал в хедере и хотел потом передать боксу.


Источник



Copyright ShopOS