Всего 125 704 комментария

Роман
08 июля 2021, 11:10
0
Не очень лучший способ подтягивать рейтинг. При большом кол-ве товаров, это точно будет тормозить. Добавьте лучше поле в карточку товара, в которой будет хранится рейтинг. А при добавление или удалении коммента, этот бы рейтинг пересчитывался.
Павел Романов
08 июля 2021, 11:08
+1
Тут Shopkeeper вообще не при чем.
Скорее всего у Вас установлен pdoTools и включен шаблонизатор Fenom на страницах.
Добавьте пробел после открывающей фигурной скобки:
&where=`{ "template":9 }`

Но лучше используйте pdoResources:
[[!pdoResources?
    &parents=`319`
    &templates=`9`
    &tpl=`product`
    &includeTVs=`price,image,opisanie`
    &limit=`20`
]]
дмитрий
08 июля 2021, 11:05
0
затирается имено это
$modx->getPlaceholder('id')
в снипете, когда туда ставлю просто айди товара 20 к примеру, то все норм
дмитрий
08 июля 2021, 11:00
0
в коде чанка:
<div><span class="reviews_param_value stars" data-rating="[[!Test2? &id=`[[+id]]`]][[+rating_count]]" data-num-stars="5"></span></div>
            </div>
снипет:
<?php
$d1 = $modx->getPlaceholder('id');



$sql = "SELECT C.properties AS prop FROM modx_tickets_comments C LEFT JOIN modx_tickets_threads D
ON C.thread=D.id WHERE D.resource = ".$d1;


$q = $modx->prepare($sql);
$q->execute(array(0));
$arr = $q->fetchAll(PDO::FETCH_ASSOC);
foreach ($arr as $arr_one) {
    $tmp = json_decode($arr_one["prop"], true)["starrating"];
    $all[] = $tmp;
}
$middle = number_format(array_sum($all)/count($all), 1, '.', '' );
if (count($all) == 0) {
   $result = ""; 
} else {
$result = '<span itemprop="review" itemscope itemtype="http://data-vocabulary.org/Review-aggregate"><span class="stars"
 itemprop="rating">'.$middle.'</span>Рейтинг '.$middle.' на основе <span itemprop="count">'.count($arr).'</span> отзывов</span>';


}

$middle = $middle== "nan" ? 0 : $middle;



$modx->setPlaceholders(array(
   'rating_count' => $middle,
   'rating' => $result,
   'ratingCount' => "(".count($all).")"
));
дмитрий
08 июля 2021, 10:59
0
отлично, только закрашенные звезды все равно пропадают, за это и отвечает снипет который добавляет среднюю оценку prnt.sc/19fs65r, фильтр почему то сбрасывает все значения в ноль
Роман
08 июля 2021, 10:52
0
У вас свой фильтр стоит, не обратил внимание:
$(document).on('pdopage_load', function(e, data) {
	$('.stars').stars();
});
Функцию тоже не нужно было заменять, просто ниже этот код поставить.
Роман
08 июля 2021, 10:44
0
Дайте ссылку куда вставили. Рекомендую сюда вставить, чтобы потом не искать:
/custom/my/js/main.js
дмитрий
08 июля 2021, 10:42
0
вот сейчас смотрите, я снова вставил… я просто вставил проверил и удалил
Роман
08 июля 2021, 10:40
0
А где прописали? Что-то не увидел. Просто после обновления фильтра, должен запустится скрипт, который как раз пересчитывает эти звезды.
Роман
08 июля 2021, 10:38
+1
Посмотрите тут. Тема уже обсуждалась.
дмитрий
08 июля 2021, 10:36
0
спасибо, не помогло к сожалению( хм блин
Роман
08 июля 2021, 10:29
0
Как-то так наверно.
$(document).on('mse2_load', function(e, data) {
	$('.stars').stars();
});
Роман
08 июля 2021, 09:36
+1
Просто зацикливаешь, пока не получишь определенное кол-во дней. Но тут, есть ньюанс, когда рабочий день суббота, с этим пока не думал, как реализовать. Видимо нужно в исключение добавить.
<?php

$cout_day = 14; //кол-во дней
$holidayDates = [
    '2021-07-08',
    '2021-07-13',
    '2021-07-21',
    '2021-07-26'    
];

$countWD = 0;
$temp = strtotime("2021-07-01 00:00:00"); //дата старта
while($countWD < $cout_day){
    $next1WD = strtotime('+1 weekday', $temp);
    $next1WDDate = date('Y-m-d', $next1WD);
    if(!in_array($next1WDDate, $holidayDates)){
        $countWD++;
    }
    $temp = $next1WD;
}

$nextWD = date("Y-m-d", $temp);
echo $nextWD;
Роман
08 июля 2021, 09:21
0
Как-то так:
[[pdoMenu?
	&parents=`0`
	&level=`2`
	&tplInner=`@INLINE [[+wrapper]]`
	&tplParentRow=`tpl.test`
]]
Чанк tpl.test:
<li [[+classes]]><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a></li>[[+idx:is=`1`:then=`[[+wrapper]]`]]
Через @INLINE такая конструкция не будет работать.
varanika
08 июля 2021, 02:00
0
В общем пофиксила я. Полную версию решения выложу на modx.ru в статьях в ближайшие дни.
А пока в кратце. Какого то х***на этот момент плагина отдавал пустоту.
$msrpcMain->msOnBeforeSaveOrder($msOrder, (isset($_COOKIE['msrpcPayCoins'])&&$_COOKIE['msrpcPayCoins']));
Решила просто заменой на
$msrpcMain->msOnBeforeSaveOrder($msOrder, (isset($_SESSION['msrpcPayCoins'])&&$_SESSION['msrpcPayCoins']));
И в сниппете
$_SESSION['msrpcPayCoins'] = $_COOKIE['msrpcPayCoins'];
Ну и красоты добавила


Но эти несколько недель мучений все таки мне лучше сформировать в полноценное руководство :)

p.s. если спустя месяцы кто-то спросит как в личке, ребята, голова дырявая — я не вспомню уже ;)
@Александр, будем благодарны вам за публикацию решения, если вы его найдете. Кажется, именно из-за этого запроса мы апгрейдили сервер на одном из проектов в прошлом году, но не смог в истории уже откопать подтверждение((

Апгрейд конечно проблему решил и ничего не тормозит. К стати решает не только мощность железа но ещё и версии серверного софта.
Andrey
07 июля 2021, 20:52
+1
В ресурсах галка «Не показывать в меню», не?