Разделы

  
 

[offtop] SQL запрос

Волею судеб, пришлось при создании сайта на modx писать свой сниппет,
но так как я ни разу ни php ни sql, то некоторые вещи ставят меня в ступор
подскажите пожалуйста:

делаю запрос к таблице:

$id = $modx->documentIdentifier;
$dlist = $modx->db->query ('SELECT id, pagetitle FROM modx_site_content WHERE parent='.$id.' AND published=1');

так же у этих ресурсов, есть TV параметр — total-results — числовое значение.

Как достать тоже разобрался

$document_tvs = $modx->getTemplateVarOutput(true, $idd);
$templatevar_output = $document_tvs['total-results'];


А вот как сделать первый запрос с сортировкой по значению TV параметра?, ведь это разные таблицы.

Ну и в догонку второй вопрос, получив значение другого TV (тип image) как в сниппете к нему применить phx модификатор —

 [*img-news:phpthumbof=`w=65&h=65&zc=1`*]
  • 0
  • 23 февраля 2012, 01:51
  • hippie
  • 7

Постигая азы php mysql modx api\dbapi....

Хочу сделать что-то полезное для нас. =)
(несмотря на то, что с програмированием на php я только начинаю дружить и получаю постоянно пинки под зад)) )
Столкнулся с проблемой. Есть таблица в БД.
Сейчас она выводится так:
$result = $modx->db->query('SELECT id, content FROM `modx2_albums` ' ); 
$res = $modx->db->makeArray($result); 
echo '<pre>';
print_r($res);
echo '</pre>';

Получаю массив:

( Читать дальше )
  • 0
  • 11 января 2012, 17:40
  • sazanof
  • 6

Как вывести сниппет во внешнем файле?

Требуется выводить некоторые div-блоки так, чтобы о них не знали поисковые системы. Решил использовать метод №2 отсюда.

Что сделано?


Сам метод предполагает создание пустого div`а и загрузку в него контента через js с использованием jQuery. Код js:
$(function(){
    $('#div-id').load('js/file.html', function() {
    });
});

html-код, который необходимо скрыть от индексации, помещается в физически существующий файл на сервере «js/file.html».

Тут и возникла проблема — сами-то блоки выводятся, но парсер не может обработать специальные modx-теги, находящиеся во внешнем файле.

Как я понимаю, нужно подключить к этому файлу API modx. А как это сделать?

P.S. В файле — только html-код и 2 вызова Ditto. MODx evo 1.0.5.
  • 0
  • 10 января 2012, 02:49
  • lnk
  • 3

Ошибка при обращении к функциям modx в классе.

Пишу модуль. Мне надо залезть в базу используя функции modx в классе. Выглядит примерно так:
private function Import($f){
	global $modx;
	.......
	$result = $modx->query('SELECT isfolder FROM '.$modx->getFullTableName('site_content').' WHERE id='.$dirId);
	echo $modx->db->getValue($result);
	.......
}

За что получил ошибку.
Fatal error: Call to undefined method DocumentParser::query() in F:\-=soft-install=-\-=Graphic_video_audio_html_editors=-\xamp\xampp\htdocs\modx\assets\modules\importer\include\controller.class.php on line 189

Где я чего-то не дописал?

Как узнать id активного ресурса

Здравствуйте, подскажите как узнать id активного ресурса(на странице которого я нахожусь)
  • 0
  • 10 июня 2011, 08:19
  • JO-Cry
  • 8

Заменить запрос к базе на API

Как сделать то что нужно нашел но не могу правильно сделать используя API modx

<?php
$qwery="select id, description, isfolder from modx_site_content where parent=$id" ;
$result=mysql_query($qwery);
$row=mysql_fetch_array($result);
if($row[isfolder]=='1'){
   $buffer=array(); 
    while ($row=mysql_fetch_array($result)){
    $qwery1="select id, description from modx_site_content where parent=$row[id]";
    $result1=mysql_query($qwery1);
    while ($row1=mysql_fetch_array($result1)){
    $buffer[]=$row1[description];

     }; 
     }; 
}else{

$buffer=array();
while ($row=mysql_fetch_array($result)){

$buffer[]=$row[description];
};

}
$result=$buffer;
$result = array_unique($result);
foreach($result as $val)
{
    if (!empty($val))
    {
        $ret_arr[] = trim($val);
    }
}
foreach($ret_arr  as $desc) {
echo "<option value='[~[*id*]~]?ditto_cat_tags=".$desc."'>".$desc."</option>";
}
?>


Собственно нужно получить масив данных:
состоящий из description всех дочерних ресурсов указанного документа с учетом вложенности исключая документы с isfolder=1

понимаю что нужно использовать:
getChildIds что б получить все документы
и после получить уже нужные данные с помощью getDocuments
но вот как правильно написать ето не могу понять :(

решил вопрос, правда сам.

<?php
$result= $modx-> getChildIds (19); 
$txt = $modx->getDocuments($result);

foreach ( $txt as $value) {
$new_array[]=$value[description];
}
$res = array_unique($new_array);
foreach($res as $val)
{
    if (!empty($val))
    {
        $ret_arr[] = trim($val);
    }
}
foreach ($ret_arr as $ret) {
   echo $ret."<br />";
 }
?>
  • 0
  • 24 августа 2010, 01:11
  • Dmi3y
  • 11

Вопрос по вложенным документам

задача такая: есть некая ветвь в ресурсах, которая хранит в себе множество подветвей

и в конце мы имеем перечень документов (товаров в каталоге), вы можете увидеть их на картинке («Солнцезащитный очки CK Calvin»)

нужен какой-нибудь класс или метод, где я одним запросом смогу указать допустим родительский элемент, как здесь «акции (6)» и чтобы он вывел все активные документы (товары) без вложения всевозможных папок

То есть мне нужно получить список всех товаров по заданию родительского id

Подскажите, куда копать, уже кажется все перепробовал от сюда
www.modx-cms.ru/dokumentatsiya/razrabotka/programmirovanie/modx-api
ничего не помогает, или я что-то упустил…

Задача решена, всем спасибо!
  • +1
  • 10 августа 2010, 11:38
  • Astrov
  • 13

Выводим хлебные крошки на уровне вложенности больше 2х

Вот понадобилось без дополнительного шаблона вывести хлебные крошки только на уровне вложенности 3 и больше:
<?php
$par = "$id";
$level=count($modx->getParentIds($par));
if ($level > 1) {
 return $modx->runSnippet('Breadcrumbs',array('crumbSeparator'=>'>>>','showCurrentCrumb'=>'0'));
}
?>


Правда ещё можно отказаться от передачи id документа:)
  • 0
  • 20 мая 2010, 15:45
  • Dmi3y
  • 2

получить parent id

Есть задача
получить parent id
после чего сравнить его
и в зависимости от того чему он равен вывести результат

подскажите как правильно получить parent id
  • 0
  • 17 мая 2010, 19:57
  • Dmi3y
  • 7