We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 25356
    • 8 Posts
    Здравствуйте!
    Первый раз работаю с MODx. Возникла проблема. Есть модуль:
     /***********************************
    * 
    * MODx Offer
    * 
    ***********************************/
    
    $dbname = $modx->db->config['dbase']; //имя базы данных
    $dbprefix = $modx->db->config['table_prefix']; //префикс таблиц
    $mod_table = $dbprefix."manager_offer"; //таблица модуля
    $theme = $modx->config['manager_theme']; //тема админки
    $basePath = $modx->config['base_path']; //путь до сайта на сервере
    
    echo '
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"  lang="en" xml:lang="en">
    <head>
      <link rel="stylesheet" type="text/css" href="media/style/'.$theme.'/style.css" />
    </head>
    <body>
     
    <br />
    <div class="sectionHeader">Купоны</div>
     
      <div class="sectionBody">
     
    <script language="JavaScript" type="text/javascript">
    function postForm(action, id){
      document.module.action.value=action;
      if (id != null) document.module.item_id.value=id;
        document.module.submit();
      }
    </script>
     
    <form name="module" method="post">
    <input name="action" type="hidden" value="" />
    <input name="item_id" type="hidden" value="" />
    ';
     
    $action = isset($_POST['action']) ? $_POST['action']:'';
     
    switch($action) {
     
    ////Установка модуля (создание таблицы в БД)
    case 'install':
      $sql = "CREATE TABLE $mod_table (id INT(11) NOT NULL AUTO_INCREMENT, title VARCHAR(255), description TEXT(2000), address VARCHAR(255), date VARCHAR(255), origcost INT(55), sale VARCHAR(55), cost INT(55), PRIMARY KEY (id))";
      $modx->db->query($sql);
      header("Location: $_SERVER[REQUEST_URI]");
    break;
     
    ////Удаление таблицы модуля
    case "uninstall":
      $sql = "DROP TABLE $mod_table";
      $modx->db->query($sql);
      header("Location: $_SERVER[REQUEST_URI]");
    break;
     
    ////Добавление записи
    case 'add':
      if (!empty($_POST['item_id'])){//редактирование записи
        $data = mysql_fetch_array($modx->db->select("title, description, address, date, origcost, sale, cost", $mod_table, "id = $_POST[item_id]", "", ""));
        $id = $_POST['item_id'];
        $title = $data['title'];
        $description = $data['description'];
        $address = $data['address'];
        $date = $data['date'];
        $origcost = $data['origcost'];
        $sale = $data['sale'];
        $cost = $data['cost'];   
        $save = "update";
      }else{//если запись новая
        $id = '';
        $title = '';
        $description = '';
        $address = '';
        $date = '';
        $origcost = '';
        $sale = '';
        $cost = '';
        $save = "save";
      }
      echo '
    Название предложения<br /><input type="text" name="title" value="'.$title.'" /><br />
    Описание<br /><textarea name="description" cols="40" rows="5">'.$description.'</textarea><br />
    Алрес<br /><input type="text" name="address" value="'.$address.'" /><br /> 
    Дата действия предложения<br /><input type="text" name="date" value="'.$date.'" /><br />
    Обычная цена<br /><input type="text" name="origcost" value="'.$origcost.'" /><br />
    Скидка<br /><input type="text" name="sale" value="'.$sale.'" /><br />
    Ваша цена<br /><input type="text" name="cost" value="'.$cost.'" /><br />    
    <a href="#" onclick="postForm(\''.$save.'\',\''.$id.'\');return false;"><img src="media/style/'.$theme.'/images/icons/save.gif" align="absmiddle" />Добавить предложение</a>
     
    <a href="#" onclick="postForm(\'reload\',null);return false;"><img src="media/style/'.$theme.'/images/icons/cancel.gif" align="absmiddle" />Отмена</a>
    ';
    break;
     
    ////Сохранение записи в БД
    case 'save':
      $sql = "INSERT INTO $mod_table VALUES (NULL,'$_POST[title]','$_POST[description]','$_POST[address]','$_POST[date]','$_POST[origcost]','$_POST[sale]','$_POST[cost]')";
      $modx->db->query($sql);
      header("Location: $_SERVER[REQUEST_URI]");
    break;
     
    ////Обновление записи в БД
    case 'update':
      $fields = array(
         "title" => $_POST['title'],
         "description" => $_POST['description'],
         "address" => $_POST['address'],
         "date" => $_POST['date'],
         "origcost" => $_POST['origcost'],
         "sale" => $_POST['sale'],
         "cost" => $_POST['cost']    
         );
      $query = $modx->db->update($fields, $mod_table, "id = ".$_POST['item_id'].""); 
      header("Location: $_SERVER[REQUEST_URI]");
    break;
     
     
    ////Перезагрузка страницы (сброс $_POST)
    case 'reload':
      header("Location: $_SERVER[REQUEST_URI]");
    break;
     
    ////Удаление записи в БД 
    case 'delete':
      $modx->db->delete($mod_table, "id = $_POST[item_id]");
      header("Location: $_SERVER[REQUEST_URI]");
    break;
     
    ////Страница модуля
    default:
      if (mysql_num_rows(mysql_query("show tables from $dbname like '$mod_table'"))==0){
      //если таблицы не существует, выводим кнопку "Установить модуль"
      
        echo '<a href="#" onclick="postForm(\'install\',null);return false;">Установить модуль</a>';
     
      }else{
      //если же модуль уже установлен, выводим его
      
        echo '
        </form>
        <a href="#" onclick="postForm(\'add\',null);return false;"><img src="media/style/'.$theme.'/images/icons/newdoc.gif" align="absmiddle" />Добавить</a>
        ';
     
        $data_query = $modx->db->select("*", $mod_table, "", "id ASC", ""); 
     
        echo '
    <br /><br />
    <table width="98%" border="0" cellpadding="2" cellspacing="1" bgcolor="#707070">
      <thead>
      <tr>
        <td><b>Название предложения</b></td>
        <td><b>Описание</b></td>
        <td><b>Адрес</b></td>
        <td><b>Дата действия предложения</b></td>
        <td><b>Обычная цена</b></td>
        <td><b>Скидка</b></td>
        <td><b>Ваша цена</b></td>
        <td><b></b></td>
        <td><b></b></td>
      </tr>
      <thead>
      <tbody>
    ';
     
        while ($data = mysql_fetch_array($data_query)){//выводим записи
        echo '
      <tr bgcolor="#FFFFFF">
        <td>'.$data["title"].'</td>
        <td>'.$data["description"].'</td>
        <td>'.$data["address"].'</td>
        <td>'.$data["date"].'</td>
        <td>'.$data["origcost"].'</td>
        <td>'.$data["sale"].'</td>
        <td>'.$data["cost"].'</td>
        <td align="center"><a href="#" title="Редактировать" onclick="postForm(\'add\','.$data["id"].');return false;"><img src="media/style/'.$theme.'/images/icons/logging.gif" align="absmiddle" /></a></td>
        <td  align="center"><a href="#" title="Удалить" onclick="if(confirm(\'Вы уверены?\')){postForm(\'delete\','.$data["id"].')};return false"><img src="media/style/'.$theme.'/images/icons/delete.gif" align="absmiddle" /></a></td>
      </tr>';
        }
     
        echo '
      </tbody>
    </table>
    <br /><br />
    <a href="#" onclick="if(confirm(\'Вы уверены?\')){postForm(\'uninstall\',null)};return false;"><img src="media/style/'.$theme.'/images/icons/delete.gif" align="absmiddle" />Удалить все предложения</a>
    ';
     
      }
    break;
    } 
     
    echo '
    </div>
    </body>
    </html>
    ';
    


    Каким должен быть сниппет??И какие есть еще способы вывода инфы которая добавляется в базу при помощи этого модуля?..
    Вот сниппет не выходит правильный написать..
    Очень прошу помочь.
      • 26744
      • 157 Posts
      "Каким должен быть сниппет?" - любым smiley
      Ваш модуль позволяет через Админку менеджеру управлять некими "предложениями".
      Сниппет пишется для отображения (это предположительно)этих данных БД. Поэтому нужно написать простой PHP-код для вывода данных соответствующим образом.

      "Вот сниппет не выходит правильный написать.." - а что получается?
        • 25356
        • 8 Posts
        С выводом получилось..
        <?php
        $result = $modx->db->query( 'SELECT id, title, description, address, date, origcost, sale, cost FROM `db_manager_offer` ORDER BY date ASC' );
        $row = $modx->db->getRow($result);
        
        echo $row['title'];
        ?>
        


        Но как оказалось, HTML теги даже если через PHP не проходят. Следовательно вопрос: где что надо прописать, чтобы возможно было вызывать данные в чанке? Отдельным кодом например: [title] или просто $row[’title’]
          • 25356
          • 8 Posts
          Я так понимаю все делается при помощи parseChunk только как использовать?
           $chunkArr2 = array(
                      'id' => $data['id'],
                      'title' => $data['title'],
                   );
          
                   $msqrow .= $modx->parseChunk('coupons',$chunkArr2, '[+', '+]');
                   return $msqrow;
          


          что не верно?
            • 26744
            • 157 Posts
            Quote from: rockmania at Feb 15, 2011, 01:01 PM

            С выводом получилось..
            Но как оказалось, HTML теги даже если через PHP не проходят. Следовательно вопрос: где что надо прописать, чтобы возможно было вызывать данные в чанке? Отдельным кодом например: [title] или просто $row[’title’]
            Теги выводим через echo "
            "; - так? Или ближе к вашему примеру: echo $row[’title’]."
            ";
            Я делаю весь вывод через сниппеты - мне проще.

            Quote from: rockmania at Feb 15, 2011, 01:01 PM

            Я так понимаю все делается при помощи parseChunk только как использовать?
            что не верно?
            А вы понимаете для чего нужны чанки? Это HTML-код, который используется в других элементах. Т.е. если есть повторяющиеся HTML-куски, то их в чанки МОЖНО засунуть.
            Если всё выводить в сниппетах, то чанки не нужны. Да простят меня любители чанков wink
              • 25356
              • 8 Posts
              Да, я перечитала кучу информации про сниппеты и везде примеры с вывдом HTML тегов. Только почему-то не получается у меня...МОжет сам код неверно записываю..

              Например echo "<table><tr><td>" $row[’title’];
              echo "</td></tr></table>";
              не проходит. Придирается к скобкам < и > . В чем может быть проблема?
                • 26744
                • 157 Posts
                Quote from: rockmania at Feb 16, 2011, 07:30 AM

                Да, я перечитала кучу информации про сниппеты и везде примеры с вывдом HTML тегов. Только почему-то не получается у меня...МОжет сам код неверно записываю..

                Например echo "<table><tr><td>" $row[’title’];
                echo "</td></tr></table>";
                не проходит. Придирается к скобкам < и > . В чем может быть проблема?

                Проблема в нехватке знаний sad
                echo "<table><tr><td>".$row[’title’];
                echo "</td></tr></table>";

                Не хватало точки между <td>" и $row[’title’]
                  • 25356
                  • 8 Posts
                  Ну я только учусь.. undecided
                    • 33646
                    • 26 Posts
                    ихмо, вам modx еще рано. Лучше джумлу ковыряйте
                      • 26744
                      • 157 Posts
                      Quote from: Zuba at Feb 18, 2011, 12:37 AM

                      ихмо, вам modx еще рано. Лучше джумлу ковыряйте
                      Если есть желание/стремление, то лучше сразу MODx изучать. Когда придет понимание всех элементов (сниппетов, чанов, плагинов, модулей), откроются безграничные возможности сайтостроения smiley