Alexey

Alexey

С нами с 02 августа 2015; Место в рейтинге пользователей: #201
Alexey
01 декабря 2017, 11:44
0
Проблема решена!

Оказалось, что в настройках MODX переменная session_cookie_lifetime имела значение, равное 6. При условии, что по умолчанию она выставлена как 604800. Уж не знаю, кто так подшутил… Соответственно, если я правильно понимаю, данные о товарах в корзине честно хранились аж 6 секунд.

Этот момент выяснился, когда я бросил ковырять шопкипер и принялся за изучение механизма сохранения данных в корзине. Ну, и слово за слово, как говорится! Ступил, конечно, признаю — нужно было сразу задуматься насчет времени хранения данных, а не выискивать ошибки, которых, получается, и не было вовсе.

Единственный момент: я пока не понял, почему корзина не сбрасывалась при авторизованной админке?

Alexey
02 мая 2017, 18:49
0
Друзья, подскажите, пожалуйста!

Вот сайт (MODX REVO), иконки объектов в нем — мягко говоря — не совсем круглой формы. Не могу понять, где в компоненте YandexMaps править этот косяк.

Вызов сниппета:
[[!yandexMaps?
	&tvCoords=`coords`
	&centerCoords=`59.93602798770931,30.31977342641057`
	&fieldForBalloonContent=`description`
	&fieldForHint=`pagetitle`
    &showMoreLink=`true`
	&styleMapBlock=`height:450px;`
	&objectsTypesJSON=`[
		{
			"InvestProjects": {
				"parent":"65",
				"preset":"islands#orangeStretchyIcon",
				"icon":"/maket/images/red_icon.png",
				"presetText":"камеры и боксы",
				"title":"камеры и боксы"
			},
				"InvestPlaygrounds": {
				"parent":"66",
				"preset":"islands#greenStretchyIcon",
				"icon":"/maket/images/green_icon.png",
				"presetText":"Автоматические",
				"title":"Автоматические"
			},
    			"Investors": {
    				"parent":"67",
    				"preset":"islands#blueStretchyIcon",
    				"icon":"/maket/images/blue_icon.png",
    				"presetText":"Дробемёты",
    				"title":"Дробемёты"
    			}
		}
	]`
]]

Направьте, пожалуйста, буду очень благодарен!
Alexey
10 сентября 2016, 19:50
0
Сергей, благодарю. «Исполнен!»©
Alexey
30 июля 2016, 13:54
0
Привет, готов работать на удалёнке, поскольку есть основной источник дохода, а MODX — самое лучшее в жизни увлечение. В котором как раз не хватает иногда совета опытного товарища...))

Есть опыт разработки сайтов на minishop2, на shopkeeper, сайтов-визиток.

Сам из Питера, моя почта: alexxx-ivanow@yandex.ru

PS. Написал и увидел дату поста — вот ведь!)) Ну а вдруг?))
Alexey
21 июля 2016, 09:49
0
Благодарю за помощь!

Выбрал вариант с плагином — владелец сайта предпочел такой способ.
Alexey
10 июня 2016, 16:27
0
Нет, Дмитрий, хостинг, к сожалению, так же туп и невосприимчив к разработкам Василия.

Я жду сигнала хозяина, который практически созрел для переноса сайта на другой — более «правильный» — хостинг.
Alexey
28 мая 2016, 11:19
0
Алексей, благодарю за помощь! В том-то и дело, что я выводил комментарии через pdoPage, включив режим подгрузки новых комментов с помощью кнопки. Но — вместе с ними заново подгружалась форма, и так несколько раз — форма, часть комментов, форма, часть комментов.
Вот вызов сниппета:
[[!TicketComments? 
		                   &limit=`6`
		                   &formBefore=`1` 
		                   &depth=`1`
		                   &gravatarSize=`128` 
		                   &allowGuest=`1` 
                                   &ajaxMode=`button`
		                   &enableCaptcha=`0`
		                   &autoPublish=`1`
		                   &showLog=`0`
		                   ]]
Если же выводить просто постраничной пагинацией, даже аяксом (режим &ajaxMode=`default`), то всё нормально работает — форма, соответственно, на каждую страницу один раз выводится.

Поэтому я пошел по другому пути, вот вызов:

[[TicketComments?
        	           &allowGuest=`1` 
                           &formBefore=`1`
            		   &enableCaptcha=`0`
                         ]]
	
	
	           <div id="pdopage">
                    <div class="rows">
                        [[!pdoPage?
                            &element=`getComments`
                            &ajaxMode=`button`
                            &gravatarSize=`128`
            		    &ajaxElemMore=`#pdopage .also`
            		    ajaxTplMore=`<a class="btn btn-default also" href="#" role="button">Показать ещё</a>`
                        ]]
                    </div>
                    [[!+page.nav]]
                </div>
То есть, при вызове TicketComments, выводится только форма (в чанке tpl.Tickets.comment.wrapper убрал плейсхолдер [[+comments]]), а сами комменты вывожу сниппетом getComments через pdoPage, тогда всё работает корректно! Возможно, что есть более простой вариант, но мне пока что не удалось его найти.
Alexey
28 мая 2016, 03:21
0
В общем, получилось решить задачу стандартными средствами! Немного поковырял чанки, вывел два сниппета раздельно и мозаика сложилась. Всё равно жалко, конечно, что не получилось сниппет Сергея задействовать — у него получилось очень просто и гладко… Спасибо всем!
Alexey
28 мая 2016, 02:12
0
Алексей, я был бы очень признателен, если бы Вы показали мне реальный пример вызова сниппета, где присутствует форма для неавторизованных посетителей, расположенная сверху, список комментариев под ней, которые подгружаются заданным количеством при помощи аякса. Мне не удалось найти такого варианта. Тот, который нашел, как Вы понимаете, отказывается нормально работать.

Я попробовал ещё на паре поддоменов с MODX организовать вывод отзывов — в одном та же самая ерунда получмлась, а вот на втором всё заработало с пол-оборота. Странно… хостинг один, учетка одна — просто папки разные!
Alexey
27 мая 2016, 18:46
0
А, нет, сорри, есть ошибки в логе. Правда, не знаю насколько они связаны с этой проблемой… вот:

[2016-05-26 21:54:16] (ERROR @ /assets/components/tickets/connector.php) Encountered empty IN condition with key id
[2016-05-27 02:18:01] (ERROR @ /connectors/index.php) Path specified for package tickets is not a valid or accessible directory: /home/a/alexxx6c/alexxx6c.bget.ru/public_html/core/components/tickets/model/
[2016-05-27 02:18:02] (ERROR @ /connectors/index.php) Path specified for package tickets is not a valid or accessible directory: /home/a/alexxx6c/alexxx6c.bget.ru/public_html/core/components/tickets/model/
Ясно, что с tickets как-то связано… путь к какой-то папке неправильный?
Alexey
27 мая 2016, 07:48
0
Странно, не могу понять: всё сделал как написано, но — при нажатии кнопки «предпросмотр» в соответствующем окне выводится массив данных:

Array ( [id] => [thread] => 0 [parent] => 0 [text] => test [raw] => [name] => Alexey [email] => mg151232@yandex.ru [ip] => 0.0.0.0 [rating] => 0 [rating_plus] => 0 [rating_minus] => 0 [createdon] => 2016-05-27 07:38:55 [createdby] => 1 [editedon] => [editedby] => 0 [published] => 1 [deleted] => [deletedon] => [deletedby] => 0 [properties] => Array ( ) [resource] => 8 [mode] => preview [has_parent] => [cant_vote] => 1 [bad] => [gravatar] => https://www.gravatar.com/avatar/81a25e4b12b7a6f64e8a9559311089aa?s=128&d=mm [avatar] => https://www.gravatar.com/avatar/81a25e4b12b7a6f64e8a9559311089aa?s=128&d=mm [url] => http://alexxx6c.bget.ru/comments.html [date_ago] => Только что [fullname] => Alexey [guest] => [comment_edit_link] => 1 [children] => [comment_was_edited] => [comment_new] => )
и на кнопку отправить сниппет никак не реагирует. В консоли ошибок нет, в логе MODX — тоже. Если вызываю обычный сниппет TicketComments, то новый коммент нормально сохраняется. Мой вариант вызова сниппета:

[[!TicketCommentAjax? 
		                   &limit=`6`
		                   &formBefore=`1` 
		                   &parents=`8`
		                   &depth=`0`
		                   &gravatarSize=`128` 
		                   &allowGuest=`1` 
		                   &enableCaptcha=`0`
		                   &autoPublish=`1`
		                   &showLog=`0`
		                   ]]
ПОдскажите, пожалуйста, в какую сторону копать? Вот сама страничка со сниппетом: клик
Alexey
01 октября 2015, 21:10
0
Интересные дела получаются!

Я вставляю в шаблон форму обратной связи, заполняю поля, отправляю… вот код формы:

<form enctype="multipart/form-data" method="post" action="contact.php" name="contactform" id="contactform">               
                <div class="one_half element_from_left">            
                    <input name="name" type="text" id="name" size="30" placeholder="Имя">
                    <input name="email" type="text" id="email" size="30" placeholder="Почта">                
                    <input name="phone" type="text" id="phone" size="30" placeholder="Телефон">
					<input type="file" name="filet" accept="*/*" id="file_send">
                </div>                
                <div class="one_half last element_from_right">            
                    <textarea name="comments" cols="40" rows="4" id="comments" placeholder="Сообщение"></textarea>            
                </div>                            
                <input type="submit" class="send_message" id="submit" value="Отправить сообщение" />
                </form>
Форма отсылается на отдельный файлик, расположеный в корне сайта, вот его код:

<?php

if(!$_POST) exit;

// Email address verification, do not edit.
function isEmail($email) {
	return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));
}

if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");

$name     = $_POST['name'];
$email    = $_POST['email'];
//$email    = 'mail@вывески-омск.рф';
$phone   = $_POST['phone'];
$comments = $_POST['comments'];


if(trim($name) == '') {
	echo '<div class="error_message">Внимание! Введите своё имя</div>';
	exit();
} else if(trim($email) == '') {
	echo '<div class="error_message">Внимание! Введите свою почту</div>';
	exit();
} else if(trim($phone) == '') {
	echo '<div class="error_message">Внимание! Введите свой телефон</div>';
	exit();
} else if(!is_numeric($phone)) {
	echo '<div class="error_message">Внимание! Телефон может содержать только цифры.</div>';
	exit();
} else if(!isEmail($email)) {
	echo '<div class="error_message">Внимание! Вы ввели неверный адрес электронной почты, попробуйте еще раз</div>';
	exit();
} else if(trim($comments) == '') {
	echo '<div class="error_message">Внимание! Пожалуйста, введите ваше сообщение.</div>';
	exit();
} 

if(get_magic_quotes_gpc()) {
	$comments = stripslashes($comments);
}


// Configuration option.
// Enter the email address that you want to emails to be sent to.
// Example $address = "joe.doe@yourdomain.com";



//$address = "example@themeforest.net";
$address = "mail@yandex.ru";


// Configuration option.
// i.e. The standard subject will appear as, "You've been contacted by John Doe."

// Example, $e_subject = '$name . ' has contacted you via Your Website.';

$e_subject = 'Вы получили письмо от ' . $name . '.';


// Configuration option.
// You can change this if you feel that you need to.
// Developers, you may wish to add more fields to the form, in which case you must be sure to add them here.

$e_body = "Имя: $name" . PHP_EOL . PHP_EOL;
$e_reply = "Почта: $email\r\nТелефон: $phone\r\n";
$e_content = "\r\nСообщение: $comments" . PHP_EOL . PHP_EOL;


$msg = $e_body . $e_reply . $e_content;

$headers = "From: $email" . PHP_EOL;
$headers .= "Reply-To: $email" . PHP_EOL;
//$headers .= "MIME-Version: 1.0" . PHP_EOL;
//$headers .="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\r\n"; 
//$headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL;
//$headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL;

//if (isset($_FILES["filet"]["tmp_name"])) {

$attachment = chunk_split(base64_encode(file_get_contents($_FILES["filet"]["tmp_name"])));
$filename = $_FILES["filet"]["name"];
$filetype = $_FILES["filet"]["type"];

$boundary = md5(date("r", time()));

$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"_1_$boundary\"";
$msg="
--_1_$boundary
Content-Type: multipart/alternative; boundary=\"_2_$boundary\"
--_2_$boundary
Content-Type: text/plain; charset=\"utf-8\"
Content-Transfer-Encoding: 7bit
$msg
--_2_$boundary--
--_1_$boundary
Content-Type: \"$filetype\"; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment
$attachment
--_1_$boundary--";
//}

if(mail($address, $e_subject, $msg, $headers)) {
	// Email has sent successfully, echo a success page.
	echo "<fieldset>";
	echo "<div id='success_page'>";
	echo "<h1>Ваше письмо успешно отправлено.</h1>";
	echo "<p>Спасибо <strong>$name</strong>, Мы ответим вам в ближайшее время</p>";
    echo "<pre>";
       print_r($_FILES["filet"]);
    echo "</pre>";
	echo "</div>";
	echo "</fieldset>";
} else {
	echo 'Ошибка отправки почты!';
}
Письмо благополучно уходит, но на ящик приходит всё, кроме вложения!

ОДНАКО:

если я создаю отдельный файл в корне сайта, копирую в него всю форму, отправляю с неё письмо с вложением, то письмо приходит нормально, с вложением…

Отсюда делаю вывод, что дело в самом ModX… господа, можете посоветовать, в какую сторону нужно рыть??? Я пересмотрел все настройки системы, результат — ноль!

Уже моСк кипит…
Alexey
01 октября 2015, 07:20
0
Добрый день!

Столкнулся с проблемой: есть сайт на modx revo, есть форма обратной связи с вложением, письмо отправляется, вложение — нет! Отправка происходит с помощью обычного php файла в корне сайта, не через классы… пробовал отправлять с другого сайта modx revo — все прекрасно отправляется, включая вложение!

Отсюда сделал вывод, что необходимо подправить какие-то системные настройки сайта… или дело в настройках хостинга? Оба сайта лежат на бегете, только учетки разные, к хостингу проблемного сайта пока доступа нет, к сожалению — только админка…

ПОдскажите, пожалуйста, возможно ли настроить отправку вложений через админку сайта, не применяя классы?

Заранее спасибо!
Alexey
17 августа 2015, 12:17
0
Вроде, разобрался!

Исправил вызов сниппета и последовательность вызова плейсхолдеров — заработало…

<ul>
[[!siblingNav? 
   &showHidden=`1`
   &prevTpl=`snprevtpl`
   &limit=`2`
   &nextTpl=`snnexttpl`
   &selfTpl=`snselftpl`
   &sortBy=`{"menuindex":"DESC"}`
]]
[[+sn.prev]][[+sn.self]][[+sn.nextlinks]]
</ul>
Alexey
17 августа 2015, 00:48
0
Надоумьте, пожалуйста!

Сделал внизу каждой статьи блок ссылок в виде маркированного списка: строка-ссылка на следующую статью, строка с названием текущей статьи, 2 строки-ссылки на две предыдущие статьи… moto.proff-site.ru/news/akcziya_maks_min_snegohody_20140115

Все работает, вот только 2 строки на 2 предыдущие новости выводятся в обратном порядке: 3 сверху идет более ранняя новость, а 4 строкой выводится более свежая… как можно изменить порядок вывода именно этих двух строк? Вариант sortBy в параметрах вызова сниппета не срабатывает…

Вот сам вызов:

<ul>
[[!siblingNav? 
   &showHidden=`1`
   &prevTpl=`snprevtpl`
   &limit=`2`
   &nextTpl=`snnexttpl`
   &selfTpl=`snselftpl`
]]
[[+sn.next]][[+sn.self]][[+sn.prevlinks]]
</ul>
Вот чанки:

snnexttpl
[[+_isactive:is=`1`:then=`<li>
	<a href="[[~[[+id]]]]">[[+pagetitle]]</a></li>
        `:else=``]]
snprevtpl
[[+_isactive:is=`1`:then=`<li>
	<a href="[[~[[+id]]]]">[[+pagetitle]]</a></li>
	`:else=`
	<
	`]]
snselftpl
<li class="snself">
	[[+pagetitle]]
</li>
Заранее спасибо!
Alexey
15 августа 2015, 19:44
0
Павел, преогромное Вам спасибище!))) Выручили…

Собственно, я практически был уверен, что должен существовать такой простенький скрипт, но —
как ни странно — облазив гугл-яндекс, ничего похожего на этот вариант не получил в поисковой выдаче!