We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 30354
    • 227 Posts
    Сперва опишу суть проблемы.
    Почти в каждом моём сайте бывает так, что надо, скажем, к новостям добавлять комментарии, к анонсам - картинки из TV, к товарам - дополнительные чанки и т.д.

    Скажу сразу, что шаблоны плодить я не люблю. Если все реально сделать одним шаблоном, а отличается он только контент-зоной, то так я и делаю. Извращаюсь при это по разному: делаю радио-TV, скажем, с названием "Является ли эта страница новостью/товаром/галлерей?" - если "да", то вывожу чанк с доп. инфой, использую phx и т.д.

    Надоело, только что сваял плагинчик, который в зависимости от ID родительской директории, при сохранении добаляет необходимые куски. Может кому пригодится.
    $key_parent = '5'; // ID директории, для документов которой нужен дополнительный кусов верстки/кода/сниппетов
    $gallery = '{{ваш_чанк}}'; //имя чанка, который будет вставляться в контент-зону док-та, если он пренаждежит указанному паренту
    
    $e = &$modx->Event;
    if ($e->name == 'OnDocFormSave') {
    	$parid = $modx->getParent($e->params['id'],1);
    	if ($parid['id'] == $key_parent) {
    	 	if (!strstr($_POST['ta'],$gallery)) {
    	 	 	$new_content = $_POST['ta'].$gallery;
    	 	} else {
    	 	 	$new_content = $_POST['ta'];
    	 	}
    		$fields = array('content' => $new_content);
    		$table = $modx->getFullTableName('site_content');
    		//$modx->event->alert($e->params['id']);
    
    		$rows_affected = $modx->db->update(
    		  $fields, 
    		  $table,
    		  "id = {$e->params['id']}"
    		);
    	};
    };
    

    Вешать на событие OnDocFormSave.
      http://www.avizion.ru/ — строим стартап!
      http://tonatos.ru/ — Заходите в гости...
      • 19164
      • 1,215 Posts
      Quote from: TonatosSN at Aug 12, 2007, 06:26 PM


      Скажу сразу, что шаблоны плодить я не люблю. Если все реально сделать одним шаблоном, а отличается он только контент-зоной, то так я и делаю. Извращаюсь при это по разному

      Чем же обусловлено такое желание? Использование подобных прикруток очень запутывает логику понимания взаимосвязи между различными тв-параметрами и группами документов сайта. Тогда как использование различных шаблонов разделяет тв-параметры на отдельные группы.
        DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

        Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

        [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
        • 30354
        • 227 Posts
        Отстаивать свою позицию вряд ли буду активно, а спорить тем более. Но такое желание обсуловлено отчасти субъективными причинами, отчасти - удобством правки шаблонов (надо править один, а не десять, и в одном из них - обязательно что-то забыть), разгрузкой заказчика, для которого админка и так не всегда понятна, "а тут еще и шаблоны" - в случае плагина, обработка происходит прозрачно и автоматически (кстати, на подобный функционал можно повешать и смену шаблонов в зависимости от ID - ведь документы с разными шаблонами никогда не лежат в одной папке), ну и идеей, озвученой еще товарицем Оккамом веке этак в 13 - «Pluralitas non est ponenda sine necessitate» (Не следует множить сущности без необходимости).

        То есть, ИМХО, шаблон - это и есть шаблон, с кардинальными отличиями в дизайне/верстке, стилях и т.д. А когда шаблонов набирается с пяток-десяток (между прочим, тогда и внутри самих шаблонов нарушается логика - одни служат для новостей/товаров, другие для оформления статичных разделов и используются один раз), то в них и запутаться не долго. То есть, изменения в контент-зоне идейно не касаются изменений в шаблоне. Именно по-этому я предпочитаю делать эти изменения другими средствами: UltimateParent&PHx, сниппеты и плагины.

        Логика взаимосвязи между TV параметрами - это большой минус моего подхода. Нечего сказать. Впрочем, я совершенно не настаиваю, и еще раз повторю - по большей части это субъективный выбор.
          http://www.avizion.ru/ — строим стартап!
          http://tonatos.ru/ — Заходите в гости...
          • 19164
          • 1,215 Posts
          Продолжив тематику, подскажу одну очевидную вещь, о которой может быть ты и не думал, поэтому все так усложнял.

          Допустим имеем серию страниц, которые имеют одинаковый дизайн, но отличаются только областью контента. Делается все просто - берем шабон и разделяем его на 2 части, все что идет до контента - отправляем в чанк {{HEADER}}, все что идет после - в чанк {{FOOTER}}. В результате первый шаблон у нас имееет вид
          {{HEADER}}
          [*content*]
          {{FOOTER}}


          Ну а теперь отталкиваясь от этого можно плодить кучу подобных шабонов с нужным набором полей и тв-параметров
          {{HEADER}}
          <h1>[*longtitle*]</h1>
          [*content*]
          {{FOOTER}}

          или посложнее
          {{HEADER}}
          <h2>[*longtitle*]</h2>
          <div class="date iePNG">[*сайт_дата:date=`%B %Y`*]</div>
          <img src="[(base_url)][*сайт_скриншот*]" class="site_screenshot" width="320" height="140" alt="[*longtitle*]" />
          <ul class="link_list techs">
          	[*сайт_технологии*]
          </ul>
          <div style="margin: 20px 25px 0 0;">
          [*content*]
          </div>
          {{FOOTER}}
          


          В случае необходимости править дизайн, достаточно поковыряться лишь в 2х чанках. Зато теперь все четко разделено на шаблоны, все тв строго сгруппированы.
            DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

            Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

            [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
            • 26586
            • 184 Posts
            причем никто не мешает в {{header}} или {{footer}} (я маленькими пишу) использовать другие чанки, сниппеты и пр.
            А вместе с PHx вообще красота и простота, что-нибудь типа:
            <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
            <html lang="ru">
            <head>
              <title>[[getTitle]]</title>
              <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
              <link rel="icon" href="[(base_url)]favicon.ico" type="image/x-icon">
              <link rel="shortcut icon" href="[(base_url)]favicon.ico" type="image/x-icon">
            [*template:is=`5`:then=`
              <link rel="stylesheet" href="[(base_url)]assets/templates/spds/single.css" type="text/css" media="all">
            `:else=`
              <link rel="stylesheet" href="[(base_url)]assets/templates/spds/main.css" type="text/css" media="all">
              [*id:is=`1`:then=`<link rel="stylesheet" href="[(base_url)]assets/templates/spds/index.css" type="text/css" media="all">`*]
              <link rel="stylesheet" href="[(base_url)]assets/templates/spds/print.css" type="text/css" media="print">
            `*]
            </head>
              • 30354
              • 227 Posts
              Да нет же, думал smiley Так и делаю, когда надо больше двух шаблонов. Между прочим, в KiwiCommerce о котором я так громко кричал, как раз так реализованы шаблоны - через чанки.
              Мне кажется, что ход с одним шаблоном, в котором реализованы всех ходы и условия, более логичен для структуры, прост, и прозрачен для администратора сайта (я просто в шок впал, когда увидел кучу шалонов в том магазине!). Ведь, зачем иначе нужна система шаблонов? Не зря же нам даны PHx, плагины и UltimateParent smiley

              Еще раз скажу, что мой ход опирается только на субъективное видение "правильности", и ни на что не претендует.

              А ситуации бывают разными, может и плагинчик пристроит кто.
                http://www.avizion.ru/ — строим стартап!
                http://tonatos.ru/ — Заходите в гости...