AW Blog: как вывести последние статьи?

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 ligamaster
  • Группа: Пользователь
  • Сообщений: 13
  • Регистрация: 16.07.2010

17.11.2010 17:07

В интересующем нас блоке публикуем следующий код:

$blog_url="news";
$write = Mage::getSingleton('core/resource')->getConnection('core_write');
$readresult=$write->query("SELECT title, created_time, identifier FROM aw_blog WHERE status=1 LIMIT 5");
echo "<ul>";
while ($row = $readresult->fetch() ) {
    $dat_sp=explode(" ", $row['created_time']);
    printf ('<li><span class="date">%s</span> <a href="/%s/%s">%s</a></li>', $dat_sp[0], $blog_url, $row['identifier'], $row['title']);
}
echo "</ul>";


Можно поменять дефисы на точки:

$dat_sp[0]=str_replace('-','.',$dat_sp[0]);


Работает на magento 1.4.1.1 и aw_blog 1.0.19

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8885
  • Регистрация: 20.02.2010

17.11.2010 18:15

Для пользователей, конечно, главное - чтобы код работал, но программистов замечу, что в Magento обычно не пишут запросы SQL напрямую, а используют коллекции.
Объекто-ориентированный код потом проще сопровождать.

#3 ligamaster
  • Группа: Пользователь
  • Сообщений: 13
  • Регистрация: 16.07.2010

18.11.2010 09:50

Просмотр сообщенияДмитрий Федюк (17.11.2010 18:15) писал:

Для пользователей, конечно, главное - чтобы код работал, но программистов замечу, что в Magento обычно не пишут запросы SQL напрямую, а используют коллекции.
Объекто-ориентированный код потом проще сопровождать.

Спасибо за информацию. Просто как всегда не хватает достаточного количества времени на ознакомление. По-этому приходится извращаться как есть :)

#4 niochem
  • Группа: Пользователь
  • Сообщений: 11
  • Регистрация: 06.04.2010

30.03.2011 15:13

Пример вывода последних сообщений для AW Blog:

<?php
			$collection = Mage::getModel('blog/blog')->getCollection()
			->addPresentFilter()
			->addStoreFilter(Mage::app()->getStore()->getId())
			->setOrder('created_time', 'desc');
			$route = Mage::helper('blog')->getRoute();
			Mage::getSingleton('blog/status')->addEnabledFilterToCollection($collection);
			$collection->setPageSize(Mage::getStoreConfig(AW_Blog_Helper_Config::XML_RECENT_SIZE));
			$collection->setCurPage(1);
			foreach ($collection as $item) 
			{
				$item->setAddress($this->getUrl($route . "/" . $item->getIdentifier()));
			}
?>
	<div class="menu-recent">
		<ul>
		<?php foreach ($collection as $post): ?>
			<li>
			<div><?php $post->setCreatedTime($this->formatDate($post->getCreatedTime(), "long", false));
			echo $post->getCreatedTime();?></div><a href="<?php echo $post->getAddress(); ?>" ><?php echo $post->getTitle();?></a>
			</li>
		<?php endforeach; ?>
       	        </ul>
	</div>

Дмитрий, спасибо за совет.

#5 mmonsterr
  • Группа: Пользователь
  • Сообщений: 8
  • Регистрация: 03.08.2011

11.08.2011 10:39

Подскажите пожалуйста, как модифицировать это код, что бы выводить допустим 5 постовых последних и из определенной категории допустим id=7?
<?php
			$collection = Mage::getModel('blog/blog')->getCollection()
			->addPresentFilter()
			->addStoreFilter(Mage::app()->getStore()->getId())
			->setOrder('created_time', 'desc');
			$route = Mage::helper('blog')->getRoute();
			Mage::getSingleton('blog/status')->addEnabledFilterToCollection($collection);
			$collection->setPageSize(Mage::getStoreConfig(AW_Blog_Helper_Config::XML_RECENT_SIZE));
			$collection->setCurPage(1);
			foreach ($collection as $item) 
			{
				$item->setAddress($this->getUrl($route . "/" . $item->getIdentifier()));
			}
?>
	<div class="menu-recent">
		<ul>
		<?php foreach ($collection as $post): ?>
			<li>
			<div><?php $post->setCreatedTime($this->formatDate($post->getCreatedTime(), "long", false));
			echo $post->getCreatedTime();?></div><a href="<?php echo $post->getAddress(); ?>" ><?php echo $post->getTitle();?></a>
			</li>
		<?php endforeach; ?>
       	        </ul>
	</div>


#6 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8885
  • Регистрация: 20.02.2010

11.08.2011 13:01

Количество элементов в выборке задаётся методом setPageSize.
Способ фильтрации по категории зависит от структуры базы данных данного модуля.

#7 Pahom-ka
  • Группа: Пользователь
  • Сообщений: 2
  • Регистрация: 02.12.2011

12.12.2011 21:55

Может тоже кто что подскажет - поставили aw_blog, вывели в шаблоне, но не все работает, вот код:
	  	<?php
                        $collection = Mage::getModel('blog/blog')->getCollection()
                        ->addPresentFilter()
                        ->addStoreFilter(Mage::app()->getStore()->getId())
                        ->setOrder('created_time', 'desc');
                        $route = Mage::helper('blog')->getRoute();
                        Mage::getSingleton('blog/status')->addEnabledFilterToCollection($collection);
                        $collection->setPageSize(Mage::getStoreConfig(AW_Blog_Helper_Config::XML_RECENT_SIZE));
                        $collection->setCurPage(1);
                        foreach ($collection as $item) 
                        {
                                $item->setAddress($this->getUrl($route . "/" . $item->getIdentifier()));
                        }
?>
        <div class="menu-recent">
                <ul>
                <?php foreach ($collection as $post): ?>
                        <li>
						<a href="<?php echo $post->getAddress(); ?>" ><?php echo $post->getTitle();?></a>
						<p><?php $post->getShortContent(); /*вот это место и не работает почему-то*/ ?></p>
                        <div><?php $post->setCreatedTime($this->formatDate($post->getCreatedTime(), "long", false));
                        echo $post->getCreatedTime();?></div>
                        </li>
                <?php endforeach; ?>
                </ul>
        </div>

Возможные проблемы? Пробовал выводить и getAddress() повторно и getTitle() - ни один из них почему-то не выводит( В чем может быть причина? В конфигах все включено.

Поделиться темой: