Программирование сайтов
24 Ноя в 09:55

Модальное окно (простое)

Требуется только jQuery.
HTML:

<div class="show-popup">Показать окно</div>
<div class="lite-popup-wrapper">
	<div class="fon"></div> 
	<div class="popup">
		<div class="popup-content">Содержимое</div>
		<div class="closeblock">+</div>
	</div>
</div>

CSS:

.show-popup {
	cursor: pointer
}
.lite-popup-wrapper {
	display:none;    
	position:fixed;
	left:0;
	top:0;
	width:100%;
	height:100%;
	z-index: 999;
}
.lite-popup-wrapper .fon {
	background: rgba(0, 0, 0, 0.8);
	position:fixed;
	width:100%;
	height:100%;
}
.lite-popup-wrapper .closeblock {
	cursor: pointer;
	position: absolute;
	line-height: 44px;
	font-size: 44px;
	transform: rotate(45deg);
	text-align: center;
	top: 0;
	right: 12px;
	color: #333;
}
.lite-popup-wrapper .closeblock:hover {
	color: #000;    
}
.lite-popup-wrapper .popup {
	position: relative;
	width: 400px;
	max-width: 100%;
	padding: 40px 0 20px;
	background: #00aeef;
	color: #fff;
	text-align: center;
	font-size: 14px;
	top: 50vh;
	margin: -38px auto; // половина высоты окна
}
.lite-popup-wrapper .popup .popup-content {
	padding: 0 15px;
}			
/* Эти стили нужны, только если в окне будет форма */
.lite-popup-wrapper .popup textarea,
.lite-popup-wrapper .popup input[type='text'],
.lite-popup-wrapper .popup input[type='email'] {
	border:0;
	font:14px;
	background:#fff;
	padding:10px;
	width:100%;
	color:#000;
}
.popupform input[type='submit']{
	cursor:pointer;
	padding:5px 10px;
	color:#000;
}

JS:

$('.show-popup').on('click', function(){
	$('.lite-popup-wrapper').show();
});		
$('.closeblock').on('click', function(){
	$('.lite-popup-wrapper').hide();
});	
24 Ноя в 09:22

JQuery Once()

Профессионально не могу объяснить что делает функция once(). На примере, в нее обернут код, копирующий содержимое элемента в поле формы. Если обертку не использовать, содержимое будет скопировано в поле дважды. На практике, если по каким-то причинам появляется дублирование, пробуйте переместить код в тело этой функции.

(function ($) {
  Drupal.behaviors.myCode = {
    attach : function(context, settings) {
	$('.office-email').once(function() {
		var email = $('.office-email .field-item').text();
		$('#edit-submitted-mail-to').val(email);
	});
    }
  };
})(jQuery);
21 Ноя в 22:54

Вывод изображения кодом

Путь до оригинала:

print file_create_url($object->field_tour_image['und'][0]['uri']);

Путь до миниатюры, на примере стиля «thumbnail»:

print image_style_url('thumbnail', $object->field_tour_image['und'][0]['uri']);
15 Ноя в 21:52

Вывод Field Collection кодом

Все будет в файле node.tpl.php.
Если несколько коллекций, в начале один раз получаем объект ноды:

if (arg(0) == 'node' && is_numeric(arg(1))) {
	$nid = arg(1);
	$node = node_load($nid);
}

А потом, выводим поля коллекции. Например, коллекция «field_phones» с полями «field_telecom» и «field_phone_number»:

$items = field_get_items('node', $node, 'field_phones');
foreach ($items as $item) {
	$fc_value = field_collection_field_get_entity($item);
	$icon_id = $fc_value->field_telecom['und'][0]['tid'];
	switch ($icon_id) {
		case 16:
			$class = 'a1-mts';
			break;
		case 17:
			$class = 'life-4g';
			break;								
	}
	$number = $fc_value->field_phone_number['und'][0]['value'];
	print '<div class="'.$class.'">'.$number.'</div>';
}
3 Ноя в 07:20

Микро-разметка организации

<div itemscope itemtype="http://schema.org/Organization">
  <div itemprop="name" class="title">ИП Иванов Иван Иванович</div>
  <link itemprop="url" href="https://stebenkov.ru/">
  <div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
    <span itemprop="postalCode">414056</span>,
    <span itemprop="addressCountry">Россия</span>, 
    <span itemprop="addressRegion">Астраханская область</span>, 
    <span itemprop="addressLocality">Астрахань</span>, 
    <span itemprop="streetAddress">Иванова, 567</span>
  </div>
  <div class="item">Телефон: <a href="tel:88000000000"><span itemprop="telephone">+7(800) 000-00-00</span></a></div>
  <div class="item">E-mail: <a href="mailto:feedback@stebenkov.ru"><span itemprop="email">feedback@stebenkov.ru</span></a></div>
</div>

В таком варианте валидатор https://search.google.com/structured-data/testing-tool/u/0/?hl=ru не показывает не заполненных полей и предупреждений.

12 Окт в 07:07

Как сделать телефон кликабельным?

Дано:

<div class="tel">8 (800) 000-00-00</div>

Код должен быть таким:

<a href="tel:88000000000">8 (800) 000-00-00</a>

Если нет возможности изменить код, то можно сделать так:

var tel_element = $('.tel');
var tel_str = tel_element.text();
var tel_number = tel_str.replace(/[^+\d]+/g, "");
tel_element.html('<a href="tel:' + tel_number + '">' + tel_str + '</a>');
19 Май в 07:09

Представления в базе данных MySQL

Например, удобно сделать для поиска по нескольким таблицам.

CREATE OR REPLACE VIEW tbl_view_search AS
SELECT CONCAT('post_', id) AS id, id AS source_id, text, CONCAT('/', url) AS url, title, logo AS img, NULL AS price FROM posts UNION 
SELECT CONCAT('product_', id) AS id, id AS source_id, text, CONCAT('/path/to/', url) AS url, title, img, price FROM products;
15 Янв в 23:11

Замена пароля Drupal 6

$host = 'localhost'; // адрес сервера 
$database = 'dbname'; // имя базы данных
$user = 'username'; // имя пользователя
$password = 'parol'; // пароль
 
// подключаемся к серверу
$link = mysqli_connect($host, $user, $password, $database) 
    or die("Ошибка " . mysqli_error($link));
 
// выполняем операции с базой данных
$query ="UPDATE users SET pass = MD5('newparol') WHERE uid = 1";
$result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link)); 
if($result)
{
    echo "Выполнение запроса прошло успешно";
}
 
// закрываем подключение
mysqli_close($link);
1 Дек в 21:08

Микроразметка мероприятий

<html>
<head>
<title>The Adventures of Kira and Morrison</title>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "The Adventures of Kira and Morrison",
  "startDate": "2025-07-21T19:00",
  "endDate": "2025-07-21T23:00",
  "location": {
    "@type": "Place",
    "name": "Snickerpark Stadium",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "100 West Snickerpark Dr",
      "addressLocality": "Snickertown",
      "postalCode": "19019",
      "addressRegion": "PA",
      "addressCountry": "US"
    }
  },
  "image": [
    "https://example.com/photos/1x1/photo.jpg",
    "https://example.com/photos/4x3/photo.jpg",
    "https://example.com/photos/16x9/photo.jpg"
   ],
  "description": "The Adventures of Kira and Morrison is coming to Snickertown in a can’t miss performance.",
  "offers": {
    "@type": "Offer",
    "url": "https://www.example.com/event_offer/12345_201803180430",
    "price": "30",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "validFrom": "2024-05-21T12:00"
  },
  "performer": {
    "@type": "PerformingGroup",
    "name": "Kira and Morrison"
  }
}
</script>
</head>
<body>    
</body>
</html>