ورود

ورود کاربر

0%

نمایش یک بلوک در صفحه های خاص

وب سایت فروشگاهی متین پارس ، پروژه ای که این روزا دست منه . پروژه ای که بر خلاف سایت های دیگه زیادی از من زمان گرفت و یه جورایی داره خسته کننده میشه . نکته ای که امروز بهش برخوردم و می خوام اون رو به اشتراک بزارم اینه که قراره یک بلاک رو در یک نوع محتوا خاص (Content Type) و در تعدای صفحه دیگه نمایش بدم .

این کار از طریق Context هم میتونه انجام بشه ولی context دردسر های خودشو داره و اینکه مراحل انجام کارش زیادیه .

به عنوان مثال من یک بلاک دارم که می خوام  فقط درصفحات محصولاتم (Content Type) و در یک صفحه دیگه مثل (node/14) نمایش بدم . برای این کار در قسمت تنظیمات بلاک این کد php را می زنیم .

 

<?php
  $match = TRUE;
  
  $types = array('product_display' => 1, 'page' => 1);
  $url = request_uri();
  if ((arg(0) == 'node') && is_numeric(arg(1))) {
    $node = node_load(arg(1));
    $match = isset($types[$node->type]);
  }
  
  if (strpos($url, "node/14")) {
    $match = TRUE;
  }

  return $match;
?>

 

حالا یک مثال پیچیده تر :

به وسیله ویوز یک صفحه ای درست کردم که تمام دسته بندی های من رو به وسیله تکسونومی نشون میده  و حالا من می خوام این بلاک رو در این صفحه و تمام زیر مجموعه های این تکسونومی نشون بدم . پس قسمت تنظیمات بلاک این کد php را می زنیم .

 

<?php
  $match = TRUE;

  $types = array('product_display' => 1, 'page' => 1);
  $url = request_uri();
  if ((arg(0) == 'node') && is_numeric(arg(1))) {
    $node = node_load(arg(1));
    $match = isset($types[$node->type]);
  }
 
  if (strpos($url, "دسته بندی-محصولات")) {
    $match = TRUE;
  }

$tids=array_keys(taxonomy_get_children(7));
foreach($tids as $tid)
 if (strpos($url, "taxonomy/term/".$tid)) {
    $match = TRUE;
    break;
  }
  return $match;
?>

 

دسته بندی: 
برچسب ها: 

دیدگاه‌ها

ارسال شده توسط ongoing در

با سلام.
من تازه با سایت شما آشنا شدم ،واقعا مطالب خوبی رو آموزش میدید.
سوالی که داشتم این هستش که من یک ویوز ساختم که بلوک و صفحه رو براش اضافه کردم.حالا چه جوری میشه استایل بلوک و صفحه باهم متفاوت باشن؟یعنی بلوک ی سری فیلتر ها داشته باشه و صفحه هم فیلتر های جداگانه؟
تشکر

سلام ، لطف دارید شما

شما برای هر کدوم (صفحه یا بلاک) می تونید هر تغییری رو که خواستید بدید ، فقط اگر خواستید یکدومش فرق داشته باشه ، هر وقت هر چیزی خواستید اضافه کنید (مثله فیلتر یا فیلد) بالای صفحه

بزار روی گزینه ی "This block (override)"

خلاص :)

افزودن دیدگاه جدید