シートのコンテンツ領域に新しい位置を追加しようとしています。つまり、ブログのエントリを次のようにしたいと思います。
投稿 #1 投稿 #2 投稿 #3 新しいポジション #1 投稿 #4 投稿 #5 投稿 #6 新しいポジション #2 投稿 #7 投稿 #8 投稿 #9
最終的に、これら 2 つの新しい位置はバナー広告に使用されます。
ブログは非常に動的で、記事はすぐに下にスクロールされるため、記事に位置を挿入したくありません。さらに、自動化できるものはすべて自動化する必要があります。これを行う賢い方法は、ブログ レイアウトのオーバーライドを作成することだとアドバイスされています。今、私が初心者であり、片手を鼻に縛り付け、猫を副操縦士として盲目的に飛行していることを考えると、少し道に迷ったように感じ始めています。PHP とオーバーライドについてできることはすべて読みましたが、十分ではないようです。私は Artisteer を使用してテンプレートを作成しています。ベーシックで派手なものはなく、ベーシックなスタイリングです。私が使用しているテンプレートは「testa4_50」と呼ばれています (ええ... 私は吸盤のバージョン 50 を使用しています... 急な学習曲線... 始めないでください....)。テスト目的で、Windoze XP で Xampp をローカルホストとして使用しています。私の Joomla の実装は 3.0.3 です Artisteer はオーバーライドを多用しているようです。
私が最初に試みたのは、ホームページの本文のどこかに新しい位置を挿入して、コードを理解しようとするかどうかを確認することでした。
私が取った手順:
1 - C:\xampp\htdocs\j303b1\templates\testa4_50\ で templateDetails.xml を見つけます。 2 - リストを見つけて、「position-new」を追加します。それは次のように見えました:
<positions>
<position>debug</position>
<position>position-2</position>
<position>position-4</position>
<position>position-5</position>
<position>position-7</position>
<position>position-9</position>
<position>position-10</position>
<position>position-11</position>
<position>position-12</position>
<position>position-15</position>
<position>position-16</position>
<position>position-17</position>
<position>position-18</position>
<position>position-19</position>
<position>position-20</position>
<position>position-21</position>
<position>position-22</position>
<position>position-23</position>
<position>position-24</position>
<position>position-25</position>
<position>position-26</position>
<position>position-27</position>
<position>position-new</position>
</positions>
3 - C:\xampp\htdocs\j303b1\templates\testa4_50\ で index.php を見つけます。 4 - 位置ブロックで正しい場所を見つけます。
<?php
echo $view->position('position-19', 'art-nostyle');
if ($view->containsModules('position-2'))
echo artxPost($view->position('position-2'));
echo $view->positions(array('position-20' => 50, 'position-21' => 50), 'art-article');
echo $view->position('position-12', 'art-nostyle');
echo artxPost(array('content' => '<jdoc:include type="message" />', 'classes' => ' art-messages'));
echo '<jdoc:include type="component" />';
echo $view->position('position-22', 'art-nostyle');
echo $view->positions(array('position-23' => 50, 'position-24' => 50), 'art-article');
echo $view->position('position-25', 'art-nostyle');
?>
5 - 既存のコードをコピーして新しい位置を追加します。
<?php
echo $view->position('position-19', 'art-nostyle');
if ($view->containsModules('position-2'))
echo artxPost($view->position('position-2'));
echo $view->positions(array('position-20' => 50, 'position-21' => 50), 'art-article');
echo $view->position('position-12', 'art-nostyle');
echo $view->position('position-new', 'art-nostyle');
echo artxPost(array('content' => '<jdoc:include type="message" />', 'classes' => ' art-messages'));
echo '<jdoc:include type="component" />';
echo $view->position('position-22', 'art-nostyle');
echo $view->positions(array('position-23' => 50, 'position-24' => 50), 'art-article');
echo $view->position('position-25', 'art-nostyle');
?>
6 - Joomla / Preview で位置を確認します 7 - すべて正常に動作します。
それで、「echo $view->position('position-new', 'art-nostyle');」というコードを見つけました。他の場所でも動作するはずです。
さて、ブログのどこかに新しいポジションを作ってみました。
私が取った手順:
1 - \Dell-pc\xampp\htdocs\J303b1\templates\testa4_50\html\com_content\category で blog.php を見つけます (完全なファイルはこの投稿に添付されています)
2 - ファイル内の正しい場所を見つける
echo artxPost(array('header-text' => $view->pageHeading, 'content' => ob_get_clean()));
?>
<?php $leadingcount=0 ; ?>
<?php if (!empty($this->lead_items)) : ?>
<div class="items-leading">
<?php foreach ($this->lead_items as &$item) : ?>
<div class="leading-<?php echo $leadingcount; ?><?php echo $item->state == 0 ? ' system-unpublished' : null; ?>">
<?php
$this->item = &$item;
echo $this->loadTemplate('item');
?>
</div>
<?php $leadingcount++; ?>
<?php endforeach; ?>
</div>
<?php endif; ?>
3 - コードを挿入します。
echo artxPost(array('header-text' => $view->pageHeading, 'content' => ob_get_clean()));
?>
<?php echo $view->position('position-new', 'art-nostyle') ?>
<?php $leadingcount=0 ; ?>
<?php if (!empty($this->lead_items)) : ?>
<div class="items-leading">
<?php foreach ($this->lead_items as &$item) : ?>
<div class="leading-<?php echo $leadingcount; ?><?php echo $item->state == 0 ? ' system-unpublished' : null; ?>">
<?php
$this->item = &$item;
echo $this->loadTemplate('item');
echo $view->position('position-new', 'art-nostyle');
?>
</div>
<?php $leadingcount++; ?>
<?php endforeach; ?>
</div>
<?php endif; ?>
4 - テスト = FAIL (位置がホームページのどこにも表示されない)
5 - コードを次のように変更します
そして同じ位置に挿入。テスト = 不合格。
============================ この時点で、私は困惑しています。コンテンツ領域のどこにも新しい位置を挿入できません。もともと、上記のループにこのコードを挿入することを考えていました (3 番目の投稿の後に少なくとも 1 つの新しい位置を挿入できるかどうかを確認するため):
<?php $leadingcount=0 ; ?>
<?php if (!empty($this->lead_items)) : ?>
<div class="items-leading">
<?php foreach ($this->lead_items as &$item) : ?>
<div class="leading-<?php echo $leadingcount; ?><?php echo $item->state == 0 ? ' system-unpublished' : null; ?>">
<?php
$this->item = &$item;
echo $this->loadTemplate('item');
echo $view->position('position-new', 'art-nostyle');
If ($leadingcount==3) echo $view->position('position-new', 'art-nostyle');
?>
</div>
<?php $leadingcount++; ?>
<?php endforeach; ?>
</div>
<?php endif; ?>
しかし、もちろん、うまくいきません。
どんな提案やアドバイスも大歓迎です!
Blog.php ファイル
<?php
defined('_JEXEC') or die;
require_once dirname(dirname(dirname(dirname(__FILE__)))) . DIRECTORY_SEPARATOR . 'functions.php';
if ('artisteer' == JFactory::getApplication()->getTemplate(true)->params->get('blogLayoutType')) {
require 'art_blog.php';
return;
}
Artx::load("Artx_Content");
$view = new ArtxContent($this, $this->params);
echo $view->beginPageContainer('blog');
ob_start();
if ($this->params->get('show_category_title', 1) || strlen($this->params->get('page_subheading'))) {
echo '<h2>';
echo $this->escape($this->params->get('page_subheading'));
if ($this->params->get('show_category_title') && strlen($this->category->title))
echo '<span class="subheading-category">' . $this->category->title . '</span>';
echo '</h2>';
}
if ($this->params->def('show_description', 1) || $this->params->def('show_description_image', 1)) {
echo '<div class="category-desc">';
if ($this->params->get('show_description_image') && $this->category->getParams()->get('image'))
echo '<img src="' . $this->category->getParams()->get('image') . '" alt="" />';
if ($this->params->get('show_description') && $this->category->description)
echo JHtml::_('content.prepare', $this->category->description, '', 'com_content.category');
echo '</div>';
}
echo artxPost(array('header-text' => $view->pageHeading, 'content' => ob_get_clean()));
?>
<?php echo $view->position('position-new', 'xhtml') ?>
<?php $leadingcount=0 ; ?>
<?php if (!empty($this->lead_items)) : ?>
<div class="items-leading">
<?php foreach ($this->lead_items as &$item) : ?>
<div class="leading-<?php echo $leadingcount; ?><?php echo $item->state == 0 ? ' system-unpublished' : null; ?>">
<?php
$this->item = &$item;
echo $this->loadTemplate('item');
echo $view->position('position-new', 'art-nostyle');
?>
</div>
<?php $leadingcount++; ?>
<?php endforeach; ?>
</div>
<?php endif; ?>
<?php
$introcount = (count($this->intro_items));
$counter = 0;
?>
<?php if (!empty($this->intro_items)) : ?>
<?php foreach ($this->intro_items as $key => &$item) : ?>
<?php
$key= ($key-$leadingcount)+1;
$rowcount=( ((int)$key-1) % (int) $this->columns) +1;
$row = $counter / $this->columns ;
if ($rowcount==1) : ?>
<div class="items-row cols-<?php echo (int) $this->columns;?> <?php echo 'row-'.$row ; ?>">
<?php endif; ?>
<div class="item column-<?php echo $rowcount;?><?php echo $item->state == 0 ? ' system-unpublished' : null; ?>">
<?php
$this->item = &$item;
echo $this->loadTemplate('item');
?>
</div>
<?php $counter++; ?>
<?php if (($rowcount == $this->columns) or ($counter ==$introcount)): ?>
<span class="row-separator"></span>
</div>
<?php endif; ?>
<?php endforeach; ?>
<?php endif; ?>
<?php
if (!empty($this->link_items)) {
ob_start();
echo '<div class="items-more">' . $this->loadTemplate('links') . '</div>';
echo artxPost(ob_get_clean());
}
?>
<?php if (!empty($this->children[$this->category->id])&& $this->maxLevel != 0) : ?>
<?php ob_start(); ?>
<div class="cat-children">
<h3><?php echo JTEXT::_('JGLOBAL_SUBCATEGORIES'); ?></h3>
<?php echo $this->loadTemplate('children'); ?>
</div>
<?php echo artxPost(ob_get_clean()); ?>
<?php endif; ?>
<?php
if (($this->params->def('show_pagination', 1) == 1 || $this->params->get('show_pagination') == 2)
&& $this->pagination->get('pages.total') > 1)
{
ob_start();
echo '<div class="pagination">';
if ($this->params->def('show_pagination_results', 1))
echo '<p class="counter">' . $this->pagination->getPagesCounter() . '</p>';
echo $this->pagination->getPagesLinks();
echo '</div>';
echo ob_get_clean();
}
echo $view->endPageContainer();