Январь 26, 2016
Встала задача реализовать вывод разделов интернет-магазина в шаблоне сайта (в верстке). Что не является типовым решением.
Реализовано это так:
Запись в: HostCMS - Без комментариев - Тэги: HostCMS, content, shop, sections, магазин, интернет-магазин
Январь 18, 2016
Возникла проблема с кастомом элемента, у которого должна была быть необычная верстка.
В частности, вывести название элемента и все дополнительные свойства.
Способ вывода через XSL совсем не подходил для реализации. Достойного решения с помощью HostCMS - API тоже не нашлось.
После недолгих раздумий и изучения строения sql-базы у HostCMS, было принято решение напрямую выдернуть из БД и собрать это в массив, который потом можно закастомить как угодно.
Запись в: HostCMS - Комментариев: 1 - Тэги: HostCMS, content, условие, PHP, логика, api, MySQL, БД, База данных, запросы
Январь 08, 2016
Встала задача, что бы на странице раздела инфоблока которая формируется с API выводились пользовательские мета-данные, которые он вбивает в вкладке «SEO».
<?
$rsSection = CIBlockSection::GetList(
array(),
array(
"IBLOCK_ID"=>12, // Инфоблок id12
"ACTIVE"=>"Y", // активные разделы
"ID"=>$_REQUEST["ID"] // id раздела приходит post-запросом
),
false
);
if($arSection = $rsSection->GetNext()){
$ipropValues = new BitrixIblockInheritedPropertySectionValues(
$arSection["IBLOCK_ID"],
$arSection["ID"]
);
$arSection["IPROPERTY_VALUES"] = $ipropValues->getValues();
}
$title_seo = $arSection["IPROPERTY_VALUES"]["SECTION_META_TITLE"];
$description = $arSection["IPROPERTY_VALUES"]["SECTION_META_DESCRIPTION"];
$keywords = $arSection["IPROPERTY_VALUES"]["SECTION_META_KEYWORDS"];
$APPLICATION->SetPageProperty("keywords", $keywords);
$APPLICATION->SetPageProperty("description", $description);
$APPLICATION->SetTitle($title_seo);
?>
Запись в: 1с-Битрикс - Без комментариев - Тэги: 1C-Bitrix, 1С-Битрикс, API, content, description, keywords, meta, PHP, SEO, title, константа
Январь 04, 2016
В XSL нет такого понятия как if else , как в PHP.
Но все же нечто подобное есть.
Конструкция следующая:
<xsl:choose>
<xsl:when test="УСЛОВИЕ"> //это if
Действие удовлетворяющее условия
</xsl:when>
<xsl:otherwise> // это else
Действие не удовлетворяющее условию
</xsl:otherwise>
</xsl:choose>
Допустим у нас дополнительное свойств «галочка».
Нам нужно, что бы по активной галочки выполнялось какое-то действие, а без галочки выполнялось другое действие в XSL.
Запись в: HostCMS - Комментариев: 2 - Тэги: HostCMS, content, условие, XSL, логика
Декабрь 23, 2015
Разрабатывая интернет ресурсы, очень важно учесть то, что в большинстве случаев конечный пользователь не обладает специальными знаниями (например, html) и встает вопрос, как сделать так, чтобы ему было удобно работать с ресурсом?
Допустим, надо сменить телефон или время работы в шапке сайта. Конечный пользователь с этим не справляется, так как не знает, как это сделать, где и т.д.
Казалось бы, что выход очевиден: или завести персонального администратора, или писать (звонить) в техническую поддержку. Но, есть более изящный выход из этой проблемы:
Разрабатывая ресурсы, надо сделать так, чтобы любой элемент можно было редактировать кликом мышки непосредственно на той странице, на которой его надо изменить.
В HostCMS это можно реализовать так:
Создайте документ, впишите в него, скажем, телефон. Допустим, у документа id будет 3.
Теперь мы в любое место верстки (шаблона) можем вставить код вызова этого документа:
<?php Core_Entity::factory('Document', 3)->Document_Versions->getCurrent()->execute();?>
В итоге, конечный пользователь сможет кликнуть на телефоне, и без проблем его изменить, не копаясь в файлах того же шаблона и не ломая верстку :)
Запись в: HostCMS - Без комментариев - Тэги: content, HostCMS, user
Декабрь 18, 2015
В самое начало добавлен скрипт, который отвечает за скрытие/открытие. Также добавлен блок для вывода подузлов:
<xsl:if test="structure">
<ul class="left_menu gray_link gray" id="{@id}" style="display: {$style_type}">
<xsl:apply-templates select="structure"/>
</ul>
</xsl:if>
Запись в: HostCMS - Без комментариев - Тэги: HostCMS, menu
Декабрь 14, 2015
Задача:
Вывод дополнительных свойств в категории товара.
Реализация:
<xsl:value-of select=".//shop_group[@id=$group]/property_value[tag_name='text-bottom']/value"/>
Запись в: HostCMS - Без комментариев - Тэги: content, HostCMS
Декабрь 14, 2015
Столкнулся с проблемой: дистрибутивы которые на сайте Яндекс-Диска почему-то не работают (Linux Mint 16).
Но выход все же есть:
Заходим в проводник. «Меню» -> «Соединится с сервером…».
В этом окне:
Сервер: webdav.yandex.ru
Порт: 443 (обычно ставится по умолчанию)
Тип: Защищенный WebDAV (HTTPS)
Папка: / (это корневая папка яндекс-диска)
Имя пользователя: логин_почты@yandex.ru
Пароль: пароль от яндекс — почты
Надо не забыть поставить галочку «Запомнить пароль».
В левой панели файлового менеджера в разделе «Сеть» появится «папочка» с яндекс-диском (скриншот не выкладываю, так как имени папке есть указан логин от яндекса).
Что бы яндес-диск всегда был под рукой и не пришлось к нему подключатся при размонтировании целесообразно добавить его в избранное файлового менеджера.
Для этого надо зайти в папку яндекс-диска, в меню файлового менеджера выбрать «Закладки» -> «Добавить в закладки» . После добавления закладку можно переименовать как угодно.
Запись в: Ubuntu / Mint / Debian - Без комментариев - Тэги: linux, Mint, ubuntu, Yandex, Yandex-disk, файловый менеджер, Яндекс, Яндекс-диск
Декабрь 03, 2015
Столкнулся с тем, что надо было восстановить базу данных из дампа. Размер дампа был около гигабайта. Естественно, phpMyAdmin такой большой объем не восстанавливал, даже если файл заархивирован. Лезть в настройки php очень не хотелось.
Создал новую базу, задал нового пользователя.
Для примера назову базу DB_BASE, пользователь DB_USER, пароль 123.
Дальше залил дамп базы в /home. Пусть он будет называться mydatabase.sql
И дальше по ssh выполнил следующую команду:
mysql -uDB_USER -p123 -f DB_BASE < /home/mydatabase.sql
После долгих потуг база восстановилась.
Иногда нужно указать кодировку базы. Это решается так:
mysql -uDB_USER -p123 -f --default-character-set=UTF8 DB_BASE < /home/mydatabase.sql
Запись в: MySQL - Без комментариев - Тэги: PHP, phpMySQL, ssh, terminal, Web-Server, веб-сервер, доступ, Пароли, Пользователь
Ноябрь 10, 2015
Встала задача очистить форму при клике на кнопку «Очистить».
Реализовано таким образом:
<form action="<?=$path?>" method="post">
<input type="text" name="message" placeholder="Введите сообщение" />
<input type="submit" />
<button type="button" onclick="form.reset()">Очистить</button>
</form>
<script>
form.alias.value = form.message.value = '';
</script>
Запись в: JavaScript - Без комментариев - Тэги: content, form, input, форма
Июль 30, 2015
Встала задача, вывести полное количество лет пользователя. Возраст пользователь задает при регистрации в виде даты месяца и дня (формат: YYYY-HH-DD).
Реализовано это так:
<?php
function getAge($y, $m, $d) { // в качестве параметров будут год, месяц и день
if($m > date('m') || $m == date('m') && $d > date('d')){
return (date('Y') - $y - 1); // если ДР в этом году не было, то ещё -1
} else{
return (date('Y') - $y); // если ДР в этом году был, то отнимаем от этого года год рождения
}
}
$dr_date = explode("-", $player_tmp[$sid]["dr_date"]); //Разбиваем переменную по дилиметру "-", получаем массив.
?>
<!--- Вставляем в то место страницы, где надо вывеси полный возраст ---->
<?=getAge($dr_date[0], $dr_date[1], $dr_date[2])?>
Запись в: PHP - Без комментариев - Тэги: php
Апрель 16, 2015
Задача:
Компонент должен выводится только авторизированным пользователям. Для не авторизированных должно выводится сообщение о том, что доступ доступен только для авторизированных.
<?
global $USER;
if ($USER->IsAuthorized()){
$APPLICATION->IncludeComponent(
# Код компонента
);
} else {
echo 'Пожалуйста авторизируйтесь';
}
?>
Запись в: 1с-Битрикс - Без комментариев - Тэги: 1C-Bitrix, 1С-Битрикс, Authorized, IsAuthorized, user, Авторизация, доступ, Пользователь