Вопросы

Почему может не работать постраничная навигация pdoPage при использовании боковых табов в MODX

Сайт
sudexperts.ru/about/questions
слева 3 вкладка — 3 из них «Общие вопросы» там постраничная навигация (она была и на первых двух — там просто мало статей). И она упорно не работает — когда нажимаешь на 2 страницу — открывает вторую вкладку и левое меню зависает и навигация(pagination) тоже зависает и больше не работает.
Шаблон страницы выглядит так
<div class="quest-body" id="pdopage">
    <div class="question-title">
        <h1>[[*pagetitle]]</h1>
        <a href="#question-popup" class="nopreload popup-btn question-btn">Отправить запрос</a>
    </div>
    <div class="question-content">
        [[!$questionMenu]]

        <div class="rows question-rows" id="catalog-question">
            [[!questMenu]]
        </div>
    </div>
</div>
а сниппет questMenu где вызывается постраничная навигация
<?php
$out = '';
$query = $modx->newQuery('modResource', array('parent'=>64));
$query->sortby('pagetitle','ASC');
$resources = $modx->getCollection('modResource', $query);
foreach($resources as $resource) {
    if ($resource->published == true && $resource->deleted != true && $resource->hidemenu != true) {
        $outputs = '<div class="catalog  category-'.$resource->id.'">';
        $outputs .=  $modx->runSnippet('pdoPage', array(
            'parents'	=> $resource->id,
            'tpl' => 'QuestItem',
            'depth'=> '1',
            'limit'=> '10',
            'includeContent' => '1',
            'ajaxMode'=>'default',
            'tplPageWrapper' => '@INLINE <div class="pagination"><ul>[[+first]][[+prev]][[+pages]][[+next]][[+last]]</ul></div>',
            'tplPageFirst' => '@INLINE <li class="control prev first"><a class="nopreload" href="[[+href]]">Первая</a></li>',
            'tplPageLast' => '@INLINE <li class="control next last"><a  class="nopreload" href="[[+href]]">Последняя</a></li>',
            'tplPage' => '@INLINE <li><a  class="nopreload" href="[[+href]]">[[+pageNo]]</a></li>',
            'tplPageActive' => '@INLINE <li class="active"><a  class="nopreload" href="[[+href]]">{{+pageNo]]</a></li>',
            'tplPagePrev' =>'@INLINE <li class="control prev"><a class="nopreload" href="[[+href]]">[[IncSvg? &svg=`arrow.svg`]]</a></li>',
            'tplPageNext' => '@INLINE <li class="control next"><a  class="nopreload" href="[[+href]]">[[IncSvg? &svg=`arrow.svg`]]</a></li>',
            'tplPageNextEmpty' => '@INLINE <li class="control disable next"></li>',
            'tplPagePrevEmpty' => '@INLINE <li class="control disable prev"></li>',
            'tplPageFirstEmpty' => '@INLINE <li class="first disabled"></li>',
            //'showLog' => 1,
        ));
        $outputs .= $modx->getPlaceholder('page.nav');
        $outputs .= '</div>';
        echo $outputs;
        // echo $resource->id .'
';
    }
}
Помогите пожалуйста если кто знает — я уже всю голову сломал.
Причём есть другие страницы с пагинацией но без такого левого меню в виде табов — там всё ок.
Олег
04 августа 2020, 17:29
modx.pro
857
0

Как отсортировать опцию и взять только 1 значение из нее?

Всем привет. Вроде бы не сложное задание, но решить не получается, может кто направит?
Есть опция Упаковка. Значения в этой опции могут быть разными ( 3 кг, 0,5 кг, 1,8 кг)
Нужно вывести только максимальную опцию (3 кг)
Как это преобразовать я не совсем понимаю, т.к. опции не отсортируются стандартными sortby и sortdir.

UPD: либо как второй вариант использую
[[msOptionsPrice.modification?
	&limit=`1`
	&product=`[[+id]]`
	&tpl=`tpl.msOptionsPrice.modification_YML`
	&sortby=`{"CAST(`msopModification`.`price` AS DECIMAL(10,2))": "DESC"}`
]]
Но тут проблема что выводятся все опции модификаций. Как отобрать нужную мне — не понятно
Alex
04 августа 2020, 13:22
modx.pro
758
0

Опросник со множеством вопросов и подсчетом голосов

Здравствуйте! пожалуйста, подскажите, как реализовать на сайте систему опросов с несколькими вопросами, и страницей результатов, и заполнением из админки? ни один из компонентов не подходит (Polls, xPoller, xPoller2, voteForms), все они реализуют вывод только 1 вопроса. что делать если не хватает знаний чтобы самостоятельно реализовать создание динамических форм из админки, с сохранением и подсчетом количества голосов, и возможностью голосовать без регистрации, но 1 раз для каждого ip?
может у кого-то есть опыт реализации такой задачи через migx? прошу подсказки. версия MODX самая последняя.
Martina
04 августа 2020, 07:41
modx.pro
550
0

stop words и socialtools

всем привет

буду рад если поможете с данной реализацией

есть пример

Select Data With PDO (+ Prepared Statements)

Example (PDO)

<?php
echo "<table style='border: solid 1px black;'>";
echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>";

class TableRows extends RecursiveIteratorIterator {
    function __construct($it) {
        parent::__construct($it, self::LEAVES_ONLY);
    }

    function current() {
        return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
    }

    function beginChildren() {
        echo "<tr>";
    }

    function endChildren() {
        echo "</tr>" . "\n";
    }
}

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests");
    $stmt->execute();

    // set the resulting array to associative
    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
    foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
        echo $v;
    }
}
catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?>

в socialtools есть таблицы modx_soc_dialogReceive и modx_soc_dialogSend

допустим в большом интернет магазине с нормальным количеством посетителей зарегистрированных в личном кабинете
и используеться socialtools с групповыми покупками или возможностью просто между собой общаться

в modx_soc_dialogReceive и modx_soc_dialogSend

есть table fields

Name

subject
message

sender

приведите пожалуйста простой пример с поиском по subject и message например в stop words «у нас можно купить сайт такойто link»
чтобы при запуске ресурса например resource stopwords искал по словам и если количество определённых слов больше 5 (или заданного количества определённого) «у нас» «сайт» и тд
осуществлялся временный blocked user данного пользователя и создавался report user в каком нибудь parent user reports

например parent 72
reported spam users

создаёться ресурс с pagetitile данного юзера перед его temporary blocked на уровне modx revo user (ну тоесть как сам в manager panel выбрал Blocked user) только както программно

я думаю всем интересна будет такая реализация в различных вариация

с помощью pdotools или каким либо другим образом

ну да и пока незабыл

был бы рад за совет как вывести определённый field из родных полей user или добавленных и уже как родных ))))

в Users во frontend (тоесть где сразу all users отображаються а потом уже detailed смотриться в manager)

всем спасибо за внимание
Кирилл
03 августа 2020, 22:33
modx.pro
749
0

Сортировка по цене, 0 в конце

Возможно ли как-то задать сортировку в msProducts так, чтобы товары с 0 были в конце списка?
Владимир
03 августа 2020, 19:51
modx.pro
1 267
0

modx revo mSearch2 синтаксис условий where

[[!pdoPage?
    &element=`mSearch2`
    &parents = `14`
    &templates = `4`
    &minQuery = `1`
    &where = `[[!additionalParammSearch]]`
    &includeTVs = `image,price,old_price,new_good,sku,model,brand,quantity`
    &tpl = `SimpleSearchResult`
    &tplWrapper = `@INLINE  <div class="sisea-results-list box inline">
                                [[+output]]
                            </div>`
    &limit = `[[!#GET.count-search:default=`12`]]`
]]
Подскажите как правильно составить условия фильтрации?

<?php
$items_for_json= [];
if( isset($_GET['ff_price']) && is_array($_GET['ff_price']) ){
    $items_for_json[] = '"price:":'.(int)$_GET['ff_price']['min'];
}
$ret_param = "{" . implode(',', $items_for_json) . "}";
return $ret_param;
при таком запросе фильтрует по цене, а как добавить несколько параметров? больше или равно? так `{«price:>=»:1,«price:<=»:100}` не работает
Евгений
03 августа 2020, 19:48
modx.pro
975
0

Как правильно в феноме пройтись по циклу for?

Для foreach понятно:
{foreach $list as $key => $value}
    {$key}: {$value}
{/foreach}
Даже нашел от такой вариант:
{foreach 1..31 as $value}
    {$value}
{/foreach}
Но мне надо шаг поставить свой.
Смотрел по этому примеру, но не понял как правильно все же должен виглядеть конечний вариант.
Подскажите может ктото уже сталкивался и есть готовый пример.
Тодор
03 августа 2020, 16:33
modx.pro
816
0

Как привязать к форме Tickets редактор CKEditor?

Всем привет. Кто-нибудь привязывал к форме Tickets данный редактор ckeditor.com/docs/ckeditor5/latest/builds/guides/overview.html#balloon-block-editor? У меня возникли сложности с Bootstrap. Что-то перекрывает стили и с левой стороны не появляется кнопка с выбором кнопок редактиррвания, а вторая проблема заключается в том, что этот тип редактора не поддерживает Textarea только конструкцию:

<div id="editor"></div>
Следовательно textarea нужно скрыть стилем:

display: none
И каким-то образом весь введенный код сохранять в textarea.
SEQUEL.ONE
03 августа 2020, 14:10
modx.pro
833
0

проверка нескольких tv

Добрый день!
Есть такой простой вывод переменной.
[[+tv1:is!=``:then=`[[+tv1]]`:else=`[[+tv2]]`]]
Как добавить туда еще одно условие — если tv1 и tv2 пустые, то вывести какую-либо фразу?
Олег
03 августа 2020, 12:00
modx.pro
823
0

ExtJS Пустое значение поля datefield

Есть поле с типом datefield:
{
					xtype        : 'datefield'
					,name        : 'date'
					,fieldLabel  : 'Date'
					,anchor      : '100%'
					,format      : MODx.config.manager_date_format
					,allowBlank  : true
					,emptyText   : null
				}
БД:
,'date' => array(
			'dbtype'   => 'date'
			,'phptype' => 'date'
			,'null'    => true
			,'default' => null
		)
Оно работает, т.е. сохраняет всё корректно.
Но есть одна проблема
Не получается сохранить пустое значение.
Т.е. если убрать (стереть, очистить) значение из поля, то оно (значение) не сохраняется, а остается прежним.
Как сохранять пустые значения?
П.С. мне нужно только выбор даты, без времени
Решено
Все оказалось гораздо проще. ExtJS отдает пустую строку, а не null
Соответственно нужно просто в процессоре написать:
public function beforeSet() {

		if(empty($this->getProperty('date'))){

			$this->setProperty('date', null);

		}


	}
Максим
03 августа 2020, 10:54
modx.pro
1 969
0