private:koding:hostcms:modules:shop:useful:poleznye_melochi

Полезные мелочи

Настройка SMTP

Отправка почты настраивается в файле /modules/core/config/mail.php

Gmail

Пример конфиг файла для gmail.

return array (
	'default' => array (
		'driver' => 'smtp',
	),
	'sendmail' => array (
		'driver' => 'sendmail',
	),
	'smtp' => array (
		'driver' => 'smtp',
		'username' => 'steelsafeshop@gmail.com',
		'port' => '465', // для SSL порт 465
		'host' => 'ssl://smtp.gmail.com', // для SSL используйте ssl://smtp.gmail.com
		'password' => 'PASSWORD'
	)
);

Включите доступ к аккаунту для непроверенных приложений на странице https://www.google.com/settings/security/lesssecureapps

Не отображаются панели центра администрирования, админки

Для включения панелей:

  • авторизуйтесь в ЦА
  • перейдите к модулю Константы
  • Отключите константу ALLOW_PANEL, если её значение равно false
  • Удостоверьтесь, что домен ЦА и домен сайта одинаковы (не являются псевдонимами)

Не отображаются панели XML XSL

Если панели XML/XSL не отображаются в клиентской части, значит включено кэширование. Выключите модуль кэширования и перезагрузите страницу. Кэширование можно отключать для отдельных блоков. Для этого для всех контроллеров показа доступен метод →cache(FALSE)

Не отображаются все товары/инфоэлементы в корне магазина/инфосистемы

Если требуется выводить в корне магазина или инфосистемы все элементы, то по идее достаточно в коде соответствующей ТДС перед выводом контроллера показа раскомментить следующую часть кода:

// В корне выводим из всех групп
/*if ($Informationsystem_Controller_Show->group == 0)
{
	$Informationsystem_Controller_Show->group(FALSE);
}*/

Но иногда такое решение не помогает, и item'ы в корне не выводятся. В XML их нет. В таком случае необходимо при выводе контроллера показа установить свойство limit

$Informationsystem_Controller_Show
	->xsl(
		Core_Entity::factory('Xsl')->getByName($xslName)
	)
	->itemsProperties(TRUE)
  	->limit(999)
	->show();

Кстати, на hostcms форуме внятного ответа по этой проблеме не нашел.

Отправка письма пользователю,который заполнил форму

Для отпавки писма пользователю в ТДС отображение формы вставляем код в контролере отправки формы

if ($result) 
{
 	Core_Mail::instance()
      ->to($_POST['email'])//Почта пользователя
      ->from($email)//Почта администратора сайта
      ->subject($subject)//Тема писма
      ->message($sText)//Текст писма
      ->contentType('text/plain')
      ->send();
}

Для получения email модуля сайта $email=Core_Entity::factory('site')→find(CURRENT_SITE)→admin_email или Core_Entity::factory('site')→find(CURRENT_SITE)→getFirstEmail(); Что бы получить текст писма из xsl файла

	$sText = Xsl_Processor::instance()
	->xml($oEmailFormControllerShow->getXml())    
	->xsl(Core_Entity::factory('Xsl')->getByName('$xsl'))
	->process();

Автоопределение местоположения: страны, города, улицы и т.д.

Что-то случилось с версткой, код одинаковый, но стили разные, хотя и css тот же

Коварная проблема может появится в результате подключения файла, который кодирован в utf с bom меткой. Проверьте подключаемые файлы.

Часовой пояс по умолчанию

В HostCMS настройка часового пояса «По-умолчанию» означает, что будет использоваться часовой пояс из /modules/core/config/config.php, а не из настроек PHP, так как: «Есть ситуации, когда сайт еще не определен, а временная зона нужна, при этом в php.ini временная зона не определена.»

Для товара

Получение url товара

$url = $oShopItem->Shop->Structure->getPath() . $oShopItem->getPath();

Получение url картинки товара

$image_url = $oShop_Item->getItemHref() . $oShopItem->image_large;

Получение url информационного элемента

$url = $oInformationsystem_Item->Informationsystem->Structure->getPath() . $oInformationsystem_Item->getPath();

Автокомплитер

Сделать ссылку на товар в автокомплитере

1. Переходим к ТДС поиска или другой ТДС к которой обращается автокомплитер. Находим строку, в которой происходит добавление элементов для передачи в автокомплитер $aJSON['suggestions'][]. Добавляем в массив URL товара:

$aJSON['suggestions'][] = array( 'value' => $oShop_Item->name, 'price' => $oShop_Item->price, 'data' => $oShop_Item->id, // Здесь нужно получить полный путь картинки 'image' => $image, 'url' => $oShop_Item->Shop->Structure->getPath() . $oShop_Item->getPath() );

2. Затем переходим к скрипту автокомплитера, примерно строка 262 и находим там код, который выводит html во всплывающий блок автокомплитера. Окружаем его ссылкой и добавляем ссылку e.url. e хранит все свойства, переданные в массив в п.1.

Добавить картинку в автокомплитер

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

private/koding/hostcms/modules/shop/useful/poleznye_melochi.txt · Last modified: 27.06.17 в 15:57 by maximzasorin_gmail.com