Категории

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

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

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

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

Расширения

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

Модули

Шаблоны

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

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

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

Бизнес книги

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

Магазины на ShopOS

Хостинг для ShopOS

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

Курилка

Плагин "Управление боксами"

Хотел выложить плагин с релизом нового платного шаба, но решил, что чем раньше, тем лучше. Может что добавлю еще в него.

Плагин "Управление боксами" дает возможность перемещать или выключать боксы(блоки) на главной странице сайта.

Этот плагин основан на каком-то моде для xtc. Переделана внешняя часть, адаптировано под shopos, добавлена страница списка блоков, убраны не нужные штуки. Пока на ней только просмотр. сейчас делаю удаление и добавление блоков в автоматическом режиме.
Чтобы не нужно было выполнять запросы в БД для добавления блока.
Пока правда застопорился на выводе в шаблоне.

Установка.
1 - закачать плагин в папку плагинов
2 - активировать
3 - в файле index.html вашего шаблона, найти все теги которые выводят боксы(а это у нас {$box_.....}) и заменить их все на такой код

ДЛЯ ЛЕВОЙ КОЛОНКИ

{php}
$boxes_data = load_boxes();
foreach($boxes_data as $box) {
if($box['position'] == 'left') {
switch($box['name']) {
case 'blog': {/php} {$box_BLOG} {php}break;
case 'vote': {/php} {$box_vote} {php}break;
case 'products_scroll': {/php} {$box_products_scroll} {php}break;
case 'categories': {/php} {$box_CATEGORIES} {php}break;
case 'content': {/php} {$box_CONTENT} {php}break;
case 'add_quickie': {/php} {$box_ADD_QUICKIE} {php}break;
case 'information': {/php} {$box_INFORMATION} {php}break;
case 'last_viewed': {/php} {$box_LAST_VIEWED} {php}break;
case 'reviews': {/php} {$box_REVIEWS} {php}break;
case 'search': {/php} {$box_SEARCH} {php}break;
case 'specials': {/php} {$box_SPECIALS} {php}break;
case 'featured': {/php} {$box_FEATURED} {php}break;
case 'latestnews': {/php} {$box_LATESTNEWS} {php}break;
case 'articles': {/php} {$box_ARTICLES} {php}break;
case 'articlesnew': {/php} {$box_ARTICLESNEW} {php}break;
case 'authors': {/php} {$box_AUTHORS} {php}break;
case 'cart': {/php} {$box_CART} {php}break;
case 'login': {/php} {$box_LOGIN} {php}break;
case 'admin': {/php} {$box_ADMIN} {php}break;
case 'downloads': {/php} {$box_DOWNLOADS} {php}break;
case 'affilate': {/php} {$box_AFFILIATE} {php}break;
case 'whatsnew': {/php} {$box_WHATSNEW} {php}break;
case 'newsletter': {/php} {$box_NEWSLETTER} {php}break;
case 'bestsellers': {/php} {$box_BESTSELLERS} {php}break;
case 'infobox': {/php} {$box_INFOBOX} {php}break;
case 'currencies': {/php} {$box_CURRENCIES} {php}break;
case 'languages': {/php} {$box_LANGUAGES} {php}break;
case 'manufacturers': {/php} {$box_MANUFACTURERS} {php}break;
case 'manufacturers2': {/php} {$box_MANUFACTURERS_INFO} {php}break;
case 'faq': {/php} {$box_FAQ} {php}break;
case 'whois_online': {/php} {$box_whois_online} {php}break;
}
}
}
{/php}


ДЛЯ ПРАВОЙ КОЛОНКИ
{php}
$boxes_data = load_boxes();
foreach($boxes_data as $box) {
if($box['position'] == 'right') {
switch($box['name']) {
case 'blog': {/php} {$box_BLOG} {php}break;
case 'vote': {/php} {$box_vote} {php}break;
case 'products_scroll': {/php} {$box_products_scroll} {php}break;
case 'categories': {/php} {$box_CATEGORIES} {php}break;
case 'content': {/php} {$box_CONTENT} {php}break;
case 'add_quickie': {/php} {$box_ADD_QUICKIE} {php}break;
case 'information': {/php} {$box_INFORMATION} {php}break;
case 'last_viewed': {/php} {$box_LAST_VIEWED} {php}break;
case 'reviews': {/php} {$box_REVIEWS} {php}break;
case 'search': {/php} {$box_SEARCH} {php}break;
case 'specials': {/php} {$box_SPECIALS} {php}break;
case 'featured': {/php} {$box_FEATURED} {php}break;
case 'latestnews': {/php} {$box_LATESTNEWS} {php}break;
case 'articles': {/php} {$box_ARTICLES} {php}break;
case 'articlesnew': {/php} {$box_ARTICLESNEW} {php}break;
case 'authors': {/php} {$box_AUTHORS} {php}break;
case 'cart': {/php} {$box_CART} {php}break;
case 'login': {/php} {$box_LOGIN} {php}break;
case 'admin': {/php} {$box_ADMIN} {php}break;
case 'downloads': {/php} {$box_DOWNLOADS} {php}break;
case 'affilate': {/php} {$box_AFFILIATE} {php}break;
case 'whatsnew': {/php} {$box_WHATSNEW} {php}break;
case 'newsletter': {/php} {$box_NEWSLETTER} {php}break;
case 'bestsellers': {/php} {$box_BESTSELLERS} {php}break;
case 'infobox': {/php} {$box_INFOBOX} {php}break;
case 'currencies': {/php} {$box_CURRENCIES} {php}break;
case 'languages': {/php} {$box_LANGUAGES} {php}break;
case 'manufacturers': {/php} {$box_MANUFACTURERS} {php}break;
case 'manufacturers2': {/php} {$box_MANUFACTURERS_INFO} {php}break;
case 'faq': {/php} {$box_FAQ} {php}break;
case 'whois_online': {/php} {$box_whois_online} {php}break;
}
}
}
{/php}


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

Если есть предложения, то пишите.
Так же хотел бы попросить глянуть PHP код плагина. Там есть две функции которые надо бы глянуть. В правильном ли месте они вызываются.



3 - в файле index.html вашего шаблона, найти все теги которые выводят боксы(а это у нас {$box_.....}) и заменить их все на такой код

А зачем столько одинаковых кейсов в шаблоне? Не проще ли эти кейсы запихать в пхп, а в шаблоне проставить {$box_CONTROL##}, где ## числа 01, 02, 03 и т.д.?


я думал сделать малость по другому.
В шаблоне выводить просто {$box_BOXES_LEFT}, {$box_BOXES_RIGHT}.



я думал сделать малость по другому.
В шаблоне выводить просто {$box_BOXES_LEFT}, {$box_BOXES_RIGHT}.

Ну или так...


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


И че дальше? У шаблона нет конфига. В любом случае нужно будет ковырять html файл.
Убрать кейсы блоков из списка и все. Или для корзины в шапке делать регион и туда помещать один блок корзины?
Когда те же телодвижения нужно будет сделать для  того, чтобы убрать кейс корзины или вставить тег региона???? Не вижу проблемы в принципе.

Регионы будут. Но будет всего 4 региона: лево, право, верх, них. Ибо делать больше смысла нету. И то сомневаюсь в нужности последних двух. Потому как не вижу смысла пихать несколько боксов выше или ниже контента.
Если есть такая необходимость, то хотелось бы аргументированного ответа. Зачем управление боксами выше и ниже контена? Будут блоки часто меняться?
И возникнет проблема того, что для блоков будет нужен одинаковый шаблон оформления, чтобы они прыгали по регионам. От сюда вопрос. Если некоторым блокам нужно будет править внешний вид, то что мешает убрать кейс блока и просто поставить бокс в нужного место родной меткой?


регионов может быть сколько угодно... мы и по центру можем их выводить..
реализация мб типа

$tmpl->assign('region_header', boxShow("header"));

<div id="header">
    {$region_header}
</div>

определяем метку гдет и в шаблоне будет к примеру {$region_header} {$region_sidebar} {$region_footer} и т.д.

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

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

>Если есть такая необходимость, то хотелось бы аргументированного ответа. Зачем управление >боксами выше и ниже контена? Будут блоки часто меняться?
боксы вообще оч редко меняются) но с какой то же целью ты создал этот плагин?)

всеравно радует что тут есть хоть какие то то наработки по сравнению с вамшопом) хоть и не оч красиво его сп*здили =)


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

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



я думал сделать малость по другому.
В шаблоне выводить просто {$box_BOXES_LEFT}, {$box_BOXES_RIGHT}.


да. такое решение красивее

и меньше левого кода в шаблоне



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

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

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

не очень согласен
как писал выше думаю лучше в шаблоне делать конфиг, как вариант хмл,  с регионами(куда можно будет в будущем прикрутить опции шаблона и сделать управление темой.. это не новое, хотя для оск может и новое:) ) а потом через админку выбирать куда добавить, в какой регион наш бокс, добавлять в разные регионы, с разными настройками

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


Как можно убрать массив с кейсами и получать их через global $boxes_data, чтобы запросы лишние не делать на каждую колонку..
Я не могу просто реализовать.

Я думал так сделать и по этому завел сразу поле в БД для меток, которые используют боксы. Ну там {$box_CONTENT}  и т.д... Правда записывается туда только CONTENT, без {$box_....}...
Если создать функцию для каждой колонки, получать оттуда tag и position и через foreach получать все боксы с определенной позицией.
А далее, уже передавать в шаблон через $osTemplate->assign определенной меткой.

Я правильно понимаю?

Уже сделал добавление и редактирование боксов(отдельное спасибо grig'у за это), добавил еще две позиции: верх и них(теперь их 4), в админке уже создал дополнительные колонки и настроил все переключатели.
Осталось только избавиться от кучи кейсов, чтобы один раз в шаблон вставить метки {$box_left}.... и все.

Помогите плиз.


Источник



Copyright ShopOS