Skip to content

Commit 410b408

Browse files
author
grinderspro
committed
add systemPlugin
1 parent 761bd3a commit 410b408

9 files changed

Lines changed: 268 additions & 0 deletions

File tree

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,9 @@
22

33
##phoneValidator
44
phoneValidator for some project
5+
56
##iqSmsSending
67
Modified wrapper for iqSms.
8+
9+
##pluginsSimpla
10+
Часть собственной системы плагинов для SimplaCMS. Расширение функционала с минимальным вмешательством в ядро магазина. Построена на трейтах (php 5.4 trait). Позволяем разделить функционал на отдельные, логически связанные подрограммы. Повторное использование в проектах. К каждому плагину можно прилагать json файл, в котором можно производить конфигурацию плагина. (вкл/выкл, cached, прочие параметры и настройки)

pluginsSimpla/Plugins.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace Grinderspro\Simpla\Pluginsystem;
4+
5+
/**
6+
* Class Plugins
7+
*
8+
* Своя система плагинов, основанная на трейтах (traits PHP 5.4) для расширения функционала SimplaCMS
9+
* с минимальным вмешательством в ядро
10+
*
11+
* @author grinderspro <grinderspro@gmail.com>
12+
*/
13+
14+
require_once('api/Simpla.php');
15+
16+
17+
class Plugins extends Simpla
18+
{
19+
20+
use mobileMenu, cssBuild;
21+
22+
const PLUGIN_DIR = 'plugins';
23+
24+
function __construct()
25+
{
26+
27+
parent::__construct();
28+
29+
$this->design->smarty->registerPlugin("function", "getMobileMenu", array(
30+
$this,
31+
'getMobileMenu'
32+
));
33+
34+
$this->design->smarty->registerPlugin("function", "getCssBuild", array(
35+
$this,
36+
'getCssBuild'
37+
));
38+
39+
//...
40+
41+
}
42+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"settings": {
3+
4+
"enabled": 1,
5+
6+
"hosts": {
7+
"hostTarget": "armored.com.ua",
8+
"hostReal": ""
9+
},
10+
11+
"css": {
12+
"cssFile": "styles.css",
13+
"cssFileBuild": "build.css",
14+
"cssFileBuildMin": "build.min.css"
15+
}
16+
17+
}
18+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
/**
4+
* Simpla CMS Plugins
5+
*
6+
* @copyright 17.05.2016 Grigiry Miroshnichenko (Grinderspro)
7+
* @link http://grinderspro.ru
8+
* @author Grigiry Miroshnichenko
9+
*
10+
*/
11+
12+
trait cssBuild {
13+
14+
function getCssBuild($params = array(), &$smarty) {
15+
16+
// settings
17+
18+
$pSettings = json_decode(file_get_contents(__DIR__.'/'.str_replace('.php', '' ,basename(__FILE__)).'.json'))->settings;
19+
$pSettings->hosts->realHost = $_SERVER['SERVER_NAME'];
20+
21+
// begin
22+
23+
if($pSettings->hosts->hostReal !== $pSettings->hosts->hostTarget) {
24+
25+
$pSettings->css->outputCssFile = $pSettings->css->cssFileBuild;
26+
27+
} else {
28+
29+
$pSettings->css->outputCssFile = $pSettings->css->cssFileBuildMin;
30+
31+
}
32+
33+
$this->design->assign('pluginSettings', $pSettings);
34+
35+
$output = $this->design->fetch(__DIR__.'/'.str_replace('.php', '' ,basename(__FILE__)).'.tpl');
36+
37+
//return
38+
39+
echo $output;
40+
41+
}
42+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<link href="/design/{$settings->theme}/css/{$pluginSettings->css->outputCssFile}" rel="stylesheet" media="screen">

pluginsSimpla/cssBuild/readme.txt

Whitespace-only changes.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"settings": {
3+
4+
"enabled": 1,
5+
"cached": 1
6+
7+
}
8+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
4+
trait mobileMenu {
5+
6+
function getMobileMenu($params = array(), &$smarty) {
7+
8+
9+
// actions
10+
switch ($params['get']) {
11+
12+
case 'mobileMenuPopulars':
13+
14+
$populars = $this->mobileMenuPopulars($var_id = $params['cat_id'], $smarty);
15+
$smarty->assign($params['var'], $populars);
16+
17+
return;
18+
break;
19+
20+
case 'none':
21+
return false;
22+
break;
23+
24+
}
25+
26+
$output = $this->design->fetch(__DIR__.'/'.str_replace('.php', '' ,basename(__FILE__)).'.tpl');
27+
28+
echo $output;
29+
30+
}
31+
32+
public function mobileMenuPopulars($cat_id) {
33+
34+
$pupulars = $this->categories->get_populars($cat_id);
35+
36+
return $pupulars;
37+
38+
}
39+
40+
}
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
2+
<div class="navbar-mobile-inner">
3+
<div class="container">
4+
<div class="burger">
5+
<span></span>
6+
<span></span>
7+
<span></span>
8+
<span></span>
9+
</div>
10+
11+
<strong>Выбор модели</strong>
12+
</div>
13+
</div>
14+
15+
16+
<!-- Navigation -->
17+
<nav class="mobile-nav">
18+
<div class="container">
19+
<ul id="accordion" class="main-level panel-group">
20+
21+
{*СТАЦИОНАРНЫЕ пункты меню*}
22+
23+
<li><a href="/aktsii" class="main-level-item collapsed">
24+
<i class="icon_wallet_black"></i>Акции
25+
</a>
26+
<div class="submenu">
27+
<ul class="sub-menu panel-collapse" role="tabpanel" id="main_{$c->url}">
28+
<li>
29+
<a href="/aktsii" class="sub-menu-item">Акции</a>
30+
</li>
31+
{*<li>
32+
<a href="/about" class="sub-menu-item">О нас</a>
33+
</li>*}
34+
</ul>
35+
</div>
36+
</li>
37+
<li><a href="/delivery" class="main-level-item collapsed">
38+
<i class="icon_person"></i>Доставка / О нас
39+
</a>
40+
<div class="submenu">
41+
<ul class="sub-menu panel-collapse" role="tabpanel" id="main_{$c->url}">
42+
<li>
43+
<a href="/delivery" class="sub-menu-item">Доставка и оплата</a>
44+
</li>
45+
{*<li>
46+
<a href="/about" class="sub-menu-item">О нас</a>
47+
</li>*}
48+
</ul>
49+
</div>
50+
</li>
51+
52+
{*END СТАЦИОНАРНЫЕ пункты меню*}
53+
54+
{foreach from=$categories.{0}->subcategories item=c}
55+
56+
{if $c->visible && $c->in_main_menu}
57+
58+
<li class="panel">
59+
60+
<a href="/{$c->url}" class="main-level-item collapsed" data-toggle="collapse" data-parent="#accordion">
61+
{*<i class="icon_whatshot"></i>*}
62+
{$c->name}
63+
</a>
64+
65+
<div class="submenu">
66+
67+
<div class="filter-block">
68+
<input type="text" class="form-control livefilter-input" data-list="#main_{$c->url}" placeholder="Фильтр по моделям">
69+
</div>
70+
71+
<ul class="sub-menu panel-collapse" role="tabpanel" id="main_{$c->url}">
72+
{*<li class="mobile-sub-search">
73+
<input type="text" class="form-control livefilter-input" data-list="#main_{$c->url}" placeholder="Поиск по моделям">
74+
</li>*}
75+
76+
{* получаем от плагина список популярных и помещаем в переменную $populars*}
77+
{getMobileMenu var="populars" get = "mobileMenuPopulars" cat_id = $c->id}
78+
79+
{foreach $populars as $popular}
80+
<li>
81+
<a href="/{$popular->url}" class="sub-menu-item">
82+
<i class="icon_whatshot"></i>
83+
{$popular->name}
84+
</a>
85+
</li>
86+
{/foreach}
87+
{foreach $c->subcategories as $sub name=subcategories}
88+
{if $smarty.foreach.subcategories.iteration < 9}
89+
<li>
90+
<a href="/{$sub->url}" class="sub-menu-item">
91+
{if $sub->visible}{$sub->name}{/if}
92+
</a>
93+
</li>
94+
{/if}
95+
{/foreach}
96+
97+
{if $c->subcategories|@count > 8}
98+
<li class="show_all"><a href="/{$c->url}" class="sub-menu-item">Все модели ({$c->subcategories|@count})</a></li>
99+
{/if}
100+
101+
</ul>
102+
103+
</div>
104+
105+
</li>
106+
107+
{/if}
108+
109+
{/foreach}
110+
111+
</ul>
112+
</div>
113+
</nav>

0 commit comments

Comments
 (0)