Recommended Posts

Движком всегда запускается функция main() из 

/template/frontend/ваш_шаблон/main/main.php

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

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

	/**	 * Main	 * @param void	 * @return string	 */	
function main () {			
$this->template->assign('my_var', 'Моя переменная');                        
.........                        
дальше идет системный код, его не трогаем

Теперь в шаблоне это нам будет доступно так:

{$my_var}

На сайте эта переменная преобразуется в ее значение

Моя переменная

Более сложный пример, сделаем SQL-запрос для выборки данных из таблицы.

Также в main()

	/**	 * Main	 * @param void	 * @return string	 */
function main () {		
//Класс для работы с базой данных               
$DBC=DBC::getInstance();               
//Подготовим SQL-запрос (получить строчку с данными пользователя по его логину (вместо ? будет подставляться значение)		
$query = 'SELECT * FROM '.DB_PREFIX.'_user WHERE login=?';                
//будем искать пользователя с логином admin               
//NB использовать '*' при выборке данных пользователя не стоит, лучше конкретно перечислять нужные поля. Потому что можете забыть убрать отладочный вывод и ВСЕ данные пользователя могут быть перехвачены посторонними.              
$login = 'admin';              
//выполняем запрос, смотрите как передаются аргументы $login		
$stmt=$DBC->query($query, array($login));		
if ( $stmt ) {                       
//выжимаем массив данных			
$ar = $DBC->fetch($stmt);                       
//присваиваем массив в шаблон		
$this->template->assign('user_array', $ar);               
}               
.........               
дальше идет системный код, его не трогаем

Теперь в шаблоне мы можем получить доступ к этому массиву, этот код выведет все содержимое массива

<pre>{$user_array|@print_r}</pre>

NB2. Когда отладочный вывод, как в коде выше, вам перестанет быть нужным - удаляйте его или, если комментируете, то комментируйте как {*$user_array|@print_r*} но ни в коем случае не

<!--<pre>{$user_array|@print_r}</pre>-->

Увидим на сайте примерно такое

Array(    [user_id] => 1    [login] => admin    [pass] => admin    [active] => 1    [reg_date] => 2013-07-30 11:18:10    [password] => 21dsfsdfs57a5a743894a0e4a801fc3    [fio] => Кондин Дмитрий Валерьевич    [email] => kondin@etown.ru    [account] => 0    [group_id] => 1    [company_id] => 0    [phone] => 234-44-23    [site] => http://www.sitebill.ru    [imgfile] => img529befac1ca89_1385951148_941.jpg    [mobile] => +79138317494    [icq] => 73072365    [newpass] =>     [newpass_retype] =>     [admnf] =>     [tariff_id] => 1)

А чтобы получить доступ к отдельному значению из массива, например, к fio, то делаем так:

{$user_array.fio}

Будет выведено

Кондин Дмитрий Валерьевич

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, действительно, определить переменную в main.php и вывести ее в шаблоне несложно. Меня интересует несколько другое. На вашем канале youtube есть видео, как создать собственное приложение - вывод текста 'Hello, word!' в админке, то есть в файле /apps/hello/admin/admin.php

Как вывести тот же текст на сайт? Что должно быть в файле /apps/hello/site/site.php ?
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, действительно, определить переменную в main.php и вывести ее в шаблоне несложно. Меня интересует несколько другое. На вашем канале youtube есть видео, как создать собственное приложение - вывод текста 'Hello, word!' в админке, то есть в файле /apps/hello/admin/admin.php

Как вывести тот же текст на сайт? Что должно быть в файле /apps/hello/site/site.php ?

 

$this->template->assign('my_var', 'Моя переменная');

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, действительно, определить переменную в main.php и вывести ее в шаблоне несложно. Меня интересует несколько другое. На вашем канале youtube есть видео, как создать собственное приложение - вывод текста 'Hello, word!' в админке, то есть в файле /apps/hello/admin/admin.php

Как вывести тот же текст на сайт? Что должно быть в файле /apps/hello/site/site.php ?

 

Скоро сделаю видео-урок про hello world для вывода на сайте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

$this->template->assign('my_var', 'Моя переменная');

Эта запись инициализирует переменную в файле template/frontend/мой_шаблон/main/main.php

Я хочу узнать, что необходимо написать в файле apps/hello/site/site.php для вывода приложения 'hello' на сайт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Эта запись инициализирует переменную в файле template/frontend/мой_шаблон/main/main.php

Я хочу узнать, что необходимо написать в файле apps/hello/site/site.php для вывода приложения 'hello' на сайт.

http://www.smarty.net/docsv2/ru/

прямая ссылка на то что вам нужну. http://www.smarty.net/docsv2/ru/language.variables.tpl#language.assigned.variables

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Эта запись инициализирует переменную в файле template/frontend/мой_шаблон/main/main.php

Я хочу узнать, что необходимо написать в файле apps/hello/site/site.php для вывода приложения 'hello' на сайт.

Сделаем инструкцию )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как выводить ФИО не админа, а пользователей?

 

Речь о поле fio из данных объявления взамен такого же fio из профиля пользователя к которому привязано объявление?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Речь о поле fio из данных объявления взамен такого же fio из профиля пользователя к которому привязано объявление?

Нет.

ФИО залогиненого пользователя http://joxi.ru/nAy8N8MhXYOjW2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

есть 2 варианта

 

1й и самый мой любимый, залезть в движок в момент логина и в $_SESSION закинуть ФИО, а потом забыть о обновлении двига

2й посложнее:

идем в шаблон - ищем main\main.php

гденить .....в функции майн пишем

 

if((int)$_SESSION['user_id']>0){
require_once SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/admin/users/users_manager.php';
$UM=new Users_Manager();
$user=$UM->getUserProfileData((int)$_SESSION['user_id']);
$this->template->assign('my_profile_data', $user);
}

 

 

ну а в шаблоне {$my_profile_data|var_dump}

 

этот вариант максимально кошерен - ибо вы получаете в шаблоне все данные юзера включая всякое секретное)))))))

стебусь)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

подскажите а где (в каком файле) и как формируются функция типа
$special_items2

и как создать свою? где и что и как написать чтобы создать например 
$special_items3

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

Например есть 5 городов Москва Киев Владивосток Уфа Калининград
чтобы просматривая например объявление из калининграда не выводилось объявление для других городов, а олько для Калиниграда. Аналогично в других городах. И если данную обработку делать в реалити вью не вызовет ли это дополнительную нагрузку на сайт и загрузку страниц, так как будет выполняться выборка и запрос по id городу

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 10.07.2016 в 01:24, doma сказал:

подскажите а где (в каком файле) и как формируются функция типа
$special_items2

и как создать свою? где и что и как написать чтобы создать например 
$special_items3

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

Например есть 5 городов Москва Киев Владивосток Уфа Калининград
чтобы просматривая например объявление из калининграда не выводилось объявление для других городов, а олько для Калиниграда. Аналогично в других городах. И если данную обработку делать в реалити вью не вызовет ли это дополнительную нагрузку на сайт и загрузку страниц, так как будет выполняться выборка и запрос по id городу

 

В /template/frontend/realia/main/main.php

$this->grid_special_right();

Вот реализация этой функции

    /**
     * Get special right grid
     * @param
     * @return
     */
    function grid_special_right () {
        $params['spec'] = 'spec';
        $grid_constructor=$this->_getGridConstructor();
        $grid_constructor->special_right($params);
    }

Но вам лучше на примере этой функции дублировать свой функционал

	private function getNewest(){
		require_once SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/frontend/grid/grid_constructor.php';
		$grid_constructor = new Grid_Constructor();
		$params['order'] = 'date_added';
		$params['asc'] = 'desc';
		$params['page_limit']=3;
		$params['page']=1;
		$res = $grid_constructor->get_sitebill_adv_ext( $params, false, false );
		//echo count($res);
		//print_r($res);
		$this->template->assign('new_grid_items', $res); // тут задаем свое название массива
	}

Например так

	private function getMyNewest(){
		require_once SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/frontend/grid/grid_constructor.php';
		$grid_constructor = new Grid_Constructor();
		$params['order'] = 'date_added';
		$params['asc'] = 'desc';
		$params['page_limit']=5;
		$params['page']=1;
		$res = $grid_constructor->get_sitebill_adv_ext( $params, false, false );
		//echo count($res);
		//print_r($res);
		$this->template->assign('my_new_grid_items', $res);
	}

И потом вызвать ее в main();

$this->getNewest();
//добавляем свой вызов
$this->getMyNewest();

В шаблоне этот массив будет выглядеть так

                        {foreach from=$my_new_grid_items item=my_new_grid_item}

                        <div class="property">
                            <div class="image">
                                <a href="{$my_new_grid_item.href}"></a>
                                {if $my_new_grid_item.img != '' }
                                <img src="{$estate_folder}/img/data/{$my_new_grid_item.img[0].preview}" class="previewi">
                                {else}
                                <img src="{$estate_folder}/template/frontend/realia/img/no_foto_100x74.png" class="previewi">
                                {/if}

                            </div><!-- /.image -->
                            <div class="wrapper">
                                <div class="title">
                                    <h3>
                                        <a href="{$my_new_grid_item.href}">
                                            {if $my_new_grid_item.city ne ''} {$my_new_grid_item.city}{if
                    $my_new_grid_item.street ne ''}, {$my_new_grid_item.street}{if
                    $my_new_grid_item.number ne ''}, {$my_new_grid_item.number}{/if}{/if}
                    {else} {if $my_new_grid_item.street ne ''} {$my_new_grid_item.street}{if
                    $my_new_grid_item.number ne ''}, {$my_new_grid_item.number}{/if} {/if}
                    {/if}
                                        </a>
                                    </h3>
                                </div><!-- /.title -->
                                <div class="location">{$my_new_grid_item.path}</div><!-- /.location -->
                                {if $my_new_grid_item.price_discount > 0}
                                <div class="price">
                                {$my_new_grid_item.price_discount|number_format:0:",":" "} {if $my_new_grid_item.currency_name != ''}{$my_new_grid_item.currency_name}{/if}
                                <div class="price_discount_footer">{$my_new_grid_item.price|number_format:0:",":" "} {if $my_new_grid_item.currency_name != ''}{$my_new_grid_item.currency_name}{/if}</div><!-- /.price -->
                                </div>
                                {else}
                                <div class="price">{$my_new_grid_item.price|number_format:0:",":" "} {if $my_new_grid_item.currency_name != ''}{$my_new_grid_item.currency_name}{/if}</div>
                                {/if}
                            </div><!-- /.wrapper -->
                        </div><!-- /.property -->
                        {/foreach}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

поприсматривались, поизучали, поанализировали -спасибо за подсказку и реализацию! но не смогли найти условие или где формируется вывод VIP объявления только для того города в котором находится объявление, то есть к примеру просматривая объявление из москвы, нужно чтобы показывались в новом блоке через "мою" переменную только VIP объявления из Москвы

Подскажите где идет выборка по условию города
возможно где то в private function getMyNewest(){ надо вставлять условие типа проверки города?
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

и еще правильно ли понимаем синтаксиc

private function getMyNewest(){   создаем функцию называем ее как нам надо в данном случае getMyNewest
        require_once SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/frontend/grid/grid_constructor.php';  используем создатель вывода сетки по заранее обозначенному правилу
        $grid_constructor = new Grid_Constructor();  переменной грид конструктор то есть построитель сетки присваем и создаем новый грид сетку 
        $params['order'] = 'date_added';  параметру ордерс присваиваем значение дата добавления
        $params['asc'] = 'desc'; параметру асц присваиваем значение десриптион видимо -это наверное описание объявления
        $params['page_limit']=5; парамаетру лимит выводимых VIP предложений ограничиваем значением 5 шт
        $params['page']=1;  параметру страница или номер  присваеваем значение 1 то есть начинать выводить с 1 удовлетворения условия
        $res = $grid_constructor->get_sitebill_adv_ext( $params, false, false );   переменной рес присвоить значение грид конструктора передав параметры 
        //echo count($res);  вывести эхо то есть сообщение счетчик рес
        //print_r($res); вывести распечатать рес
        $this->template->assign('my_new_grid_items', $res);  передать полученные значения  в переменную моя_новая_грид-значение
    }

что то не так?
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
require_once SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/frontend/grid/grid_constructor.php';
$grid_constructor = new Grid_Constructor();

Эти две строки следует заменять на

$grid_constructor = $this->_getGridConstructor();

либо на

$grid_constructor=$this->_grid_constructor;

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

Цитата

 $params['asc'] = 'desc';

Означает направление сортировки по параметру указанному в предыдущем элементе. Может иметь значение asc - от меньшего к большему и desc - в обратную сторону.

Цитата

$params['page_limit']=5;
$params['page']=1;

page_limit и page - два параметра которыми вы можете управлять лимитированием результата запроса. Первый устанавливает "количество на страницу", которое перебивает настроечное. Второй просто говорит какую страницу при разбиении результата выборки на страницы, отдать. Т.е  в данном случае вы просите сформировать выборку объяв из рассчета 5-ть штук на страницу и вернуть только первую из них, что равносильно "дай мне первые 5 записей из найденных".

 

Все любые фильтрации могут быть применены тут же. Слеудет помнить, что вызов $grid_constructor->get_sitebill_adv_ext является низкоуровневым. Т.е. когда в обращаетесь к сетке через сайт, выбрав раздел или запустив фильтр, происходит несколько разных операций - 1.разбор запроса, 2.сбор параметров, которые умеет обрабатывать сеточник из запроса, 3.передача параметров в сеточник, 4.сама работа сеточника по созданию выборки по переданным параметрам... Так вот вызов get_sitebill_adv_ext это уже пункт 4 и дальше в верхнем списке. Т.е. определить какие параметры вам нужны и откуда их взять и передать их в сеточник - все это вы ДОЛЖНЫ сделать сами.

Для данного случая вы должны знать как именно у вас определяется город, есть ли в общем доступе параметры с идешкой искомого города, есть ли возможность взять их оттуда. И тогда взять и передать его под видом ключа $params['city_id']=N вместе с остальными параметрами.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 часов назад, abushyk сказал:
9 часов назад, abushyk сказал:


require_once SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/frontend/grid/grid_constructor.php';
$grid_constructor = new Grid_Constructor();

Эти две строки следует заменять на



$grid_constructor = $this->_getGridConstructor();

либо на



$grid_constructor=$this->_grid_constructor;

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

Означает направление сортировки по параметру указанному в предыдущем элементе. Может иметь значение asc - от меньшего к большему и desc - в обратную сторону.

page_limit и page - два параметра которыми вы можете управлять лимитированием результата запроса. Первый устанавливает "количество на страницу", которое перебивает настроечное. Второй просто говорит какую страницу при разбиении результата выборки на страницы, отдать. Т.е  в данном случае вы просите сформировать выборку объяв из рассчета 5-ть штук на страницу и вернуть только первую из них, что равносильно "дай мне первые 5 записей из найденных".


 

Все любые фильтрации могут быть применены тут же. Слеудет помнить, что вызов $grid_constructor->get_sitebill_adv_ext является низкоуровневым. Т.е. когда в обращаетесь к сетке через сайт, выбрав раздел или запустив фильтр, происходит несколько разных операций - 1.разбор запроса, 2.сбор параметров, которые умеет обрабатывать сеточник из запроса, 3.передача параметров в сеточник, 4.сама работа сеточника по созданию выборки по переданным параметрам... Так вот вызов get_sitebill_adv_ext это уже пункт 4 и дальше в верхнем списке. Т.е. определить какие параметры вам нужны и откуда их взять и передать их в сеточник - все это вы ДОЛЖНЫ сделать сами.

Для данного случая вы должны знать как именно у вас определяется город, есть ли в общем доступе параметры с идешкой искомого города, есть ли возможность взять их оттуда. И тогда взять и передать его под видом ключа $params['city_id']=N вместе с остальными параметрами.

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


а тогда как определить  город, ведь он же берется именно из карточки объявления, а не определяется заранее
то есть в main происходит сама "обработка запроса", без явных указаний города, а уж потом только откры объявление мы понимаем какой город у нас стоит в объявлении,  так как заранее определить открываемый город просто не возможно
так как фактически написав например   $params['city_id']=15 где 15этоidгородаКиев например, мы заранее сделаем выборку vip объявлений только для киева, а объявление открывшаеся будет например москва.  И если не сложно можно поделится полным рабочим кодом

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 11.07.2016 в 21:05, doma сказал:

поприсматривались, поизучали, поанализировали -спасибо за подсказку и реализацию! но не смогли найти условие или где формируется вывод VIP объявления только для того города в котором находится объявление, то есть к примеру просматривая объявление из москвы, нужно чтобы показывались в новом блоке через "мою" переменную только VIP объявления из Москвы

Подскажите где идет выборка по условию города
возможно где то в private function getMyNewest(){ надо вставлять условие типа проверки города?
 

VIP справа корректно работает, а вот как вывести отдельно Premium?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1.НужНо иметь модуль биллинг.

2. Функция вывода премиум почти не отличается от функции обычных объявлений за исключением отсутствии модуля.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

В 25.11.2014 в 12:16, rumantic сказал:

Движком всегда запускается функция main() из 


/template/frontend/ваш_шаблон/main/main.php

В коммерческих шаблонах этот файл закодирован. Как вносить в него изменения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, kmavega сказал:

 

В коммерческих шаблонах этот файл закодирован. Как вносить в него изменения?

Напишите запрос в тикеты, откроем доступ к исходникам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
23 минуты назад, kmavega сказал:

 

В коммерческих шаблонах этот файл закодирован. Как вносить в него изменения?

как понять закодирован?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, rumantic сказал:

Напишите запрос в тикеты, откроем доступ к исходникам.

У меня шаблон real-spaces. При просмотре объекта его название и город не выводились. В этом коммерческом шаблоне данные строки были закомментированы. В них был статичный текст. Думал вывести с помощью создания дополнительной переменной. Оказалось всё гораздо проще.

Цитата

Откажитесь от стандартного h1, определяемого переменной $title - лучше компонуйте его на уровне шаблона _view из переменных массива data, таких как:

  • {$data.city_id.value_string} - название города;
  • {$data.street_id.value_string} - название улицы;
  • {$data.number.value} - номер дома;
  • {$data_shared.price.value} - цена;
  • {$data.text.value}  - текстовое описание (укорачивайте его функцией truncate)

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, doma сказал:

как понять закодирован?

Файл 

/template/frontend/ваш_шаблон/main/main.php

закодирован с помощью ionCube loader. Популярный способ шифрования php-файлов. Открыв файл, вы увидите абракадабру. Некоторые приложения (например, JBZOO для Joomla) требуют наличие этого модуля. До сего момента я сам не знал, что sitebill так же шифрует свои файлы.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, kmavega сказал:

Файл 


/template/frontend/ваш_шаблон/main/main.php

закодирован с помощью ionCube loader. Популярный способ шифрования php-файлов. Открыв файл, вы увидите абракадабру. Некоторые приложения (например, JBZOO для Joomla) требуют наличие этого модуля. До сего момента я сам не знал, что sitebill так же шифрует свои файлы.

 

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

<?php
class frontend_main extends SiteBill_Krascap {
    function check_local_config () {
        require_once (SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/admin/object_manager.php');
        require_once (SITEBILL_DOCUMENT_ROOT.'/apps/config/admin/admin.php');
        $config_admin = new config_admin();
    
        if ( !$config_admin->check_config_item('grid_type') ) {
            $config_admin->addParamToConfig('grid_type','list','Тип списка объявлений (list - обычная таблица, thumbs - div-блоки');
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: dmpress
      Друзья!
      Кто-нибудь выводил два текстовых поля в категории? Например, вверху и внизу страницы?
      Очень прошу помощи если вы такое реализовали.
      Саму вторую переменную я добавил, благодаря подсказкам техподдержки, но вывести её в шаблон не могу.
      В техподдержке наотрез отказываются даже просто подсказать в каких файлах можно посмотреть как реализуется вывод текущего поля description в структуре, не то что как вывести новую переменную((
      В main.php нет вывода текущего поля description, а я умею программировать только копированием кода по образу и подобию))
    • Автор: Дмитрий Кондин
      Берем файл /template/frontend/ваш_шаблон/apps/complex/site/template/complex_view.tpl
      Допустим нам нужно заменить вывод поля Законность на Застройщик, берем строчки
      {if $complex.lexx.value!=''} <div class="complex-option"><label>{$complex.lexx.title}</label><span>{$complex.lexx.value}</span></div> {/if} И меняем на
      {if $complex.developer_id.value!=''} <div class="complex-option"><label>{$complex.developer_id.title}</label><span>{$complex.developer_id.value_string}</span></div> {/if}  
    • Автор: Дмитрий Кондин
      Демо тут http://novosel.sitebill.ru/
      Купить тут.
      Скидка 20% до конца августа  SNRS2TA875
      Подробнее про шаблон тут https://www.sitebill.ru/shablon-novosel

    • Автор: kkkv39
      Добрый день!
      Кто возьмется сделать подобный шаблон для сайтбилла? http://domoteka.pro/
      Желательно, чтобы он был максимально схож.
      Предложения и цены пожалуйста!