Павел

Павел

С нами с 11 июня 2015; Место в рейтинге пользователей: #114
13 октября 2016, 19:01
0
Сколько пробовал, не получается. Пробовал новый резолвер создать, в него всё это дело записал.
Установка пакета не завершается, хотя скрипт всё выполняет, что от него требуется, Илья, не подскажешь, почему так, как более опытный)

<?php

/** @var $modx modX */
if (!$modx = $object->xpdo AND !$object->xpdo instanceof modX) {
    return true;
}

/** @var $options */
switch ($options[xPDOTransport::PACKAGE_ACTION]) {
    case xPDOTransport::ACTION_INSTALL:
    case xPDOTransport::ACTION_UPGRADE:
	// Скрипт вставлял здесь
        break;
    case xPDOTransport::ACTION_UNINSTALL:
        break;
}

return true;
13 октября 2016, 16:47
+2
На чистом MODX через консоль попробовал, ошибка вылетает
[2016-10-13 16:36:22] (INFO @ /home/s6897/www/core/components/console/processors/exec.class.php(15) : eval()'d code : 303)
success!!
12 октября 2016, 13:48
0
Ещё бы разобраться, как новый источник файлов создавать… ну и права желательно… и вообще круто будет)
11 октября 2016, 20:13
+3
Сам спросил, сам и отвечаю)) Может кому пригодится.

В общем правим резолвер tvs. Он находится здесь: siteExtra-master/_build/resolvers/resolve.tvs.php

В общем меняем вызовы тивишек:

$name = 'address';
        if (!$tv = $modx->getObject('modTemplateVar', array('name' => $name))) {
            $tv = $modx->newObject('modTemplateVar');
        }
        $tv->fromArray(array(
            'name'         => $name,
            'type'         => 'text',
            'caption'      => 'Адрес',
            'category'     => $cat_id
        ));
        $tv->save();
        $tvs[] = $tv->get('id');
        
        $name = 'phone';
        if (!$tv = $modx->getObject('modTemplateVar', array('name' => $name))) {
            $tv = $modx->newObject('modTemplateVar');
        }
        $tv->fromArray(array(
            'name'         => $name,
            'type'         => 'text',
            'caption'      => 'Телефон',
            'category'     => $cat_id
        ));
        $tv->save();
        $tvs[] = $tv->get('id');

На:

$name = 'address';
        $tempID = '1,2'; // Пишем id наших шаблонов
        if (!$tv = $modx->getObject('modTemplateVar', array('name' => $name))) {
            $tv = $modx->newObject('modTemplateVar');
        }
        $tv->fromArray(array(
            'name'         => $name,
            'type'         => 'text',
            'caption'      => 'Адрес',
            'category'     => $cat_id
        ));
        $tv->save();
        $tvs[] = $tv->get('id').'-'.$tempID;
        
        $name = 'phone';
        $tempID = '2';  // Пишем id наших шаблонов
        if (!$tv = $modx->getObject('modTemplateVar', array('name' => $name))) {
            $tv = $modx->newObject('modTemplateVar');
        }
        $tv->fromArray(array(
            'name'         => $name,
            'type'         => 'text',
            'caption'      => 'Телефон',
            'category'     => $cat_id
        ));
        $tv->save();
        $tvs[] = $tv->get('id').'-'.$tempID;

Можно указать один шаблон, а можно несколько через запятую.

А также заменяем скрипт который записывает id этих шаблонов для тивишек.

Меняем:

foreach ($modx->getCollection('modTemplate') as $template) {
            $templateId = $template->id;
            foreach ($tvs as $k => $tvid) {
                if (!$tvt = $modx->getObject('modTemplateVarTemplate', array('tmplvarid' => $tvid, 'templateid' => $templateId))) {
                    $record = array('tmplvarid' => $tvid, 'templateid' => $templateId);
                    $keys = array_keys($record);
                    $fields = '`' . implode('`,`', $keys) . '`';
                    $placeholders = substr(str_repeat('?,', count($keys)), 0, -1);
                    $sql = "INSERT INTO {$modx->getTableName('modTemplateVarTemplate')} ({$fields}) VALUES ({$placeholders});";
                    $modx->prepare($sql)->execute(array_values($record));
                }
            }
        }

На:

foreach ($modx->getCollection('modTemplate') as $template) {
            $templateId = $template->id;
            foreach ($tvs as $k => $tv) {
                $tvOpt = explode("-", $tv);
                $tvid = $tvOpt[0];
                $tvTemps = explode(",",$tvOpt[1]);
                
                foreach ($tvTemps as $tvTemp){
                    if($templateId == $tvTemp){
                        if (!$tvt = $modx->getObject('modTemplateVarTemplate', array('tmplvarid' => $tvid, 'templateid' => $templateId))) {
                            $record = array('tmplvarid' => $tvid, 'templateid' => $templateId);
                            $keys = array_keys($record);
                            $fields = '`' . implode('`,`', $keys) . '`';
                            $placeholders = substr(str_repeat('?,', count($keys)), 0, -1);
                            $sql = "INSERT INTO {$modx->getTableName('modTemplateVarTemplate')} ({$fields}) VALUES ({$placeholders});";
                            $modx->prepare($sql)->execute(array_values($record));
                        }
                    }
                }
            }
        }

Скажу, что этого очень не хватало. Думаю, что Илья может доработать это дело получше)). А вообще хотелось бы увидеть подобный функционал в этом пакете.
11 октября 2016, 18:09
0
Подскажите кто-нибудь одну вещь.
Как при создании ТВ указать, для каких шаблонов она доступна?
08 октября 2016, 02:11
0
Спасибо
30 сентября 2016, 12:40
0
Тоже интересуюсь этим вопросом
26 сентября 2016, 19:27
0
А можно как-нибудь, если 0 человек проголосовало, показывать 5 пустых звёзд, вместо пустоты, при вызове результатов опроса?
15 сентября 2016, 17:26
0
Добрый день, подскажите пожалуйста, будет ли работать импорт со свойствами созданных через компонент msExtraFields… Просто они там по особому создаются…

05 сентября 2016, 20:42
0
Хм, заметил странность.
Обновил сайт до 2.5.1 на хостинге таймвеб, все норм. Сайт на модхосте обновил, все крашутся миниатюры… пришлось откатиться пока 2.5.0… Буду тестить дальше, бред какой то
09 августа 2016, 16:25
0
На тестовом сайте modhost долго компоненты ставятся и это больше минуты примерно занимает… Приходится несколько раз пробовать устанавливать свой пакет, пока все компоненты не будут установлены…
20 июля 2016, 10:44
+1
Недавно прикручивал себе слайдер от бутстрапа к migx… В общем смотри

<div id="carousel_top" class="carousel slide border_box" data-ride="carousel">
	<!-- Indicators -->

	<ol class="carousel-indicators">
	  [[!getImageList?
		&tvname=`slider_main`
		&tpl=`slider_main_indicators`
		&docid=`[[*id]]`
	  ]]
	</ol>

	<!-- Wrapper for slides -->
	<div class="carousel-inner">

	[[!getImageList?
		&tvname=`slider_main`
		&tpl=`slider_main`
		&docid=`[[*id]]`
	]]

	</div>

	<!-- Controls -->
	<a class="left carousel-control" href="#carousel_top" data-slide="prev"></a>
	<a class="right carousel-control" href="#carousel_top" data-slide="next"></a>
</div>

Чанк: slider_main
<div class="item [[+idx:is=`1`:then=`active`]]"  >
    <img src="[[+image]]">
</div>

Чанк: slider_main_indicators
<li data-target="#carousel_top" data-slide-to="[[!defone? &input=`[[+idx]]`]]" [[+idx:is=`1`:then=`class="active"`]]></li>

И сниппет defone (который как раз и вычитает от idx единичку)
<?php
return $input = $input-1;

14 июля 2016, 11:21
0
Вот как выглядит на php 7.0
А вот на php 5.6
14 июля 2016, 11:12
0
FastUploadTV не выводит миниатюру на php 7.0
13 июля 2016, 20:15
+1
Добрый день. Интересно. Напишите на почту daruse93@gmail.com
13 июля 2016, 15:58
0
Сделай проверку на get=page
[[#GET.page:notempty=`
	[[!+page.nav]]
`]]
13 июля 2016, 15:55
-1
Хм… костыльный вариант могу предложить… создаёшь товар с этой стоимостью и при нажатии на чекбокс он добавляется в корзину.
13 июля 2016, 15:53
+1
у меня все сайты в 2-3 раза быстрее работать стали.
13 июля 2016, 15:51
+1
Да всё также, как и на простом php. Вызываешь сниппет с этим скриптом на той же странице, где и форма. Саму форму отправляешь постом на текущею страницу.
<form action="" method="POST">
Страница после чего перезагружается и сниппет отрабатывает.