Simplacms - 2 часть

Статус
В этой теме нельзя размещать новые ответы.

135

Постоялец
Регистрация
11 Июл 2010
Сообщения
141
Реакции
8
Зачем вам нужны вставки php? Вывести какую-то переменную? Или что? Шаблоны предназначены исключительно для дизайна, не для вычислений,. Вставляйте код в index.php, делайте проверку на то, какую страницу открыли и выводите.
 

Minor

Постоялец
Регистрация
16 Авг 2012
Сообщения
258
Реакции
110
А можно примерчик ? А то я вечно костыли леплю.
 

135

Постоялец
Регистрация
11 Июл 2010
Сообщения
141
Реакции
8
Так я ж не знаю, что вам нужно.
Например, у меня было определение города по IP. Насколько помню, в index.php подключил этот скрипт, а сам город выводил в дизайне.
Если вам нужно что-то из базы брать, надо модифицировать запросы к mysql.
Что именно вы хотите вывести?
 

Minor

Постоялец
Регистрация
16 Авг 2012
Сообщения
258
Реакции
110
Да вот хотя б
Например, у меня было определение города по IP. Насколько помню, в index.php подключил этот скрипт, а сам город выводил в дизайне.
я тоже это реализовал, но увы в шаблоне. А хотелось бы по правильному.
 

135

Постоялец
Регистрация
11 Июл 2010
Сообщения
141
Реакции
8
Что касается определения города по ip (мне оно нужно было лишь в карточке товара для указания стоимости доставки), я сделал так: скачал zgeo.php, закинул в корень сайта, дальше пошёл в ProductView.php и с первой строки написал:
PHP:
include('zgeo.php');   //подключаем модуль
$data=getipgeodata($_SERVER["REMOTE_ADDR"]); //получаем информацию об IP в переменную $data
$data = iconv('WINDOWS-1251', 'UTF-8', $data); //преобразуем кодировку для нашего сайта, из cp1251 в UTF-8 если нужно, если нет то удалите строку
$city = (getval('city',$data));
$region = (getval('region',$data));
$this->design->assign('city', $city);
$this->design->assign('region', $region);
Ну и всё, дальше в шаблоне product.tpl пишу
Доставка в ваш {$city} будет стоить ... дальше проверяю города по списку и вывожу заранее заданную стоимость, если города нет в списке, то пишу
В {$region} мы сами доставить не сможем, позвоните в транспортную компанию.
 

Minor

Постоялец
Регистрация
16 Авг 2012
Сообщения
258
Реакции
110
А как получить из дизайна переменную до рендеринга?
 

135

Постоялец
Регистрация
11 Июл 2010
Сообщения
141
Реакции
8
Я вообще не понял, о чём вы. Приведите пример, что вам нужно.
P.S. Логика симплы проста: в php работа с данными, в шаблоне - вывод (но никак не вычисления)
 

Minor

Постоялец
Регистрация
16 Авг 2012
Сообщения
258
Реакции
110
Пример - мне нужно получить картинку к товару и с ней что-нибудь сделать (условно - пережать)
(пока писал по ходу понял как сделать :) - в ProductView после получения данных из БД провести обработку)
 

135

Постоялец
Регистрация
11 Июл 2010
Сообщения
141
Реакции
8
Пример - мне нужно получить картинку к товару и с ней что-нибудь сделать (условно - пережать)
(пока писал по ходу понял как сделать :) - в ProductView после получения данных из БД провести обработку)
Очень просто: за ресайз отвечает resize.php. В конец файла вставляете
PHP:
$path_parts = pathinfo($resized_filename);   
if (($path_parts['extension']=='jpg') || ($path_parts['extension']=='jpeg')) {
    $output = shell_exec("/путь к jpegoptim --max=85 --strip-all --preserve --totals ".escapeshellarg($resized_filename));
}
if(is_readable($resized_filename))
{
    header('Content-type: image');
    print file_get_contents($resized_filename);
}
Но это пример для jpg, для png надо будет код поменять.
Плюс надо будет скачать и установить jpegoptim. Сделать это можно как на сервере, так и на обычном хостинге, нужен лишь ssh
 

magicwd

Создатель
Регистрация
22 Июл 2016
Сообщения
25
Реакции
4
До сих пор инструкция работает исправно, проверил вчера на свежей 2.3.8. Правда файла /config/simpla.ini.php уже нет, вырезаем в конфиге лицензию и дальше 2 и 3 пункт. И последний шаг "В index.php удалить строки с 57 по 60", строчки тоже уже другие, ищем чуть ниже. Теперь все стало пучком!) Спасибо, очень помогло!
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху