1 Отредактировано Олег (14.09.2016 01:50:44)

Тема: Конструкция файла layout.tpl и зачем нужен файл jquery.oneclickcart.js

1. Подскажите, зачем в дефолтной теме "классическая" подключается файл "jquery.oneclickcart.js", если его все равно нету в папке "resource/js" и для чего вообще в layout.tpl используется следующая конструкция:

...
{assign var=shop_config value=ConfigLoader::byModule('shop')}
{if $shop_config}
    {addjs file="%shop%/jquery.oneclickcart.js"}
{/if}
{addmeta http-equiv="X-UA-Compatible" content="IE=Edge" unshift=true}
{$app->meta->add(['name' => 'viewport', 'content' => 'width=device-width, initial-scale=1.0'])|devnull}

{if $shop_config===false}{$app->setBodyClass('shopBase')}{else}{$app->setBodyClass('noShopBase')}{/if}

{$app->setDoctype('HTML')}


Судя по названию, это что-то типа покупки в один клик?
Обязательна ли эта конструкция и где вообще это файл?

...

2. Подскажите также по-поводу подключения bootstrap.css
В инструкции к Bootstrap сказано, что мета-тэги:

<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->

ОБЯЗАТЕЛЬНО подключать первыми ПЕРЕД любым другим контентом в header, соответственно bootstrap.css должен (как я понимаю) также подключаться только ПОСЛЕ этих тэгов.

В предложенных вами layout.tpl СПЕРВА подключаются все .css и .js файлы, а потом уже идут все остальные мета-тэги.
Влияет ли это на генерируемый index.html? Можно ли (и нужно ли в такой случае) в layout.tpl менять местами эти строки (мета-тэги и подключение css)?

Спасибо

Повысить оценку Понизить оценку

Re: Конструкция файла layout.tpl и зачем нужен файл jquery.oneclickcart.js

{addjs file="%shop%/jquery.oneclickcart.js"}

Скрипт отвечает за обработку купить в один клик(купить по телефону) в корзине у Вас. А т.к. корзина может быть где угодно, то скрипт подключается в layout.tpl, который используется всегда.
%shop% означает, что скрипт лежит в папке /modules/shop/view/js/
Это стандартная папка для js скриптов модуля, если он указан как в этом случае в пути, а вот если было бы

{addjs file="jquery.oneclickcart.js"}

То тогда подключалось бы из Вашей темы оформления resourse/js

Т.е. 
{assign var=shop_config value=ConfigLoader::byModule('shop')} {* Пытаемся получить конфиг модуля магазин *}
{if $shop_config} {* Проверяем, если модуль магазин существует, то подключает js из этого модуля (В витрине его нет) *}
    {addjs file="%shop%/jquery.oneclickcart.js"}
{/if}
{addmeta http-equiv="X-UA-Compatible" content="IE=Edge" unshift=true} {* Добавление Мета тега *}
{$app->meta->add(['name' => 'viewport', 'content' => 'width=device-width, initial-scale=1.0'])|devnull} {* Добавление Мета тега особого для мобильного масштабирования *}

{* Если модуль магазин, или нет, то ставим BODY соотвествуюдщий класс *}
{if $shop_config===false}{$app->setBodyClass('shopBase')}{else}{$app->setBodyClass('noShopBase')}{/if} 

{$app->setDoctype('HTML')}  {* Устанавливаем Doctype HTML *}

В предложенных вами layout.tpl СПЕРВА подключаются все .css и .js файлы, а потом уже идут все остальные мета-тэги.
Влияет ли это на генерируемый index.html? Можно ли (и нужно ли в такой случае) в layout.tpl менять местами эти строки (мета-тэги и подключение css)?

Да это так, но Smarty(шаблонизатор который мы используем) лишь интерпретирует подключение, итоговый вывод несколько другой. Посмотрите исходный код Вашего HTML и всё станет на свои места.

3

Re: Конструкция файла layout.tpl и зачем нужен файл jquery.oneclickcart.js

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

Проясните, пожалуйста, еще такой вопрос. При построении темы оформления по сетке Bootstrap,
в Конструкторе сайта --> Настройка блоков есть такие пункты, как внешний и внутренний шаблоны (хотя, возможно, они есть и не только в сетке по Bootstrap, но меня сейчас интересует именно он).

Так вот, не могли бы вы разъяснить, для чего нужны эти внешние и внутренние шаблоны, а также другие настройки контейнера?

http://savepic.ru/11395983.jpg

Правильно ли я понял, что внешний шаблон, это некая оборачивающая конструкция, типа встроенных в Bootstrap классов, напр., <div class="jumbotron">...</div>.
Для чего же тогда нужен внутренний шаблон?
Или же там и должен стоять код, который идет внутри внешнего <div>...</div> ?

Как тогда посоветуете правильно оформить в конструкторе какой-то стандартный код Bootstrap?
Напр, тот же самый jumbotron из стандартного шаблона Bootstrap:

  
    <!-- Main jumbotron for a primary marketing message or call to action -->
    <div class="jumbotron">
      <div class="container">
        <h1>Hello, world!</h1>
        <p>This is a template for a simple marketing or informational website</p>
        <p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more &raquo;</a></p>
      </div>
    </div>

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

1. Делаю новый пустой Контейнер.
2. С его настройками ширина и название все понятно.
2. Пункт CSS-класс оборачивающего блока устанавливаю, как jumbotron (поскольку в нашем примере, класс jumbotron находится за пределами класса container
3. Настройку CSS класс оставляю пустой, так как класс автоматом ставится, как container? Или же нужно явно задать здесь этот класс или какой-то другой (напр., пользовательский?)
4. внешний элемент не трогаю, хотя можно, при желании, обернуть в тэг типа <section>
5. Внешний шаблон в данном случае не использую (так как что в него оборачивать?)
6. Для внутреннего шаблона делаю новый .tpl файл с кодом:

        <h1>Hello, world!</h1>
        <p>This is a template for a simple marketing or informational website</p>
        <p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more &raquo;</a></p>

7. Сохраняю


----
Правильно ли я все понял?
Спасибо

Повысить оценку Понизить оценку

4

Re: Конструкция файла layout.tpl и зачем нужен файл jquery.oneclickcart.js

Судя по всему, понял неправильно, так как в сгенерированном коде класс jumbotron не появился вообще -((

Повысить оценку Понизить оценку

5 Отредактировано Закусило Александр (14.09.2016 14:18:00)

Re: Конструкция файла layout.tpl и зачем нужен файл jquery.oneclickcart.js

CSS оборачивающего блока добавляется к Внешнему элементу, который вы поставите. Т.е. надо было указать ещё внешний элемент.

Внешний шаблон, это тот который будет оборачивать весь контейнер.
Выглядит он примерно так:

<div>
    {$wrapped_content} {* Перенная которая хранит внутренее содрежимое *}
</div>

Сама иерархия выгляди вот так:

Внешний шаблон, если есть
    Оборачивающий элемент, если есть
         <div class="contаinter">
                Внутренний шаблон, если есть
                        Само содержимое

6

Re: Конструкция файла layout.tpl и зачем нужен файл jquery.oneclickcart.js

Попробовал двумя способами.
Сперва обернул в <div> CSS-класс оборачивающего блока и назвал его jumbotron.
Получилось !!! -))
Единственное только, что в коде все дивы (открывающие и закрывающие) в одну строку идут,
а также класс container пишется с пробелом в конце:

<div class="jumbotron"><div class="container ">Все div в одну строку, в классе container пробел в конце</div></div>

Потом попробовал, как Вы показали через внешний шаблон. Так чуть дольше получается, так как нужно сделать внешний шаблон, зато код ровнее смотрится. Но в классе container все равно пробел между кавычками. Я так понимаю, разницы нет, как делать? Как больше нравится?

Теперь бы еще понять, как правильно подменять контент от моего HTML-шаблона на код  смарти-конструкций ReadyScript.

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

Видимо, только по примерам из ваших шаблонов?

Огромное спасибо за информацию

Повысить оценку Понизить оценку