カテゴリブログのレイアウトに主要な記事の全文を表示するにはどうすればよいですか(続きを読むことが含まれている場合でも)。
変更できるバックエンド設定はありますか、またはどのPHPファイルを上書きする必要がありますか?主要な記事の全文のみを表示したいのですが、イントロの記事では、イントロのテキストのみで続きを表示する必要があります。
前もって感謝します。
Joomla!のバージョンを指定しません。したがって、この返信は2.5.xに基づいています
特にビューtmplファイルまたはのレイアウトオーバーライドを作成する必要があります。com_content
category
blog.php
blog_item.php
テンプレートにすでにオーバーライドがインストールされているcom_content
場合は、次の場所にあります。
/templates/your-template/html/com_content/category/
そうでない場合は、Joomla!から元のファイルをコピーできます。2.5のcomponent
ディレクトリ/components/com_content/views/category/tmpl/
blog
そのディレクトリには、で始まり、で終わる一連のファイルがあり.php
ます。これらの1つまたはすべてを、上記の最初のパスにコピーすることでオーバーライドできます。注意:Joomla!を変更するために必要なファイルのみをコピーしてください。オーバーライドの場所にバージョンが見つからない場合は、デフォルトのディレクトリを調べるのに十分賢いです。
デフォルトのJoomla!2.5インストールには次のブログファイルがあります。
blog_children.php
blog_item.php
blog_links.php
blog.php
基本的blog.php
にはメインファイルであり、必要に応じてサブレイアウトが含まれていますblog_item.php
。
デフォルトのJoomla!から作業している場合!2.5ファイル、目標を達成するには、おそらくオーバーライドblog.php
しblog_item.php
て、主要なアイテムにいるかどうかを確認する方法を見つける必要があります。主要なアイテムに含まれていることがわかったら、アイテムの全文をエコーアウトする必要があります。
blog_item.php
通常は、次のような行でイントロテキストを出力します。
<?php echo $this->item->introtext; ?>
全文をエコーして、上の行をでラップした後if
、先頭の項目を実行しているかどうかを確認すると、出力行は次のようになります。
<?php echo $this->item->introtext.$this->item->fulltext; ?>
注:これが機能するかどうかは確認していません。これは単なる推測であり、テーブルの行全体を取得することに依存しています。$item
#__content
したがって、記事の全文は標準インストールでは記事アイテムに追加されません。つまり、単にエコー $this->item->fulltext
することができます。
全文を取得するには2つの方法があります。
最も簡単で最初の方法は、 153行目またはその近くで始まる/components/com_content/models/articles.php
最初の$query->select()
ファイルから開始してコアファイルを変更することです。a.introtextの後、単一のアポストロフィの前に「a.fulltext」を追加すると、行は次のようになります。function getListQuery()
function getListQuery()
{
// Create a new query object.
$db = $this->getDbo();
$query = $db->getQuery(true);
// Select the required fields from the table.
$query->select(
$this->getState(
'list.select',
'a.id, a.title, a.alias, a.title_alias, a.introtext, a.fulltext, ' .
'a.checked_out, a.checked_out_time, ' .
2番目の方法、そしてJoomla!更新証明の方法(したがって、おそらくより良い方法)は、記事全体をオーバーライドにロードし(醜いですが、ハックではありません)、最初の記事のに連結するfulltext
ことです。introtext
これを行うには、最初の先頭アイテムにgetTable
$ this-> item-> idを使用して記事をロードするだけblog.php
なので、54行目でthe<?php
と$this->item = &$item;
putの間に次のように入力します。
if($leadingcount == 0) {
$contentTable = JTable::getInstance('Content');
if($contentTable->load($item->id)) {
$item->introtext .= $contentTable->fulltext;
}
}
注意:ifは最初の主要な記事に限定し、ifを削除すると、すべての主要な記事の全文が添付されます。
これは、Joomlaの開発インストールで機能します!2.5.6なので、あなたもそれを行うことができるはずです。
上記の2つの答えを考慮すると、blog.phpとblog_item.phpには3つの変更が必要です。これはJoomla3.1で機能します。これらのファイルをテンプレートオーバーライドにコピーするのが最善です。
blog.phpとblog_item.phpをコピーします
components / com_content / views / category /tmpl/から
[私のテンプレート]/html / com_content / category /
主要なアイテムのループ内のblog.phpに、1行追加します。
<?php foreach ($this->lead_items as &$item) : ?>
<div class="leading-<?php echo ...?>">
<?php
$this->item = &$item;
$this->item->leadingItem = true; //ADD THIS LINE !!!
echo $this->loadTemplate('item');
?>
</div>
<div class="clearfix"></div>
<?php
$leadingcount++;
?>
<?php endforeach; ?>
blog_item.phpで、「echo $ this->item->introtext;」を置き換えます。と
if ($this->item->leadingItem){
//this is a leading article - show full text and remove "Read more..." button
$itemID = $this->item->id;
$db =& JFactory::getDBO();
$query = "SELECT `fulltext` FROM `#__content` WHERE `id` =" . $itemID;
$db->setQuery($query);
$fulltext = $db->loadResult();
echo $this->item->introtext . $fulltext;
}else{
echo $this->item->introtext;
}
最後に、blog_item.phpで、各記事の下部に[続きを読む... ]ボタンを表示しないでください
行を編集
if($ params-> get('show_readmore')&& $ this-> item-> readmore)
の中へ
if($ params-> get('show_readmore')&& $ this-> item-> readmore &&!$ this-> item-> LeadingItem)
Joomla 2.5.x、テンプレートblog_item.php:
$itemID = $this->item->id;
$db =& JFactory::getDBO();
$query = "
SELECT `fulltext`
FROM `#__content`
WHERE `id` = $itemID;
";
$db->setQuery($query);
$fulltext = $db->loadResult();
$fulltext文字列変数を使用できます。