Advanced Forum - Topicnyitó hozzászólás a kommentek alatt - 2.

Kategória: 
Leírás

Az előző postban azt néztük meg, hogyan kerül a topicnyitó hozzászólás node, amelyhez hozzá lehet szólni, a kommentek alá. Most nézzük, hogyan fog ez úgy kinézni, ahogy kellene!

Aki használt már views-t, és css-ben dolgozott vele az tudja, hogy egy nézet előállításakor rengeteg div is keletkezhet, saját views-osztályokkal, ami alapból nagyon jó, hiszen megkönnyíti a vele való munkát. Most is nekieshetnénk, és CSS-ben belőve a megfelelő osztályokat össze tudnánk szedni a dolgokat, de minek dolgozzunk kétszer?

Ha már egyszer megformáztuk a fórumunkat, most nyaljuk végig az összes beállítást, és végezzük el a views által generált css classokra is?

Miért ne pakolhatnám inkább a kész, megformázott osztályokat a létrehozott views-ba? Ráadásul, ha később módosítanom kell, akkor sem kétszer dolgozok.

Építsünk fel tehát egy comment wrappert, és töltsük bele a szükséges adatot!

Fontos! Ha a továbbiakban leírtak kínainak tűnnek, ezt mindenképpen olvasd el! Direkt ennek a megértéséhez-kivitelezéséhez készült, mert egy postban túl tömény és hosszú lett volna!

Az előző postban létrehoztunk tehát egy nézetet, és egy blokkban jelenítettük meg a topicnyitó hozzászólást. Most ennek az alnézetnek a Display output-jánál a views-view.tpl.php-ban cseréljük le az eredeti kódot, és views-view--nezet_neve--block-1.tpl.php néven mentsük el:

  <div id="myblock-<?php print $id; ?>" class="top-post forum-post comment comment-published node node-type-forum clear-block">
  <?php print $rows; ?>
  </div>
 

Ezzel semmi mást nem csináltunk, csak deklaráltuk a blokkot, és felruháztuk azokkal az osztályokkal, amiket a node megjelenésekor generál. Ezt lehetne elegánsabban is, mondjuk egy views preprocess-ben használni a $class tömböt, de ha nem akarjuk nagyon széttúrni a fórum tartalomtípus megjelenését más miatt, szvsz nem szükséges.

A Style-outputnál utoljára szereplő filenéven (views-view-unformatted--topicindito-hsz--block-1.tpl.php) hozzuk létre a template file-t az alábbi tartalommal:

  <div class="forum-post-wrapper">
<?php foreach ($rows as $id => $row): ?>
    <?php print $row; ?>
<?php endforeach; ?>
  </div>

Itt megkapja a forum-post-wrapper classt, pont úgy, mint bármilyen más hozzászólás.

A Row Style outputnál utoljára szereplő filenéven (views-view-fields--topicindito-hsz--block-1.tpl.php) hozzuk létre a template file-t az alábbi tartalommal:

<?php foreach ($fields as $id => $field): ?>
<?php print $field->content; ?>
<?php endforeach; ?>

Ezzel "sallangtalanítjuk" a nézetet, nincs szükségünk a views által a mezők köré pakolt osztályokra. Ezeket az osztályokat mi magunk adjuk meg egyesével minden egyes mező köré.

Ezután egyesével szerksztjük a mezőket. Itt is mindig az utolsó file-néven mentsük el a tpl-eket (views-view-field--topicindito-hsz--block-1--mezo_neve.tpl.php).

Field Customfield: PHP kód (ID: phpcode) tplje:

<div class="forum-post-panel-sub">
<?php print $output; ?>
</div>

A Field Tartalom: Post date (ID: created) tpl-jébe ez kerül:

<div class="post-info clear-block ">
    <div class="posted-on"> 
        <?php print $output; ?>
    </div>
</div>

És végül a Field Tartalom: Törzs (ID: body)

<div class="forum-post-panel-main clear-block">
    <div class="content">
<?php print $output; ?>
    </div>
</div>

Ha leellenőrzitek egy komment szerkezetét, látszik, hogy pontosan ugyanígy épülnek fel a kommentek mezői.

Ezután töltsétek fel ezeket a tpl-eket a smink könyvtárában, vagy theme registry törléssel, vagy a views Theme information-nál Rescan template-re kattinva máris az új szerkezet szerint látjátok a nézetet.

Ja, és még van egy dolgunk, eltűntetni a legfelső hozzászólást.

Ehhez egy advf-forum-post.tpl.php nevű file-t hozz létre a smink könyvtárába ezzel a tartalommal, majd ürítsd a theme registry-t.

<?php
// $Id: advf-forum-post.tpl.php,v 1.1.2.21 2009/02/07 04:40:48 michellec Exp $

/**
 * @file
 *
 * Theme implementation: Template for each forum post whether node or comment.
 *
 * All variables available in node.tpl.php and comment.tpl.php for your theme
 * are available here. In addition, Advanced Forum makes available the following
 * variables:
 *
 * - $top_post: TRUE if we are formatting the main post (ie, not a comment)
 * - $reply_link: Text link / button to reply to topic.
 * - %total_posts: Number of posts in topic (not counting first post).
 * - $new_posts: Number of new posts in topic, and link to first new.
 * - $links_array: Unformatted array of links.
 * - $account: User object of the post author.
 * - $name: User name of post author.
 * - $author_pane: Entire contents of advf-author-pane.tpl.php.

 */
?>

<?php if (!$top_post): ?>
  <?php $classes .= $comment_classes; ?>
  <div id="comment-<?php print $comment->cid; ?>" class="forum-post <?php print $classes; ?> clear-block">

  <div class="forum-post-wrapper">

    <div class="forum-post-panel-sub">
      <?php print $author_pane; ?>
    </div>
  <div class="post-info clear-block">
    <div class="posted-on">
      <?php print $date ?>

      <?php if (!$top_post && !empty($comment->new)): ?>
        <a id="new"><span class="new">(<?php print $new ?>)</span></a>
      <?php endif; ?>
    </div>

    <?php if (!$top_post): ?>
      <span class="post-num"><?php print $comment_link . ' ' . $page_link; ?></span>
    <?php endif; ?>
  </div>
    <div class="forum-post-panel-main clear-block">
      <div class="content">
        <?php print $content ?>
      </div>

      <?php if ($signature): ?>
        <div class="author-signature">
          <?php print $signature ?>
        </div>
      <?php endif; ?>
    </div>
  </div>

  <div class="forum-post-footer clear-block">
    <div class="forum-jump-links">
      <a href="#top" title="Jump to top of page"><?php print t("Top"); ?></a>
    </div>

    <?php if (!empty($links)): ?>
      <div class="forum-post-links">
        <?php print $links ?>
      </div>
    <?php endif; ?>
  </div>
</div>
<?php endif; ?>

Ha minden jól megy, most dettó ugyanazt kaptad alul, mint korábban felül. Előfordulhat, hogy css-ben még itt-ott igazítani kell hozzá, sőt, azt is lehet, hogy nem blokkban, hanem egy megfelelő page.tpl-ban az embed_views függvénnyel a $content után íratod ki a views-t, és akkor a block felépítése sem kavar bele, de mivel ez a post már így is elég hosszú lett, ezért nem részletezem..

Jó próbálgatást!

Hozzászólások

Ez marha jó kérdés, ha

Ez marha jó kérdés, ha egyszer sikerül megoldanom, tuti írok róla posztot!

Hy! Nem tudom jó helyen

Hy!

Nem tudom jó helyen kérdezek, de hátha :) Olyan bajom lenne, hogy ez az advanced forum fordítva számozza a kommenteket, tehát mindig az utolsó komment az 1-es számú, ez nagyon zavar, de nem láttam állíthatósági lehetőséget, esetleg, ha fordított időrendbe teszem, de az meg zavaró abban az esetben, ha az utolsó kommentet akarom legelől látni.

Itt tudok vmi tippet kapni rá hogy lehet megoldani?

Hozzászólás

A mező tartalma nem nyilvános.
  • Internal paths in double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or relative path.
  • Engedélyezett HTML elemek: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <del> <img>
  • A webcímek és email címek automatikusan linkekké alakulnak.
  • A sorokat és bekezdéseket a rendszer automatikusan felismeri.
  • Engedélyezett HTML elemek: <a> <blockquote> <br> <cite> <code> <dd> <del> <div> <dl> <dt> <em> <li> <ol> <p> <span> <strong> <ul>
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <bash>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <mysql>, <php>, <python>, <ruby>, <sql>. The supported tag styles are: <foo>, [foo].
  • Minden email cím át lesz alakítva ember által olvasható módon, vagy (ha a JavaScript engedélyezett) ki lesz cserélve kattintható, de biztonságos hivatkozásra.
Type the characters you see in this picture. (verify using audio)
Type the characters you see in the picture above; if you can't read them, submit the form and a new image will be generated. Not case sensitive.